Skip to main content
Glama

search_disclosures

Read-onlyIdempotent

Search receipt-linked US government financial disclosures: both chambers of Congress under the STOCK Act, plus executive-branch OGE filings (chamber 'executive', which holds the President's disclosures). Every row carries receipt.url, the government's own document for that row: a PDF page for House and OGE filings, or the Senate eFD report page, which the Senate site opens behind its own access agreement (receipt.access 'gated'). Supports point-in-time reconstruction via as_of (rows observed on or before that timestamp; no look-ahead bias) and change polling via updated_since. Results are paged; page.next_cursor continues the listing.

Input Schema

NameRequiredDescriptionDefault
as_ofNoISO timestamp: only rows first observed on/before this instant
limitNoRows per page: 10 when omitted; up to 25 without a key and 1000 with a licensed key. A larger request returns the maximum, not an error.
cursorNoOpaque page.next_cursor from a previous call
tickerNoFilter by ticker symbol, e.g. NVDA
chamberNoFilter by filing body. 'house' and 'senate' are STOCK Act periodic transaction reports; 'executive' is executive-branch OGE filings, which is where the President's disclosures are. Omit to search all.
member_idNoFilter to one filer by slug, e.g. donald-trump or nancy-pelosi. The same slug appears as member.member_id on every row.
updated_sinceNoISO timestamp: only rows first observed after this instant
min_delay_daysNoOnly rows filed at least this many days after the transaction. The STOCK Act window is 45 days, so 46 returns filings outside it. Rows without a computed delay are excluded, not guessed at.
within_statutory_windowNofalse returns only filings made outside the statutory window that applies to that row (served as statutory_window_days); true returns only filings inside it. Unlike min_delay_days, the boundary is each row's own window rather than a supplied number. Annual reports have no window and are excluded by either value.

Output Schema

NameRequiredDescriptionDefault
dataYes
pageYes
cacheYes
accessYes
noticeYes
versionYes
coverageYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Rows per page: up to 25 without a key, up to 1000 with a licensed key"New value: +"Rows per page: 10 when omitted; up to 25 without a key and 1000 with a licensed key. A larger request returns the maximum, not an error."
  2. Changed1 schema field changed
    • changedOutput schema / properties / data / items / properties / instrument / properties / kind / description
      Previous value: -"Instrument category supported by the printed code or text. Explicit option transactions include exercised options even where the original source code is ST. Other means unclassified, not a guessed equity."New value: +"Instrument category supported by the printed code or text. Option mentions include exercised options even where the original source code is ST. Other means unclassified, not a guessed equity."
  3. Changed1 schema field changed
    • changedOutput schema / properties / data / items / properties / instrument / properties / kind / description
      Previous value: -"Instrument category supported by the printed code or text. Option mentions include exercised options even where the original source code is ST. Other means unclassified, not a guessed equity."New value: +"Instrument category supported by the printed code or text. Explicit option transactions include exercised options even where the original source code is ST. Other means unclassified, not a guessed equity."
  4. Changed3 schema fields changed
    • changedInput schema / properties / limit / description
      Previous value: -"Rows per page (free tier caps at 25; licensed 1000)"New value: +"Rows per page: up to 25 without a key, up to 1000 with a licensed key"
    • changedInput schema / properties / member_id / description
      Previous value: -"Filter to one filer by slug, e.g. donald-trump or nancy-pelosi. Use list_members to resolve a name to its identifier."New value: +"Filter to one filer by slug, e.g. donald-trump or nancy-pelosi. The same slug appears as member.member_id on every row."
    • changedInput schema / properties / within_statutory_window / description
      Previous value: -"false returns only filings made outside the statutory window that applies to that row (served as statutory_window_days); true returns only filings inside it. Prefer this over min_delay_days when the question is 'was it late', because the boundary is the row's own window, not a number you supply. Annual reports have no window and are excluded by either value."New value: +"false returns only filings made outside the statutory window that applies to that row (served as statutory_window_days); true returns only filings inside it. Unlike min_delay_days, the boundary is each row's own window rather than a supplied number. Annual reports have no window and are excluded by either value."
  5. Changed1 schema field changed
    • changedOutput schema / properties / version / const
      Previous value: -"1.19.2"New value: +"1.20.0"
  6. Changed11 schema fields changed
    • changedOutput schema / properties / data / items / properties / amount / description
      Previous value: -"The bounded range exactly as disclosed. A missing amount is never estimated."New value: +"The disclosed band. Only two enumerated House PTR labels have an open upper bound; a missing amount is never estimated."
    • removedOutput schema / properties / data / items / properties / amount / properties / basis / const
      Removed value: -"bounded_range_as_disclosed"
    • changedOutput schema / properties / data / items / properties / amount / properties / basis / description
      Previous value: -"States what the amount fields are: the bounded range as the filing disclosed it. The only basis served today; a future exact-amount source would carry its own."New value: +"Names whether the filing disclosed a bounded or one of the two enumerated House PTR open-ended brackets. Neither basis represents an exact amount."
    • addedOutput schema / properties / data / items / properties / amount / properties / basis / enum
      Added value: +[
      +  "bounded_range_as_disclosed",
      +  "open_ended_as_disclosed"
      +]
    • addedOutput schema / properties / data / items / properties / amount / properties / range_high / anyOf
      Added value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / data / items / properties / amount / properties / range_high / description
      Previous value: -"Upper bound of the disclosed band, in whole USD. For an open-ended band such as \"over $50,000,000\" this is the stated threshold, and midpoint is absent."New value: +"Upper bound of the disclosed band, in whole USD. Null only for the two enumerated House PTR open-ended brackets; never a fabricated ceiling."
    • removedOutput schema / properties / data / items / properties / amount / properties / range_high / maximum
      Removed value: -9007199254740991
    • removedOutput schema / properties / data / items / properties / amount / properties / range_high / minimum
      Removed value: -0
    • removedOutput schema / properties / data / items / properties / amount / properties / range_high / type
      Removed value: -"integer"
    • changedOutput schema / properties / data / items / properties / amount / properties / verbatim_text / description
      Previous value: -"The amount text exactly as it appears on the filing, before any parsing. When range_low and range_high disagree with this text, this text is the filing."New value: +"The filed amount label; casing is canonicalized for the two enumerated House PTR open-ended brackets. Other text retains the parsed filing's spelling. The source line and receipt remain the source of truth."
    • changedOutput schema / properties / version / const
      Previous value: -"1.18.1"New value: +"1.19.2"
  7. Changed1 schema field changed
    • changedOutput schema / properties / version / const
      Previous value: -"1.18.0"New value: +"1.18.1"
  8. Changed1 schema field changed
    • changedOutput schema / properties / version / const
      Previous value: -"1.17.0"New value: +"1.18.0"
  9. Changed3 schema fields changed
    • addedOutput schema / properties / data / items / properties / instrument
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Additive projection from the filing's printed asset and description. Every absent or conflicting ticker or option term has a named reason. It is not an order instruction or a securities-master lookup; the original asset fields remain unchanged.",
      +  "properties": {
      +    "contracts": {
      +      "anyOf": [
      +        {
      +          "maximum": 9007199254740991,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Explicit count of options or contracts. Shares and units are never converted, nor is a partial-sale count calculated from holdings."
      +    },
      +    "expiration": {
      +      "anyOf": [
      +        {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Date as printed, not necessarily ISO. Two-digit years retain two digits; no century or missing day is inferred. See field_evidence.expiration.reason."
      +    },
      +    "field_evidence": {
      +      "additionalProperties": false,
      +      "description": "Required per-field evidence for every option field, including missing fields and non-option rows.",
      +      "properties": {
      +        "contracts": {
      +          "additionalProperties": false,
      +          "description": "Explicit option/contract-count spans plus any share/unit spans. Describes quantity ambiguity without conversions or arithmetic.",
      +          "properties": {
      +            "raw": {
      +              "description": "Matched filing-text spans, retaining competing values and printed share/unit counts. Empty when no applicable evidence was found.",
      +              "items": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "reason": {
      +              "description": "Named extraction rule or refusal reason; always present, including when the value is null.",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "status": {
      +              "description": "Whether this value is explicitly printed, absent, ambiguous, invalid or inapplicable to a non-option line.",
      +              "enum": [
      +                "printed",
      +                "missing",
      +                "ambiguous",
      +                "invalid",
      +                "not_applicable"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "reason",
      +            "raw"
      +          ],
      +          "type": "object"
      +        },
      +        "expiration": {
      +          "additionalProperties": false,
      +          "description": "Printed expiration span and date-format/refusal rule. A two-digit year is identified explicitly and not expanded.",
      +          "properties": {
      +            "raw": {
      +              "description": "Matched filing-text spans, retaining competing values and printed share/unit counts. Empty when no applicable evidence was found.",
      +              "items": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "reason": {
      +              "description": "Named extraction rule or refusal reason; always present, including when the value is null.",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "status": {
      +              "description": "Whether this value is explicitly printed, absent, ambiguous, invalid or inapplicable to a non-option line.",
      +              "enum": [
      +                "printed",
      +                "missing",
      +                "ambiguous",
      +                "invalid",
      +                "not_applicable"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "reason",
      +            "raw"
      +          ],
      +          "type": "object"
      +        },
      +        "option_type": {
      +          "additionalProperties": false,
      +          "description": "Printed call/put evidence, conflict or absence.",
      +          "properties": {
      +            "raw": {
      +              "description": "Matched filing-text spans, retaining competing values and printed share/unit counts. Empty when no applicable evidence was found.",
      +              "items": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "reason": {
      +              "description": "Named extraction rule or refusal reason; always present, including when the value is null.",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "status": {
      +              "description": "Whether this value is explicitly printed, absent, ambiguous, invalid or inapplicable to a non-option line.",
      +              "enum": [
      +                "printed",
      +                "missing",
      +                "ambiguous",
      +                "invalid",
      +                "not_applicable"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "reason",
      +            "raw"
      +          ],
      +          "type": "object"
      +        },
      +        "strike": {
      +          "additionalProperties": false,
      +          "description": "Exact printed strike span, or the missing, malformed or conflicting-price reason.",
      +          "properties": {
      +            "raw": {
      +              "description": "Matched filing-text spans, retaining competing values and printed share/unit counts. Empty when no applicable evidence was found.",
      +              "items": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "reason": {
      +              "description": "Named extraction rule or refusal reason; always present, including when the value is null.",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "status": {
      +              "description": "Whether this value is explicitly printed, absent, ambiguous, invalid or inapplicable to a non-option line.",
      +              "enum": [
      +                "printed",
      +                "missing",
      +                "ambiguous",
      +                "invalid",
      +                "not_applicable"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "reason",
      +            "raw"
      +          ],
      +          "type": "object"
      +        },
      +        "underlying": {
      +          "additionalProperties": false,
      +          "description": "Printed underlying name/label evidence or why an underlying was withheld.",
      +          "properties": {
      +            "raw": {
      +              "description": "Matched filing-text spans, retaining competing values and printed share/unit counts. Empty when no applicable evidence was found.",
      +              "items": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "reason": {
      +              "description": "Named extraction rule or refusal reason; always present, including when the value is null.",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "status": {
      +              "description": "Whether this value is explicitly printed, absent, ambiguous, invalid or inapplicable to a non-option line.",
      +              "enum": [
      +                "printed",
      +                "missing",
      +                "ambiguous",
      +                "invalid",
      +                "not_applicable"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "reason",
      +            "raw"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "underlying",
      +        "option_type",
      +        "strike",
      +        "expiration",
      +        "contracts"
      +      ],
      +      "type": "object"
      +    },
      +    "kind": {
      +      "description": "Instrument category supported by the printed code or text. Option mentions include exercised options even where the original source code is ST. Other means unclassified, not a guessed equity.",
      +      "enum": [
      +        "equity",
      +        "option",
      +        "etf",
      +        "bond",
      +        "fund",
      +        "crypto",
      +        "other"
      +      ],
      +      "type": "string"
      +    },
      +    "kind_reason": {
      +      "description": "Named source-code or printed-text rule used to classify this line.",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "option_type": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "call",
      +            "put"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Call or put only when printed as the option type. Conflicting types and unlabelled verbs produce null."
      +    },
      +    "strike": {
      +      "anyOf": [
      +        {
      +          "pattern": "^\\d+(?:\\.\\d+)?$",
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Exact printed decimal strike, with grouping separators and dollar sign removed. String avoids binary floating-point rounding. Currency is not inferred."
      +    },
      +    "ticker": {
      +      "anyOf": [
      +        {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Single printed symbol, uppercased without joining tokens. An explicit ticker label or security-named parenthetical may resolve a blank ticker field; issuer names alone never do. Not a guarantee of an executable option-series identifier."
      +    },
      +    "ticker_reason": {
      +      "description": "Exact ticker-resolution rule or named missing/ambiguous reason. Never empty, including for untickered assets.",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "ticker_status": {
      +      "description": "Distinguishes the original printed ticker field, a symbol resolved from explicit asset text, and missing, conflicting or malformed evidence.",
      +      "enum": [
      +        "printed",
      +        "resolved_from_printed_text",
      +        "missing",
      +        "ambiguous",
      +        "invalid"
      +      ],
      +      "type": "string"
      +    },
      +    "underlying": {
      +      "anyOf": [
      +        {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "Explicitly labelled underlying or the printed stock name on an option-related line. Never decoded from the ticker or resolved from an issuer lookup."
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "kind_reason",
      +    "ticker",
      +    "ticker_status",
      +    "ticker_reason",
      +    "underlying",
      +    "option_type",
      +    "strike",
      +    "expiration",
      +    "contracts",
      +    "field_evidence"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / data / items / required
      Previous value: -[
      -  "disclosure_id",
      -  "version_id",
      -  "content_hash",
      -  "identity_basis",
      -  "change",
      -  "member",
      -  "asset",
      -  "transaction",
      -  "filing",
      -  "amount",
      -  "owner",
      -  "receipt",
      -  "provenance"
      -]New value: +[
      +  "disclosure_id",
      +  "version_id",
      +  "content_hash",
      +  "identity_basis",
      +  "change",
      +  "member",
      +  "asset",
      +  "instrument",
      +  "transaction",
      +  "filing",
      +  "amount",
      +  "owner",
      +  "receipt",
      +  "provenance"
      +]
    • changedOutput schema / properties / version / const
      Previous value: -"1.16.0"New value: +"1.17.0"
  10. Changed1 schema field changed
    • changedOutput schema / properties / version / const
      Previous value: -"1.15.0"New value: +"1.16.0"
  11. Changed2 schema fields changed
    • addedOutput schema / properties / page / properties / order
      Added value: +{
      +  "description": "Snapshot walks started in 1.15.0 sort filed_date descending (nulls last), then first_observed_at and disclosure_id ascending. Pre-1.15 cursors retain first_observed_at/disclosure_id ascending. Changes sort change_generation, change_sequence and event_id ascending. Snapshot membership and the incremental watermark do not depend on display order.",
      +  "enum": [
      +    "filed_date_desc",
      +    "first_observed_at_asc",
      +    "change_generation_asc"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / version / const
      Previous value: -"1.14.0"New value: +"1.15.0"
  12. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds valuable behavioral context beyond that: every row links to a government PDF or Senate eFD page (with gated access noted), and results are paged with a cursor. It does not cover rate limits or authentication details beyond gating.

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?

The description is a single dense paragraph but front-loads the core purpose and then layers on document linking, time-travel, and pagination details. Most sentences carry useful information, though the density is high.

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

Completeness4/5

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

Given nine parameters, an output schema, and rich schema descriptions, the description covers the essential scope, document linkage, temporal query behavior, and pagination. It is nearly complete, with the only gap being explicit routing to sibling tools.

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 the baseline is 3. The description adds interpretive meaning beyond the schema by explaining that as_of enables look-ahead-bias-free reconstruction and updated_since supports change polling, and it clarifies that pagination uses page.next_cursor.

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

Purpose4/5

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

States a specific verb (search) and resource (US government financial disclosures) with clear scope: congressional STOCK Act filings plus executive-branch OGE filings. The verb distinguishes it from sibling retrieval tools like get_disclosure_history, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Describes capabilities such as point-in-time reconstruction and change polling, which implies when to use those parameters, but does not explicitly state when to use this tool versus alternatives like get_disclosure_history or list_members. No exclusions or prerequisites are given.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources