edgar_product_revenue

Pack: edgar · Endpoint: https://gateway.pipeworx.io/edgar/mcp

A US public company’s revenue broken out by product or segment, from its EDGAR XBRL filings.

Tool description as the model sees it

PRODUCT-LEVEL or segment-level revenue as STRUCTURED data — e.g. “how much revenue did Keytruda generate”, “AAPL revenue by product line”. Regular XBRL tools (edgar_company_concept, edgar_company_facts) only expose UNDIMENSIONED totals; a filer’s product/segment breakdown is tagged with an XBRL dimension (e.g. a “Keytruda [Member]”), which those APIs cannot see no matter which concept is requested. This tool reads SEC’s own standardized “Financial Report” rendering of that dimensional data straight out of the annual or quarterly segment-reporting / revenue-disaggregation note — 10-K and 10-Q for US filers, 20-F for foreign private issuers (Novartis, AstraZeneca, GSK, Sanofi, Novo Nordisk, Takeda) and 40-F for Canadian MJDS filers, resolved automatically and reported back as resolved_form — the same note human analysts read, but pre-parsed into rows. Pass product_filter (case-insensitive substring, matched against the dimension breadcrumb, e.g. “Keytruda”) to get just one product/segment instead of the whole table. Every result carries a citation (accession, filing date, exact report + URL it came from). Not every filer discloses product-level revenue in XBRL, and a small fraction use a non-standard table layout this parser can’t read — both are reported as an explicit status rather than a silent empty array, with a fallback to edgar_filing_text for the prose note.

Parameters

NameTypeRequiredDescription
ticker_or_cikstringyesTicker (e.g. “MRK”) or CIK (e.g. “310158”). Tickers are auto-resolved.
product_filterstringnoOptional case-insensitive substring to match against the product/segment dimension, e.g. “Keytruda”. Omit to get every disaggregated row in the table.
form_typestringnoFiling type to read the note from. Omit it to try 10-K, then 20-F, then 40-F automatically — foreign private issuers (NVS, AZN, GSK, SNY, NVO, TAK) file 20-F and Canadian MJDS filers file 40-F. “10-Q” also works for filers that disaggregate revenue quarterly. The form actually used comes back as resolved_form.
accessionstringnoOptional exact accession number (from edgar_company_filings) to read a specific past filing instead of the latest matching form_type.
limitnumbernoMax rows to return (1-200, default 100).

Example call

Arguments

{
  "ticker_or_cik": "MRK",
  "product_filter": "Keytruda"
}

curl

curl -X POST https://gateway.pipeworx.io/edgar/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"edgar_product_revenue","arguments":{"ticker_or_cik":"MRK","product_filter":"Keytruda"}}}'

TypeScript (@pipeworx/sdk)

import { Pipeworx } from '@pipeworx/sdk';
const pipeworx = new Pipeworx();

const result = await pipeworx.call('edgar_product_revenue', {
  "ticker_or_cik": "MRK",
  "product_filter": "Keytruda"
});

More examples

{
  "ticker_or_cik": "NVS",
  "product_filter": "Entresto"
}

Connect

Add this to your MCP client config, or use one-click install buttons:

{
  "mcpServers": {
    "edgar": {
      "url": "https://gateway.pipeworx.io/edgar/mcp"
    }
  }
}

See Getting Started for client-specific install steps.

Regenerated from source · build September 15, 2026