Skip to main content
Glama

KeyVex

get_foreign_agents

Read-only

Returns FARA registrations — US persons and firms registered with the DOJ as agents of a foreign principal under the Foreign Agents Registration Act. Use this when the user asks about: who is a registered foreign agent, which US firms work for a particular foreign government, recently-registered foreign agents, or to add a 'foreign- influence' flag to a lobbying firm, law firm, or PR firm. Each record is one registrant ↔ foreign-principal relationship — a registrant representing three foreign principals appears as three records. The single highest-signal filter is foreign_principal_country: foreign_principal_country='CHINA' → every US agent acting for a Chinese principal Source: efile.fara.gov (DOJ National Security Division). v1A covers ACTIVE registrations. The registrant↔principal linkage is included; per-document filing detail and compensation figures are not — follow source_url to FARA eFile for those. Cross-source pairing pattern: FARA + get_lobbying_filings — FARA is foreign-principal representation; LDA is domestic lobbying. A firm in both is lobbying Congress on behalf of a foreign government. FARA + get_fec_contributions — foreign-agent firms whose people also make political contributions. FARA + get_congressional_trades — influence-and-trades overlay. Identifier: registration_number is the FARA registration number. has_foreign_principal=false records are registrants with no currently- active foreign principal (still queryable as registered agents). History: registrations that LEAVE DOJ's active list are kept with status:'terminated' (+ termination_observed_date) rather than deleted — a terminated registration is still real history. Default queries return BOTH; filter status:'active' for the current roster only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum records to return. Default 50, max 500.
sinceNoISO date (YYYY-MM-DD). Only records on or after this date, by sort_by.
untilNoISO date (YYYY-MM-DD). Only records on or before this date.
statusNoRegistration status: 'active' = currently on DOJ's list; 'terminated' = left the list since ingestion (kept as history). Omit for both.
sort_byNoDefault: registration_date.
sort_orderNoDefault: desc (most recent first).
registrant_nameNoCase-insensitive substring against the US registrant (agent) name.
registration_numberNoExact FARA registration number. Fastest lookup.
has_foreign_principalNoFilter to records that carry a foreign-principal relationship (true) or registrants with no active foreign principal (false).
foreign_principal_nameNoCase-insensitive substring against the foreign principal's name.
foreign_principal_countryNoCountry of the foreign principal, matched uppercase (e.g. 'CHINA', 'RUSSIA', 'SAUDI ARABIA'). The key foreign-influence filter.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover read-only, open-world, and non-destructive behavior, but the description adds substantial context beyond that: record-level granularity, v1A scope, what is included (registrant ↔ principal linkage) versus excluded (per-document filing detail and compensation figures), retention of terminated registrations, and the meaning of has_foreign_principal=false.

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 long but front-loaded with purpose and usage, and most sentences carry useful domain-specific guidance. It is more verbose than necessary for a tool definition, but the structure and density of information justify most of its length.

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?

Given 11 parameters, no output schema, and annotations that cover only the safety profile, the description is highly complete. It explains scope, key filters, return granularity, exclusions, historical retention, and complementary tools so an agent can invoke it correctly without guessing.

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 description coverage is 100%, so the schema already documents all 11 parameters and a baseline of 3 is appropriate. The description adds extra meaning for key filters—especially foreign_principal_country as the highest-signal filter with a concrete example, status behavior, and has_foreign_principal semantics—but does not add much beyond the schema for the remaining parameters.

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 states a specific verb and resource: returns FARA registrations of US persons/firms registered with DOJ as foreign agents. It clearly distinguishes itself from siblings by naming FARA as foreign-principal representation versus LDA as domestic lobbying, and it explains the record granularity (one registrant ↔ foreign-principal relationship per record).

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?

It gives explicit use cases (who is a registered foreign agent, which US firms work for a particular foreign government, recently registered agents, adding a foreign-influence flag) and cross-source pairing patterns with get_lobbying_filings, get_fec_contributions, and get_congressional_trades. It also states that default queries return both active and terminated registrations, and that status:'active' should be used for the current roster only.

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