{"openapi":"3.1.0","info":{"title":"Ledger API","version":"0.1.0","description":"SEC filings and fundamentals, insider activity, full-text search, Treasury yields, national debt, ECB exchange rates — read-only from primary sources.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://ledger.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/ledger/docs"},"termsOfService":"https://connectorbay.com/ledger/terms"},"servers":[{"url":"https://ledger.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/ledger/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/company_lookup":{"post":{"operationId":"company_lookup","summary":"Find a public company by ticker, name or CIK: name, tickers and exchanges, SIC industry, fiscal year end, state of","description":"Find a public company by ticker, name or CIK: name, tickers and exchanges, SIC industry, fiscal year end, state of\n    incorporation, headquarters, website, former names and its EDGAR page — plus the other matches if the name is ambiguous.\n    Use for \"what's Nvidia's CIK\", \"which exchange is X on\", \"what industry code is Y\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Ticker, company name or CIK: 'AAPL', 'Nvidia', '320193'.","examples":["AAPL","Nvidia"],"title":"Query","type":"string"}},"required":["query"],"title":"company_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/filings":{"post":{"operationId":"filings","summary":"A company's recent SEC filings with links: form, filed and period dates, and for 8-Ks the items decoded (earnings,","description":"A company's recent SEC filings with links: form, filed and period dates, and for 8-Ks the items decoded (earnings,\n    executive change, cyber incident, restatement…). Use for \"has X filed anything this week\", \"latest 10-K\", \"any 8-Ks\n    about executive departures\", \"when is the proxy statement\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Ticker, company name or CIK: 'AAPL', 'Nvidia', '320193'.","examples":["AAPL","Nvidia"],"title":"Company","type":"string"},"forms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Filter to form types, e.g. ['10-K','10-Q'], ['8-K'], ['4'], ['SC 13D','SC 13G'], ['DEF 14A'].","examples":[["10-K","10-Q"],["8-K"]],"title":"Forms"},"since":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only filings on/after this date (YYYY-MM-DD).","title":"Since"},"limit":{"default":15,"description":"Max filings (1–50).","maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"required":["company"],"title":"filingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/financials":{"post":{"operationId":"financials","summary":"A company's financials as filed (XBRL): each metric by quarter or year with year-over-year change, plus derived margins","description":"A company's financials as filed (XBRL): each metric by quarter or year with year-over-year change, plus derived margins\n    (gross, operating, net), free cash flow and net cash/debt for the latest period, and the XBRL tag used for each line so\n    the number is traceable. Use for \"what did X report last quarter\", \"revenue growth over two years\", \"how much cash does\n    Y have\", \"is Z profitable\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Ticker, company name or CIK: 'AAPL', 'Nvidia', '320193'.","examples":["AAPL","Nvidia"],"title":"Company","type":"string"},"kind":{"default":"quarterly","description":"'quarterly' or 'annual'.","examples":["quarterly","annual"],"title":"Kind","type":"string"},"periods":{"default":6,"description":"How many periods (1–12).","maximum":12,"minimum":1,"title":"Periods","type":"integer"},"metrics":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Subset of: revenue, gross_profit, operating_income, net_income, eps_diluted, operating_cash_flow, capex, assets, liabilities, equity, cash, long_term_debt, shares_outstanding, rnd, dividends, buybacks. All when omitted.","title":"Metrics"}},"required":["company"],"title":"financialsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compare_companies":{"post":{"operationId":"compare_companies","summary":"Side by side on the latest fiscal year as filed: revenue and growth, net income and margin, operating cash flow, free","description":"Side by side on the latest fiscal year as filed: revenue and growth, net income and margin, operating cash flow, free\n    cash flow, cash, long-term debt, R&D, buybacks — with who leads on each. Use for \"compare Apple, Microsoft and Google\",\n    \"who has the best margins\", \"which of these is buying back the most stock\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"companies":{"description":"Two to six tickers or names.","examples":[["AAPL","MSFT","GOOGL"]],"items":{"type":"string"},"maxItems":6,"minItems":2,"title":"Companies","type":"array"}},"required":["companies"],"title":"compare_companiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/insider_activity":{"post":{"operationId":"insider_activity","summary":"Insider and ownership filings for a company in a window: Form 4 (insider trades) count and list with links, Form 3","description":"Insider and ownership filings for a company in a window: Form 4 (insider trades) count and list with links, Form 3\n    (new insiders), Form 144 (planned sales), and 13D/13G (5%+ holders) filings. Use for \"who's been buying at X\", \"any\n    insider selling recently\", \"did an activist file on Y\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company":{"description":"Ticker, company name or CIK: 'AAPL', 'Nvidia', '320193'.","examples":["AAPL","Nvidia"],"title":"Company","type":"string"},"days":{"default":90,"description":"Window in days (7–365).","maximum":365,"minimum":7,"title":"Days","type":"integer"}},"required":["company"],"title":"insider_activityArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_filings":{"post":{"operationId":"search_filings","summary":"Full-text search across every SEC filing since 2001: which companies said a phrase, in which form, when, with a link to","description":"Full-text search across every SEC filing since 2001: which companies said a phrase, in which form, when, with a link to\n    the document. Use for \"which companies disclosed a cyber incident this month\", \"who mentioned tariffs in their 10-K\",\n    \"going-concern warnings this quarter\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Words or a quoted phrase to find in filings, e.g. '\"material weakness\"', '\"going concern\"', 'cybersecurity incident'.","examples":["\"material weakness\"","\"going concern\""],"title":"Query","type":"string"},"forms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Restrict to forms, e.g. ['8-K'], ['10-K','10-Q'].","title":"Forms"},"since":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Only filings on/after YYYY-MM-DD.","title":"Since"},"limit":{"default":20,"description":"Max hits (1–50).","maximum":50,"minimum":1,"title":"Limit","type":"integer"}},"required":["query"],"title":"search_filingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/latest_filings":{"post":{"operationId":"latest_filings","summary":"What was just filed with the SEC — the live feed of the latest filings, optionally for one form type: company, form,","description":"What was just filed with the SEC — the live feed of the latest filings, optionally for one form type: company, form,\n    filed date and link. Use for \"what 8-Ks came in today\", \"any new IPO filings (S-1)\", \"latest 13F filings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"form":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Form type to watch, e.g. '8-K', '10-K', '4', 'S-1', '13F-HR'. All forms when omitted.","examples":["8-K","S-1"],"title":"Form"},"limit":{"default":40,"description":"Max filings (1–100).","maximum":100,"minimum":1,"title":"Limit","type":"integer"}},"title":"latest_filingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/treasury_yields":{"post":{"operationId":"treasury_yields","summary":"The U.S. Treasury par yield curve: the latest day's yields from 1 month to 30 years, the 2s10s and 3m10y spreads with","description":"The U.S. Treasury par yield curve: the latest day's yields from 1 month to 30 years, the 2s10s and 3m10y spreads with\n    an inversion flag, and the month's daily history. Use for \"what's the 10-year at\", \"is the curve inverted\", \"how have\n    rates moved this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"month":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Month as YYYYMM for history (current month when omitted).","title":"Month"}},"title":"treasury_yieldsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/national_debt":{"post":{"operationId":"national_debt","summary":"The U.S. national debt to the penny: total, held by the public, intragovernmental, the change over the last 30 days","description":"The U.S. national debt to the penny: total, held by the public, intragovernmental, the change over the last 30 days\n    and per day, and the average interest rate on the debt. Use for \"how big is the national debt\", \"how fast is it growing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"national_debtArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/fx_rates":{"post":{"operationId":"fx_rates","summary":"Exchange rates from the ECB's daily reference rates (30+ currencies): today's or a past date's, and optionally the daily","description":"Exchange rates from the ECB's daily reference rates (30+ currencies): today's or a past date's, and optionally the daily\n    history of one pair with its high, low and change. Use for \"what's the euro at\", \"dollar to rupee on 15 August\",\n    \"how has the yen moved this year\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"base":{"default":"USD","description":"Base currency code.","examples":["USD","EUR"],"title":"Base","type":"string"},"symbols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Quote currencies, e.g. ['EUR','INR','BRL']. All ECB currencies when omitted.","title":"Symbols"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A past date YYYY-MM-DD (latest when omitted).","title":"Day"},"history_days":{"anyOf":[{"maximum":365,"minimum":7,"type":"integer"},{"type":"null"}],"default":null,"description":"Also return the daily series for the first symbol over this many days (7–365).","title":"History Days"}},"title":"fx_ratesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/fx_convert":{"post":{"operationId":"fx_convert","summary":"Convert an amount between currencies at the ECB reference rate (today's or a past date's). Use for \"how much is $2,500","description":"Convert an amount between currencies at the ECB reference rate (today's or a past date's). Use for \"how much is $2,500\n    in rupees\", \"what was 10,000 euros in dollars on 1 March\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"amount":{"description":"Amount to convert.","exclusiveMinimum":0,"title":"Amount","type":"number"},"from_currency":{"description":"From code.","examples":["USD"],"title":"From Currency","type":"string"},"to_currency":{"description":"To code.","examples":["INR"],"title":"To Currency","type":"string"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Use the rate on this date (YYYY-MM-DD).","title":"Day"}},"required":["amount","from_currency","to_currency"],"title":"fx_convertArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}