Skip to main content
Glama
cliwant

mcp-sam-gov

edgar_company_concept

Read-only

Fetch the complete reported XBRL time-series for one company and one concept, including restatement history. Use it to trace how a specific metric changed across filings.

Instructions

One filer × one XBRL concept × complete reported time-series (keyless; data.sec.gov companyconcept), including amendment/restatement history. Sits between edgar_company_facts (many concepts, one filer) and edgar_xbrl_frames (one concept, all filers). start=null for INSTANT concepts. Input: cikOrTicker, concept (EXACT alnum XBRL tag, e.g. 'Assets'), optional taxonomy (us-gaap|dei|ifrs-full, def us-gaap), unit (CLIENT-SIDE filter), form/fy (client-side), canonicalOnly (def false), limit/offset. Returns { found, cik, entityName, taxonomy, concept, label, description, unitsAvailable:[{unit,count}], rows:[{unit, start, end, val, accn, fy, fp, form, filed, frame, canonical}] }. HONESTY M1: period identity is the (start,end) PAIR — the SAME end with a DIFFERENT start is a different-duration fact (3-month vs 12-month), NOT a revision; a revision is multiple rows sharing the same (start,end) with differing accn/filed/val. DEFAULT returns ALL rows including restatement history + per-row canonical; canonicalOnly:true dedupes to one canonical row per (unit,start,end), fully disclosed, never a silent drop. Every row is unit-tagged; unitsAvailable discloses ALL units even under a unit filter; val is null-never-0. A bad CIK/taxonomy/concept → 404 → found:false (NEVER fabricated val:0); 5xx/timeout/non-JSON/shape-drift THROWS; unit not present → honest empty + available-units note (unit is CLIENT-SIDE, not a path segment). cik/taxonomy/concept are validated path segments (no injection). NOTE: EDGAR keys on CIK, NOT SAM UEI/DUNS — no authoritative CIK↔UEI join.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fyNoOptional CLIENT-SIDE filter: keep only rows whose fiscal year `fy` equals this integer (e.g. 2023).
formNoOptional CLIENT-SIDE filter: case-insensitive EXACT match on a row's `form` (e.g. '10-K' for annual values only, '10-Q' for quarterly).
unitNoOptional CLIENT-SIDE filter on the returned units{} keys (NOT a path segment — 'USD', 'shares', 'USD/shares', 'EUR', 'pure'). Restricts rows to that unit but STILL discloses the other units via unitsAvailable + a note. A unit not present ⇒ 0 rows + the available-units note (never a fabricated pick).
limitNoCLIENT-SIDE page size over the already-fully-fetched, (unit,start,end)-keyed time-series (1..1000, default 100). Does NOT reduce the upstream fetch (SEC does not paginate companyconcept); page via _meta.pagination.nextOffset.
offsetNo0-based client-side offset into the filtered time-series (default 0).
conceptYesXBRL concept tag — EXACT, alphanumeric CamelCase (e.g. 'Assets', 'Revenues', 'NetIncomeLoss', 'Liabilities'). A tag the filer never reported ⇒ upstream 404 ⇒ found:false (never a fabricated 0).
taxonomyNoXBRL taxonomy namespace (a fixed enum — the SSRF guard for this segment): 'us-gaap' (financial statements, default), 'dei' (entity/document info, e.g. EntityCommonStockSharesOutstanding), or 'ifrs-full' (IFRS filers, e.g. a foreign private issuer). Live-confirmed members only.
cikOrTickerYesA 10-digit (or unpadded) SEC CIK, or a ticker/company-name resolvable via company_tickers.json (e.g. '320193', 'CIK0000320193', 'AAPL').
canonicalOnlyNoWhen true, reduce to ONE row per distinct (unit,start,end) period — the frame-tagged canonical value, or (for a not-yet-consolidated period) the latest-filed row (marked canonical:false). SUPERSEDED/amendment rows are REMOVED (fully disclosed via a note). Default false ⇒ ALL rows incl. the amendment/restatement history. A same-`end` different-`start` pair is a DIFFERENT period (both kept), NOT a duplicate.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.12.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint and openWorldHint; the description carries a heavy load and exceeds it. It discloses the (start,end)-pair period identity rule, the canonicalOnly dedupe that is 'fully disclosed, never a silent drop', 'val is null-never-0', 'NEVER fabricated val:0' on 404, throw-on-shape-drift, and the CIK-not-SAM-UEI caveat. This is model-grade transparency about failure modes and data semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but justified for a 9-parameter tool with no output schema; the return shape is compactly inlined and the honesty notes are organized under a labeled 'HONESTY M1' marker. It front-loads purpose and differentiators before details. Slightly over-stuffed — the error-semantics section could be trimmed — but every sentence earns its place given the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Remarkably complete for a tool with no output schema: it inlines the full return object shape, enumerates error classes (404 vs 5xx vs non-JSON/shape-drift vs missing unit), documents pagination semantics (limit/offset are client-side over a fully-fetched series; SEC does not paginate), and warns about the CIK↔UEI gap. Nothing an agent needs to call it correctly or interpret results is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description genuinely adds meaning: it flags which parameters are CLIENT-SIDE versus path segments (unit, form, fy, limit/offset), explains canonicalOnly's dedupe key (unit,start,end), and links unit semantics to the disclosed-units behavior. The description reinforces and extends the schema rather than merely repeating it — though the schema itself is already unusually rich, so the marginal gain is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a crisp triple: 'One filer × one XBRL concept × complete reported time-series' — a specific verb-less but precisely scoped resource statement. It then names both sibling tools and the exact axis that differentiates them ('Sits between edgar_company_facts (many concepts, one filer) and edgar_xbrl_frames (one concept, all filers)'). An agent can disambiguate immediately without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly positions the tool relative to its two nearest siblings and enumerates the input contract (cikOrTicker, concept, optional taxonomy/unit/canonicalOnly/limit/offset). It also states when NOT to expect success — bad CIK/taxonomy/concept yields 404→found:false, unit-not-present yields honest empty — which tells the agent how to interpret outcomes and when to route elsewhere.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools