Skip to main content
Glama

Who works for a foreign government, and for how much

foreign_agents
Read-only

Who is paid to represent a foreign government or party inside the United States, and HOW MUCH, from the Justice Department's FARA register and the contracts filed with it. Pass top="contracts" for the biggest deals — the largest contract prices, who pays whom, and who owns the client in the filer's own sworn words. Pass country= to LIST THAT COUNTRY'S AGENTS BY NAME: registered_agents is the full current roster, each with its foreign principal, registration number and dates, plus former_agents and the counts. Answer "how many agents does Israel have and who are they" from that roster. Pass bill= for the foreign interests that lobbied a bill, or nothing for the country leaderboard. A country response also carries also_in_lobbying_data, the minority of those agents that additionally file under the Lobbying Disclosure Act, split into DIRECT, where the lobbying client IS the foreign principal and bills are named, and SHARED_FIRM, where one firm holds a foreign registration and separate domestic clients — context, never a claim about those clients. That subset is never the roster. Countries are spelled as the register spells them. A country roster also carries the MONEY per agent: agreed_price is the contract price from the agreement exhibit filed at registration, always with the rate it is stated at, and reported_receipts is what the agent later reported actually receiving, as a floor rather than earnings. Both are null where no figure could be proved. Each agent may also carry foreign_principal_owned_by — the filer's sworn words on who owns the foreign principal, which is how a US-registered company names its foreign parent.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
topNoPass "contracts" to rank the BIGGEST foreign-agent contract prices on file — who is paid the most, by whom. Combine with country= to narrow it.
billNoBill number, e.g. HR1234 — returns foreign principals that lobbied it
rateNoWith top=contracts: the rate to rank, "month" (default) or "year", "quarter", "hour", "one-time". Rates are never mixed or converted.
limitNoMax rows, 1-100 (default 20)
countryNoCountry as the register spells it, e.g. "ISRAEL", "SAUDI ARABIA", "KOREA, SOUTH"

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / rate
      Added value: +{
      +  "description": "With top=contracts: the rate to rank, \"month\" (default) or \"year\", \"quarter\", \"hour\", \"one-time\". Rates are never mixed or converted.",
      +  "type": "string"
      +}
    • addedInput schema / properties / top
      Added value: +{
      +  "description": "Pass \"contracts\" to rank the BIGGEST foreign-agent contract prices on file — who is paid the most, by whom. Combine with country= to narrow it.",
      +  "type": "string"
      +}
  2. Added

TDQS

A4.5/5.0
Behavior5/5

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

The description goes well beyond the readOnlyHint annotation, disclosing nuanced behaviors: 'Rates are never mixed or converted', reported_receipts is 'a floor rather than earnings', values are 'null where no figure could be proved', and the lobbying subset is 'context, never a claim about those clients'. These are exactly the kind of non-obvious behavioral traits an agent needs.

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

Conciseness3/5

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

The description is information-dense but delivered as one long, unbroken paragraph. It is front-loaded with purpose, and every sentence contributes, but readability suffers from a lack of structure (bullets or separation of query modes vs. response semantics) and a high word count.

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?

With no output schema, the description carries the full burden of explaining response shapes. It thoroughly documents the country roster fields (registered_agents, former_agents, money, foreign_principal_owned_by), the lobbying subset split (DIRECT vs SHARED_FIRM), and the top= contracts mode. Nothing needed to invoke the tool correctly 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 the baseline is 3, but the description adds real meaning for several parameters: top= selects the biggest contracts, country= returns roster structure, bill= maps to lobbying foreign principals, and rate= clarifies that rates are never mixed or converted. This adds value beyond the schema's property descriptions.

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?

The description opens with a specific, concrete purpose: identifying who is paid to represent foreign governments and how much, from the FARA register. It clearly differentiates the tool from siblings like lobbying by grounding it in FARA contracts, and its multiple named modes (top=, country=, bill=) make its scope unmistakable.

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

Usage Guidelines4/5

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

The description provides explicit parameter-driven usage guidance: 'Pass top="contracts"', 'Pass country= to LIST THAT COUNTRY'S AGENTS BY NAME', 'Pass bill= for the foreign interests that lobbied a bill, or nothing for the country leaderboard'. It does not compare with sibling tools, but the tool's unique domain and clear conditional instructions give sufficient usage direction.

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