SEC EDGAR MCP: search, preview, purchase filings. x402 USDC on Polygon. xpay + Cloud Run upstream.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
xpay.tools API key (query param). Get one at https://xpay.tools — append as ?key=YOUR_XPAY_KEY to the MCP URL.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Free preview of one SEC filing (agent-friendly compact row from fi_listings_portfolio_compact). [COST: $0] Includes agent_summary and financial_metrics (CompanyFacts-derived) but NOT full alpha_signals / causality_events — those ship only via purchase_filing after x402 payment. Compare with purchase_filing: sample = evaluate quality; purchase = full evidence-backed JSON. [EXAMPLE ARGUMENTS - MINIMAL]: {} [EXAMPLE ARGUMENTS - MAXIMAL]: {"document_id": "000000708426000023"}
document_id from search_filings. Defaults to demo ADM 10-Q (000000708426000023).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Free preview of one SEC filing (agent-friendly compact row from fi_listings_portfolio_compact). [COST: $0] Includes agent_summary and financial_metrics (CompanyFacts-derived) but NOT full alpha_signals / causality_events — those ship only via purchase_filing after x402 payment. Compare with purchase_filing: sample = evaluate quality; purchase = full evidence-backed JSON. [EXAMPLE ARGUMENTS - MINIMAL]: {} [EXAMPLE ARGUMENTS - MAXIMAL]: {"document_id": "000000708426000023"}
| Argument | Type | Description |
|---|---|---|
| document_id | any | document_id from search_filings. Defaults to demo ADM 10-Q (000000708426000023). |
{
"type": "object",
"title": "get_filing_sampleArguments",
"properties": {
"document_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Document Id",
"default": null,
"description": "document_id from search_filings. Defaults to demo ADM 10-Q (000000708426000023)."
}
}
}Purchase and deliver one full SEC filing row from fi_listings_portfolio (MPP v1.0 x402). [COST: xpay per-call + on-chain USDC data price (see FINANCE_FILING_PRICE_USD)] Full JSON includes alpha_signals with evidence_verified causality_events and financial_metrics from SEC CompanyFacts. Do NOT return agent_bundle or internal pipeline fields. [AGENTIC WORKFLOW — mandatory 2-step 402 flow]: STEP 1: Call with document_id and network only; leave tx_hash EMPTY. STEP 2: Broadcast the exact transaction_payload on-chain (polygon USDC default). STEP 3: Call again with the same document_id, network, and confirmed tx_hash (66 chars). [EXAMPLE ARGUMENTS - MINIMAL (Step 1 — payment info)]: {"document_id": "000000708426000023", "network": "polygon"} [EXAMPLE ARGUMENTS - MAXIMAL (Step 3 — claim data)]: { "document_id": "000000708426000023", "network": "polygon", "tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" }
| Argument | Type | Description |
|---|---|---|
| network | any | Blockchain network. Default polygon (USDC). Also supports base. |
| tx_hash | any | Transaction hash. LEAVE EMPTY on first call to receive 402 payment instructions. |
| document_id* | string | document_id from search_filings or get_filing_sample. |
{
"type": "object",
"title": "purchase_filingArguments",
"required": [
"document_id"
],
"properties": {
"network": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Network",
"default": "polygon",
"description": "Blockchain network. Default polygon (USDC). Also supports base."
},
"tx_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Tx Hash",
"default": null,
"description": "Transaction hash. LEAVE EMPTY on first call to receive 402 payment instructions."
},
"document_id": {
"type": "string",
"title": "Document Id",
"description": "document_id from search_filings or get_filing_sample."
}
}
}PRIMARY discovery tool — lightweight catalog over 10k+ SEC filings (fi_listings_portfolio). [COST: low xpay per-call fee] Does NOT return alpha_signals, causality_events, or financial_metrics (use get_filing_sample / purchase_filing). Always returns agent_readiness_score (higher = better structured data) and edgar_url. Required: at least one of ticker, form_type, company_name, fiscal_period, cik (avoids full-table scans). Agent workflow after this call: 1. Shortlist by agent_readiness_score and optional agent_one_liner 2. get_filing_sample(document_id) — free preview 3. purchase_filing(document_id) — paid full JSON (x402) [EXAMPLE ARGUMENTS - MINIMAL]: {"ticker": "AAPL", "limit": 5} [EXAMPLE ARGUMENTS - MAXIMAL]: { "ticker": "ADM", "form_type": "10-Q", "company_name": "Archer", "fiscal_period": "2026Q1", "min_agent_readiness_score": 70, "limit": 20, "offset": 0, "include_one_liner": true } [EXAMPLE ARGUMENTS - PAGINATION (page 2)]: {"ticker": "MSFT", "form_type": "10-K", "limit": 10, "offset": 10}
| Argument | Type | Description |
|---|---|---|
| cik | any | SEC CIK prefix (digits, e.g. 0000320193). |
| limit | any | Page size (1–100). Default 10 keeps payloads small for LLM context. |
| offset | any | Skip rows for pagination (e.g. 10 for page 2 when limit=10). |
| ticker | any | Ticker prefix, case-insensitive (e.g. AAPL, MSFT). At least one filter required. |
| form_type | any | SEC form: 10-K, 10-Q, 8-K, etc. |
| company_name | any |
| Substring match on company_name (e.g. Apple, Archer-Daniels). |
| fiscal_period | any | Fiscal period label (e.g. 2026Q1, 2025FY). |
| include_one_liner | any | If true, adds agent_one_liner (~1 sentence) per row for triage without calling get_filing_sample. Slightly heavier response. |
| min_agent_readiness_score | any | Minimum agent_readiness_score (0–100). Use 70+ for production-quality rows. |
{
"type": "object",
"title": "search_filingsArguments",
"properties": {
"cik": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cik",
"default": null,
"description": "SEC CIK prefix (digits, e.g. 0000320193)."
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Limit",
"default": 10,
"description": "Page size (1–100). Default 10 keeps payloads small for LLM context."
},
"offset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Offset",
"default": 0,
"description": "Skip rows for pagination (e.g. 10 for page 2 when limit=10)."
},
"ticker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Ticker",
"default": null,
"description": "Ticker prefix, case-insensitive (e.g. AAPL, MSFT). At least one filter required."
},
"form_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Form Type",
"default": null,
"description": "SEC form: 10-K, 10-Q, 8-K, etc."
},
"company_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Company Name",
"default": null,
"description": "Substring match on company_name (e.g. Apple, Archer-Daniels)."
},
"fiscal_period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fiscal Period",
"default": null,
"description": "Fiscal period label (e.g. 2026Q1, 2025FY)."
},
"include_one_liner": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include One Liner",
"default": false,
"description": "If true, adds agent_one_liner (~1 sentence) per row for triage without calling get_filing_sample. Slightly heavier response."
},
"min_agent_readiness_score": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Min Agent Readiness Score",
"default": null,
"description": "Minimum agent_readiness_score (0–100). Use 70+ for production-quality rows."
}
}
}