Tools · finance

Company financials from SEC XBRL

A US company's reported financials from its SEC XBRL filings, by ticker or CIK: revenue, net income, diluted EPS, assets, liabilities, equity, cash, operating cash flow, shares, for its last 1-12 fiscal years or quarters, with the us-gaap tag behind each value. Nothing derived: an untagged value is null. US-GAAP filers only. Unknown tickers and outages are not charged. Pay-per-call via x402.

$0.0045 per call, paid in USDC on Base or Solana with x402 — no account, no API key. POST https://fiatdock.com/v1/sec/financials (or GET with the same fields as query parameters) · MCP tool company_financials. An answer the tool cannot produce is refused with 4xx/5xx and is not charged.

Inputs

FieldTypeDescriptionExample
tickerstringStock ticker (AAPL, MSFT, BRK-B) or the company's SEC CIK number"AAPL"
periodone of annual, quarterlyannual (fiscal years, from 10-K filings; default) or quarterly (three-month periods)"annual"
limitintegerHow many periods, newest first, 1-12 (default 4)4

Example

Request body

{"ticker":"AAPL","period":"annual","limit":1}

Answer (the published example)

{"company":{"name":"Apple Inc.","cik":"0000320193","ticker":"AAPL"},"period":"annual","currency":"USD","periods":[{"fiscalYear":2025,"fiscalPeriod":"FY","periodEnd":"2025-09-27","form":"10-K","filed":"2025-10-31","accessionNumber":"0000320193-25-000079","filingUrl":"https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/","latestFiled":"2026-07-31","revenue":416161000000,"netIncome":112010000000,"epsDiluted":7.46,"totalAssets":359241000000,"totalLiabilities":285508000000,"stockholdersEquity":73733000000,"cashAndEquivalents":35934000000,"operatingCashFlow":111482000000,"sharesOutstanding":14773260000,"concepts":{"revenue":"RevenueFromContractWithCustomerExcludingAssessedTax","netIncome":"NetIncomeLoss","epsDiluted":"EarningsPerShareDiluted","totalAssets":"Assets","totalLiabilities":"Liabilities","stockholdersEquity":"StockholdersEquity","cashAndEquivalents":"CashAndCashEquivalentsAtCarryingValue","operatingCashFlow":"NetCashProvidedByUsedInOperatingActivities","sharesOutstanding":"CommonStockSharesOutstanding"}}],"concepts":{"revenue":{"order":["us-gaap:Revenues","us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax","us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax","us-gaap:SalesRevenueNet","us-gaap:SalesRevenueGoodsNet","us-gaap:SalesRevenueServicesNet","us-gaap:RevenuesNetOfInterestExpense"],"used":["us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax"]}},"source":"SEC EDGAR XBRL company facts (data.sec.gov)","asOf":"2026-10-08T16:26:17.849Z","note":"As filed in XBRL (us-gaap, USD, consolidated — no segment facts). annual = facts from a 10-K-family filing tagged FY with a 350-380-day duration; quarterly = 80-100-day durations from any 10-K/10-Q filing; balance-sheet items are the values AT the period end. When several filings report the same period, the most recently filed value of the first tag in the field's fallback order is used (restatements win); `concepts` says which tag each value came from. Missing is null — nothing is computed: no Q4 derived from the year, no liabilities derived from assets minus equity, and since 10-Q cash flows are year-to-date, quarterly operating cash flow is null wherever no three-month figure was tagged. A quarterly row exists only for a period with a tagged three-month figure, so a fourth quarter appears only when the 10-K tags three months (many do not — the year is under period=annual). fiscalYear is the year the company's own report for that period states; null when the data holds that period only as a later filing's comparative. Public-domain data from SEC EDGAR; not investment advice."}

Call it

curl

# 1) ask: an unpaid call answers 402 with the exact price (free)
curl -i -X POST https://fiatdock.com/v1/sec/financials -H 'content-type: application/json' -d '{"ticker":"AAPL","period":"annual","limit":1}'
# 2) pay: any x402 client signs that 402 and resends — see Node or Python below

Node

// npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:*", client: new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_PRIVATE_KEY)) }],
});
const r = await pay("https://fiatdock.com/v1/sec/financials", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"ticker":"AAPL","period":"annual","limit":1}),
});
console.log(r.status, await r.json());

Python

# pip install "x402[httpx,evm]"
import asyncio, json, os
from eth_account import Account
from x402 import x402Client
from x402.http.clients import x402HttpxClient
from x402.mechanisms.evm.exact import register_exact_evm_client

async def main():
    client = register_exact_evm_client(x402Client(), Account.from_key(os.environ["AGENT_PRIVATE_KEY"]))
    async with x402HttpxClient(client) as http:
        r = await http.post("https://fiatdock.com/v1/sec/financials", json=json.loads("{\"ticker\":\"AAPL\",\"period\":\"annual\",\"limit\":1}"))
        print(r.status_code, r.json())

asyncio.run(main())

MCP (Claude, Cursor, any MCP client)

{"mcpServers":{"fiatdock":{"command":"npx","args":["-y","fiatdock-mcp"],"env":{"AGENT_PRIVATE_KEY":"0x<your agent wallet key>"}}}}
// then call the tool "company_financials" — the package pays each call from that wallet

The wallet needs USDC on Base. Prefer no install? The remote server https://fiatdock.com/mcp answers the 402 as tool output for an agent that signs its own payments.

Related tools

Machine-readable: OpenAPI · tools.json · llms.txt · /.well-known/x402