Skip to content

FinancialMD for AI agents

FinancialMD is an AI-native financial terminal for agents. It serves financial statements built from SEC filings. Every number carries a proof back to the filing, and every read can be made as of a past date, so an agent can cite what it says and backtest without look-ahead.

Step 1. Connect the MCP server

The MCP server is at https://mcp.financial.md/mcp (Streamable HTTP, stateless). It has 36 read-only tools. Signing in is optional: without a token it answers within the keyless daily limits.

Claude Code:

claude mcp add --transport http financial-md https://mcp.financial.md/mcp

Clients that read a JSON config (Cursor, VS Code, Windsurf and others):

{
  "mcpServers": {
    "financial-md": { "type": "http", "url": "https://mcp.financial.md/mcp" }
  }
}

In Claude or ChatGPT, add the same URL as a custom connector. The server card is at mcp.financial.md/.well-known/mcp.json and OAuth metadata at mcp.financial.md/.well-known/oauth-protected-resource.

Start with company_lookup, then snapshot_as_of (all three statements and the ratios as known on a date, in one call) or financials_standardized. Use verify_value to check a number you found elsewhere.

Step 2. Make a keyless API call

The HTTP API needs no account and no key. This call returns Apple's last five annual cash flow statements, including free cash flow:

curl "https://api.financial.md/v1/company/financials/cash_flow/standardized?company=ticker:AAPL&period_type=annual&limit=5"

Each number is a value object with proof.accession, proof.form, proof.filed and proof.source_url (the filing on sec.gov). Add as_of=2024-06-30 to read what was known on that date. Check a number against the filing:

curl -X POST "https://api.financial.md/v1/verify" -H "content-type: application/json" \
  -d '{"company":"ticker:AAPL","concept":"income_statement_total_revenues","period":"FY2024","value":391035000000}'

Without a key, each IP address gets 25 metered calls a day (ratios, screen, verify), 1,000 filing-layer reads and 1,000 metadata reads. Every response carries RateLimit-* headers; a 429 carries Retry-After, and every error body lists remedies.

Step 3. Pay per call (coming soon)

agent.financial.md serves the same routes for agents that pay per call with x402 (USDC on Base), with no account. It is not switched on yet: priced routes there answer 402 and the body points back to the keyless host.

The planned price of every route is in pricing.json and in the x-price field of the OpenAPI document. Nothing is charged today. Errors will never be charged.

Files for agents

FileWhat it is
openapi.jsonOpenAPI 3.1. Every operation has a description and an example request with a real ticker
llms.txtShort guide: hosts, company ids, the value object, point-in-time reads, limits
llms-full.txtEverything in one text file: every route, ratio formula and recipe
skill.mdAn Agent Skill with one-call recipes
skills.zipAgent Skills (SKILL.md) that call the MCP tools, as one zip
pricing.jsonPlanned per-call prices, free limits and payment status
mcp.jsonMCP server card: tools, auth and documents
server.jsonThe MCP Registry entry
agent.jsonOne index of every endpoint and document above

What an agent can rely on

  • Every number has a source: the filing's accession number, form, filing date, XBRL tag and a link to the document on sec.gov. GET /proof/{id} shows the raw facts behind it.
  • Point in time: known.from and known.to say when each value was the latest filed figure. as_of, original=true and history=true read the past without look-ahead and show restatements.
  • Short answers: a statement call returns only the periods asked for; MCP tool results start with a one-line summary before the structured data.
  • Ticker, CIK or name: company=ticker:AAPL, company=cik:320193, or GET /v1/companies?q=Apple.
  • Coverage: SEC filers listed on a US exchange today; standardized statements for US GAAP filers. Information only, not investment advice.