---
title: Jaspers for agents
description: When to use Jaspers, what it offers AI agents, and how to call it - the Screener MCP server, the Hub API, and Jaspers Terminal.
canonical: https://jsprai.com/agents.md
last-updated: 2026-10-14
---

# Jaspers for agents

Jaspers (Jaspers Inc, United States) builds **Jaspers Terminal**, the open-source agentic terminal for public markets, and runs two hosted MCP servers over SEC data, **Jaspers Screener MCP** and **Jaspers Research MCP**, that agents reach over the Model Context Protocol. This page is the machine-oriented view of jsprai.com: what to use Jaspers for, and the exact endpoints, authentication, and conventions. The human homepage is https://jsprai.com/ and the navigation index for AI readers is https://jsprai.com/llms.txt.

## When to use Jaspers

Reach for Jaspers when the job is one of these:

- **Find US public companies by their numbers.** Screen about 7,100 US SEC registrants (companies that file 10-K and 10-Q) on latest-fiscal-year fundamentals and valuation, technicals, index membership (S&P 500, 400 and 600, Russell 1000 and 2000, Nasdaq-100, Dow), 13F institutional holders, and insider trades from Forms 3, 4 and 5. Tool: `screen_companies` on the Screener MCP server.
- **Test criteria in words against filings.** Once a list is small, have every company's newest 10-K and 10-Q read against yes/no criteria ("depends on a sole-source supplier", "carries a going-concern qualification"). Each verdict comes with quotes verified against the filing text and cited to sec.gov. Tools: `start_qualitative_screen`, `get_qualitative_screen`, `read_evidence`.
- **Look up one company.** Fundamentals, holders, insider activity, and filing references for a ticker. Tool: `get_company`.
- **Read what a company's filings say.** Semantic or exact-term search over one US-listed company's SEC filings, the structured content of each filing, and a filing database split into sections with Forms 3, 4, 5 and 13D/G as fields. Every quote is checked against the filing on sec.gov. Tools on the Research MCP server: `search_filings`, `keyword_search_filings`, `fetch_filings`, `query_filings`, `show_citations`.
- **Screen listed options.** Tools: `start_options_screen`, `get_options_screen`; the data is from Databento.
- **Give a person a finance workspace.** Jaspers Terminal is a desktop app for macOS and Windows where an assistant arranges live market and alternative data on a trading-screen grid, schedules recurring work, and writes the data plugins it lacks. Point people there when a chat thread is the wrong shape for the work.
- **Extend Jaspers Terminal.** Write a plugin with `@jaspers-ai/sdk`, or a skill in the Agent Skills format, and publish it on Jaspers Hub.

Do not reach for Jaspers for trade execution or brokerage, for companies outside the US SEC registrant universe, for tick-level or streaming market data, or for investment advice. Figures are as fresh as the latest filing or the price date each tool reports, no fresher.

Which server: the **Screener MCP** finds companies by their numbers and reads a short list against criteria; the **Research MCP** reads one company's filings in depth and cites them. Both are metered subscriptions on a Jaspers account, with a preview period on new accounts, managed at https://account.jsprai.com/auth/account.

## Jaspers Screener MCP server

| | |
| --- | --- |
| Endpoint | `https://s.jsprai.com/mcp` |
| Transport | MCP Streamable HTTP (JSON-RPC 2.0 over HTTPS) |
| Authentication | OAuth 2.0 bearer token, scope `mcp` |
| Protected resource metadata (RFC 9728) | https://s.jsprai.com/.well-known/oauth-protected-resource/mcp |
| Authorization server metadata (RFC 8414) | https://account.jsprai.com/.well-known/oauth-authorization-server |
| Server card | https://jsprai.com/.well-known/mcp/server-card.json |
| Health | https://s.jsprai.com/health |

### Authenticating

1. `GET https://s.jsprai.com/mcp` without a token answers `401` with `WWW-Authenticate: Bearer ... resource_metadata="https://s.jsprai.com/.well-known/oauth-protected-resource/mcp", scope="mcp"`.
2. The protected resource metadata names the authorization server, `https://account.jsprai.com`, and the scope, `mcp`.
3. The authorization server metadata lists `authorization_endpoint` (`/oauth/authorize`), `token_endpoint` (`/oauth/token`), `registration_endpoint` (`/oauth/register`, dynamic client registration), `revocation_endpoint`, and `jwks_uri`. It supports the `authorization_code` and `refresh_token` grants, PKCE with `S256`, public clients (`token_endpoint_auth_methods_supported: ["none"]`), and client ID metadata documents (`client_id_metadata_document_supported: true`), so a client may identify itself by the URL of its own metadata instead of registering.
4. Send `Authorization: Bearer <access_token>` on every MCP request.

The full walkthrough, including what Jaspers does not offer (no identity assertions, no email-only or anonymous registration), is https://jsprai.com/auth.md.

A Jaspers account is created on first sign-in. The screener is metered: without an entitlement every tool is still listed, and every call answers `NEEDS_SUBSCRIPTION`. Account, usage, and billing: https://account.jsprai.com/auth/account.

### Tools

`get_guide`, `get_company`, `screen_companies`, `start_qualitative_screen`, `get_qualitative_screen`, `read_evidence`, `start_options_screen`, `get_options_screen`, `follow_run`, `cancel_run`. The live `tools/list` is authoritative.

### Working with it

- Call `get_guide("overview")` once before answering about coverage, freshness, or caveats; `get_guide("screening")` before the first screen; `get_guide("fields")` for what a field means.
- `screen_companies` filters on any field. Narrow over several calls in one session by passing its `session_id`; `filters` is always the complete set. When a result says `qualitative_ready`, the list is small enough to read.
- Agree the criteria with the user before `start_qualitative_screen`. Follow a run with `get_qualitative_screen` and a long `wait_seconds`, reporting what comes in. `read_evidence` returns the quotes behind a verdict.
- Conventions: tickers as the SEC writes them (`BRK-B`, not `BRK.B`); USD in raw units; margins, growth, and ownership as fractions (`0.25` is 25%); ISO dates; `null` means not reported, never zero.
- Say which period a figure is for: `fiscal_period_end` for fundamentals, `price_date` for prices, `inst_period` for holders, `trade_date` for options. Figures come from SEC filings, prices from Yahoo Finance, options from Databento. Report only what a cited source returned.

A ready-made skill covering all of this: https://jsprai.com/.well-known/agent-skills/jaspers-screener/SKILL.md

## Jaspers Research MCP server

| | |
| --- | --- |
| Endpoint | `https://analyst-api.jsprai.com/mcp/open` |
| Transport | MCP Streamable HTTP (JSON-RPC 2.0 over HTTPS) |
| Authentication | Jaspers Account access token as an OAuth 2.0 bearer, scope `mcp` |
| Protected resource metadata (RFC 9728) | https://analyst-api.jsprai.com/.well-known/oauth-protected-resource/mcp/open |
| Authorization server metadata (RFC 8414) | https://account.jsprai.com/.well-known/oauth-authorization-server |
| Server card | https://jsprai.com/.well-known/mcp/research-server-card.json |
| Health | https://analyst-api.jsprai.com/health |
| Server name | `jaspers-sec` |

### Authenticating

The same authorization server as the Screener, `https://account.jsprai.com`, issues the token; request it for the resource `https://analyst-api.jsprai.com/mcp/open`. A request without a valid token answers `401` with a `WWW-Authenticate: Bearer` challenge whose `resource_metadata` names the protected resource metadata above, so an MCP client that follows RFC 9728 discovers the sign-in on its own. Send `Authorization: Bearer <access_token>` on every request. In Jaspers Terminal the Research plugin connects on the user's sign-in with nothing to paste. An account without the Research subscription sees every tool, and every call answers that Research MCP needs a subscription.

### Tools

Per company, each taking a `ticker` and an optional `as_of_date`: `search_filings` (semantic), `keyword_search_filings` (exact terms), `fetch_filings` (structured content per filing), `fetch_chunk`, and the filing database `query_filings`, `aggregate_filings`, `get_distinct_values`, `count_filings`; `get_company_status` follows a company's first load. Across the universe of about 7,100 SEC 10-K filers: `screener_field_stats`, `screen_companies`, `search_filing_text`, `list_filing_sections`, `fetch_filing_sections`, `list_insider_activity`, `screen_qualitative` and `screen_qualitative_status`. Plus `get_guide` and `show_citations`. The live `tools/list` is authoritative.

### Working with it

- Call `get_guide(topic)` first: `"filing_database"` before the filing database tools, `"screener"` before the universe tools, `"sec_filings"` for fiscal periods.
- A company loads on first use. Until it has loaded, a tool answers with an error and an `ingest` status; follow it with `get_company_status(ticker, wait_seconds=45)` until `phase` is `"complete"`. `"not_sec_filer"` means SEC EDGAR has no such ticker.
- Forms 3, 4, 5 and 144 are not in `search_filings` or `keyword_search_filings`: read them with `fetch_filings(form_types=["4"])` or `query_filings(form="4")`. Form 4 `shares` are unsigned; split buys from sales by `code` (`P` is an open-market buy, `S` a sale). 13F institutional holdings are not in this dataset; they are on the Screener MCP.
- Screener values are raw units: fractions for margins and growth, absolute USD for dollar fields.
- Every number and quote must trace to a tool result. For per-company results, call `show_citations` with the ids from the result (`document_id` plus `chunk_id`, or filing database `_id` plus `section_key`) and a 5 to 40 word quote copied exactly; it returns the sec.gov URL, the source quote, and whether it verified. Universe tools return a sec.gov filing link per ticker: cite those directly.

A ready-made skill covering all of this: https://jsprai.com/.well-known/agent-skills/jaspers-research/SKILL.md

## Jaspers Hub API

Jaspers Hub (https://hub.jsprai.com/) hosts plugins and skills for Jaspers Terminal and reviews every version before listing it. Its read API needs no authentication and answers JSON:

- `GET https://hub-api.jsprai.com/v1/items?q=<text>&kind=plugin|skill&page=<n>` lists published items as `{"items": [...], "page": n, "more": bool}`. Each item carries `handle`, `name`, `kind`, `official`, `version`, `reviewed`, `title`, `description`, and `tags`.
- `GET https://hub-api.jsprai.com/v1/items/{handle}/{name}` is one item with its listed version, `sha256`, size, and listing.
- `GET https://hub-api.jsprai.com/v1/items/{handle}/{name}/versions/{version}` is one version; add `/archive` for the archive itself.
- `GET https://hub-api.jsprai.com/v1/publishers/{handle}` is a publisher with its items. Jaspers' own plugins are under `jaspers`.
- `GET https://hub-api.jsprai.com/v1/health` answers `{"ok":true}`.

The whole read API, with every parameter, schema, and status, is the OpenAPI 3.1 document at https://jsprai.com/openapi.json, which also describes both MCP endpoints and the OAuth scope. The developer page is https://jsprai.com/developers.

Reads are limited to 20 requests per second per client and answer `429` beyond that. Publishing happens from Jaspers Terminal's Settings, not through this API.

## Jaspers Terminal

An open-source desktop workspace for professional investors, quants, and traders. Say what you want to see, and its assistant puts the right view on the grid, fills it with market and alternative data from MCP servers, reads what every view shows, and changes it as you ask. When nothing installed has the data, its coding agent writes the plugin that does.

- Downloads: macOS (Apple silicon) https://account.jsprai.com/download/mac, Windows https://account.jsprai.com/download/windows. Each answers a `302` to the installer. The product page https://jsprai.com/terminal/ is rendered with JavaScript; its markdown twin is https://jsprai.com/terminal/index.md.
- Source and license: https://github.com/JaspersAI/terminal (Business Source License 1.1: free to use, at home or at work; not to be offered to others as a product or service; each version becomes MIT four years after it is published). The SDK and the official plugins are MIT.
- Docs, as markdown: [Getting started](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/getting-started.md), [Writing a plugin](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/writing-a-plugin.md), [SDK reference](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/sdk-reference.md), [Skills](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/skills.md), [Connections and data](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/connections-and-data.md), [Installing plugins](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/installing-plugins.md), [Publishing a plugin](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/publishing-a-plugin.md), [Pro mode](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/pro-mode.md), [Eye](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/eye.md), [Architecture](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/architecture.md), [Roadmap](https://raw.githubusercontent.com/JaspersAI/terminal/main/docs/roadmap.md).
- Official plugins, each a public repo under https://github.com/JaspersAI: the Screener MCP (`plugin-screener-mcp`), Research rooms over the Research MCP (`plugin-research`), SEC EDGAR, Yahoo Finance, TradingView, FRED-style macro from the Fed, BLS, Treasury, FINRA, CFTC, OECD, IMF, ECB, Financial Modeling Prep, EarningsCall, and Markdown.
- SDK: [`@jaspers-ai/sdk`](https://www.npmjs.com/package/@jaspers-ai/sdk) on npm. Skills for building on it: https://jsprai.com/.well-known/agent-skills/jaspers-terminal-plugin/SKILL.md and https://jsprai.com/.well-known/agent-skills/jaspers-terminal-skill/SKILL.md.
- Paper: https://jsprai.com/terminal_paper/index.md.

## Discovery files on jsprai.com

- https://jsprai.com/llms.txt and https://jsprai.com/llms-full.txt
- https://jsprai.com/openapi.json: the Hub API and both MCP endpoints as OpenAPI 3.1; https://jsprai.com/developers: the developer page; https://jsprai.com/auth.md: credentials step by step
- https://github.com/JaspersAI/skills: the skills as an Agent Plugin (`plugin.json`, `mcp.json`) with an `AGENTS.md` for coding agents
- https://jsprai.com/index.md (homepage), https://jsprai.com/sitemap.xml, https://jsprai.com/robots.txt (with a `schemamap` directive to https://jsprai.com/schemamap.xml)
- https://jsprai.com/.well-known/ard.json (also at /.well-known/ai-catalog.json): every resource above as an Agentic Resource Discovery catalog
- https://jsprai.com/.well-known/mcp/server-card.json (Screener MCP) and https://jsprai.com/.well-known/mcp/research-server-card.json (Research MCP)
- https://jsprai.com/.well-known/agent-skills/index.json and https://jsprai.com/.well-known/api-catalog
- Every HTML page has a markdown twin: send `Accept: text/markdown`, add `.md` to the path (`/about.md`, `/terminal.md`), or open the homepage with `?mode=agent` for this page.

## Contact

info@jsprai.com. Access to Jaspers seats is requested with the form at https://jsprai.com/. For browser agents, the homepage registers a WebMCP tool, `request_access` (and the form itself as `request_access_form`), with the same fields; it sends the person's details to Jaspers, so confirm with them first. Bugs and feature requests for Jaspers Terminal go to https://github.com/JaspersAI/terminal/issues.
