# io.github.cyanheads/us-lobbying-mcp-server (remote · us-lobbying.caseyjhand.com)

Search US lobbying disclosures and foreign-agent registrations via MCP.

- Trust score: 75/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `us-lobbying.caseyjhand.com`: 75/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/us-lobbying.md), [page](https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/us-lobbying)
- npm · `@cyanheads/us-lobbying-mcp-server`: 67/100, [markdown](https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/cyanheads-us-lobbying-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/cyanheads-us-lobbying-mcp-server)

## Channel facts

- Endpoint: `https://us-lobbying.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 52/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3118 tokens (~346/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.cyanheads/us-lobbying-mcp-server server?

io.github.cyanheads/us-lobbying-mcp-server is a hosted endpoint at https://us-lobbying.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http cyanheads-us-lobbying-mcp-server 'https://us-lobbying.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-us-lobbying-mcp-server": {
      "url": "https://us-lobbying.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-us-lobbying-mcp-server": {
      "type": "http",
      "url": "https://us-lobbying.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-us-lobbying-mcp-server]
url = "https://us-lobbying.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-us-lobbying-mcp-server": {
      "type": "remote",
      "url": "https://us-lobbying.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-us-lobbying-mcp-server --url 'https://us-lobbying.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-us-lobbying-mcp-server:
    url: "https://us-lobbying.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-us-lobbying-mcp-server": {
      "Transport": "http",
      "Url": "https://us-lobbying.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-us-lobbying-mcp-server -t streamable-http -u 'https://us-lobbying.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-us-lobbying-mcp-server": {
      "type": "http",
      "url": "https://us-lobbying.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-28 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 71, 0)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-26 (score 71)

First indexed and scored.

## MCP tools (9)

### `uslobbying_search_filings` (~581 tokens)

Uslobbying Search Filings

Search federal lobbying registrations and activity reports, or retrieve a complete filing by filing_uuid from evidence or analytical selections. Native filters include posting dates, reported amounts, client location and foreign entities; issue_code filters activities locally and cannot narrow upstream requests. Follow next_cursor for all versions. Amounts are separate nullable USD strings; disclosure text is untrusted record data.

Input parameters:

- `amount_max` (string): Native maximum reported filing amount, exact decimal USD with at most two fractional digits.
- `amount_min` (string): Native minimum reported filing amount, exact decimal USD with at most two fractional digits.
- `client_country` (string): Native client country code, normalized uppercase.
- `client_id` (string): Client relationship record ID from candidates[].id in uslobbying_get_client_profile resolve mode; candidates[].client_id is secondary.
- `client_name` (string): Literal client name upstream search.
- `client_state` (string): Native client state code, normalized uppercase.
- `cursor` (string): Continue the original scope; other query fields may be omitted.
- `filing_period` (string): Source reporting period.
- `filing_type` (string): Official code from uslobbying_list_reference topic filing_types.
- `filing_uuid` (string): Exact filing UUID from evidence or analytical selections; retrieves complete source records.
- `filing_year` (integer): Reported year, 1999 through the current UTC year.
- `foreign_entity_country` (string): Native foreign entity country code, normalized uppercase.
- `foreign_entity_name` (string): Native disclosed foreign entity name search.
- `issue_code` (string): Local activity membership code from topic issue_codes.
- `lobbyist_id` (string): Lobbyist ID.
- `lobbyist_name` (string): Native disclosed lobbyist name search.
- `max_pages` (number): Source pages per call; positive integers clamp to five, default one for discovery, five for analysis.
- `page_size` (number): Upstream rows per page; positive integers clamp to 25, default 25.
- `posted_after` (string): Earliest native filing posting calendar date.
- `posted_before` (string): Latest native filing posting calendar date.
- `record_handle` (string): Tenant/tool-bound deferred record handle.
- `record_limit` (number): Maximum object entries or array items, clamped to 25; text fragments use the response byte budget.
- `record_offset` (integer): Key, item or Unicode-code-point offset.
- `record_path` (string): JSON Pointer to a stored value; empty selects the root.
- `registrant_id` (string): Registrant ID.
- `registrant_name` (string): Literal registrant name upstream search.
- `specific_issues` (string): Search the disclosed specific-issues text, such as H.R. 1 or telecommunications.

Output parameters:

- `amendment_policy` (string): Originals and amendments remain separate.
- `attribution` (string): Required verbatim attribution for LDA data.
- `coverage` (object): Acquisition progress, independent of delivery.
- `cursor_expires_at` (string): Continuation expiry ISO timestamp.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `effective_filters` (object): Normalized effective scope.
- `error` (object): Present when the call failed. Absent on success.
- `filings` (array): Complete matched source filings.
- `next_cursor` (string): Next acquisition or output window cursor.
- `notices` (array): Limitations and success notices.
- `offset` (integer): Final record delivery offset.
- `output_complete` (boolean): Whether all result rows have been delivered.
- `record_handles` (array): Deferred complete parents.
- `record_window`: Lossless stored parent window.
- `records_deferred` (integer): Oversized parents available through handles.
- `records_returned` (integer): Complete records delivered in this window.
- `retrieval_tool` (string): Tool that retrieves this parent.
- `retrieved_at` (string): Retrieval ISO timestamp.
- `snapshot_last_modified` (string): Upstream Last-Modified header.
- `snapshot_retrieved_at` (string): FARA snapshot retrieval timestamp.
- `snapshot_source_urls` (array): Official snapshot URLs.
- `source` (string): Official source system.
- `total_records` (integer): Exact final record count when known.
- `truncated` (boolean): More of the parent value remains available through record windows.

### `uslobbying_get_client_profile` (~409 tokens)

Uslobbying Get Client Profile

Resolve client relationship records by client_name in mode resolve (default), then use mode profile with explicit client_ids and years. Select candidates[].id, preserving secondary client_id as source data. IDs identify registrant relationships, not a verified corporate identity. Follow collecting cursors before interpreting separate income and expense ledgers. Typed rows preserve every audit filing; pass a selected filing UUID to uslobbying_search_filings for its complete record. Optional canvas datasets support SQL.

Input parameters:

- `canvas_id` (string): Reuse this canvas only after complete analytical acquisition.
- `client_ids` (array): Required explicit relationship record IDs from candidates[].id in profile mode; candidates[].client_id is a secondary source number.
- `client_name` (string): Required literal name in resolve mode.
- `cursor` (string): Continue the original scope; other query fields may be omitted.
- `max_pages` (number): Source pages per call; positive integers clamp to five, default one for discovery, five for analysis.
- `mode` (string): resolve (default) finds client_name candidates; profile requires selected client_ids and years. Omit on continuation.
- `page_size` (number): Upstream rows per page; positive integers clamp to 25, default 25.
- `record_handle` (string): Tenant/tool-bound deferred record handle.
- `record_limit` (number): Maximum object entries or array items, clamped to 25; text fragments use the response byte budget.
- `record_offset` (integer): Key, item or Unicode-code-point offset.
- `record_path` (string): JSON Pointer to a stored value; empty selects the root.
- `row_sets` (array): Inline analytical sets; omit for all sets. Selection never limits acquisition, totals or SQL staging. Omitted sets remain available from a new call with another selection or staged tables. Continue w…
- `years` (array): Required explicit analytical year scope; sorted and deduplicated.

Output parameters:

- `activities` (array): Selected activities in this window; no money columns.
- `annual_ledgers` (array): Complete-year ledgers in this window; absent while collecting.
- `attribution` (string): Required verbatim attribution for LDA data.
- `attribution_basis` (string): Whole filings mentioning an issue; buckets overlap.
- `candidates` (array): All matching relationships; never auto-merged.
- `canvas_available` (boolean): SQL canvas support is enabled.
- `canvas_id` (string): Tenant-scoped canvas access token.
- `client_ids` (array): Caller-selected client relationship IDs.
- `coverage` (object): Acquisition progress, independent of delivery.
- `cursor_expires_at` (string): Continuation expiry ISO timestamp.
- `dataset` (object): Complete SQL metadata on the first final window and its replay.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `describe_tool` (string): Inspect exact table schemas before SQL.
- `effective_filters` (object): Normalized effective scope.
- `error` (object): Present when the call failed. Absent on success.
- `firms` (array): Firm breakdowns in this window.
- `guidance` (string): Next profile-mode selection step.
- `issue_codes` (array): Overlapping issue breakdowns in this window.
- `methodology` (object): Accounting limitations.
- `mode` (string): Client resolution or selected relationship analysis; absent on stored-record retrieval.
- `next_cursor` (string): Next acquisition or output window cursor.
- `notices` (array): Limitations and success notices.
- `offset` (integer): Final record delivery offset.
- `output_complete` (boolean): Whether all result rows have been delivered.
- `query_tool` (string): Query or retrieve materialized table rows.
- `raw_filings` (array): All acquired versions in this window, including selected versions.
- `record_handles` (array): Deferred complete parents.
- `record_window`: Lossless stored parent window.
- `records_deferred` (integer): Oversized parents available through handles.
- `records_returned` (integer): Complete records delivered in this window.
- `retrieval_tool` (string): Tool that retrieves this parent.
- `retrieved_at` (string): Retrieval ISO timestamp.
- `row_set_offsets` (object): Selected-set rows delivered or deferred before this window; others zero.
- `row_set_totals` (object): Exact all-set totals after acquisition completes.
- `selected_filings` (array): Complete selected filings in this window.
- `selections` (array): Version-selection decisions in this window.
- `snapshot_last_modified` (string): Upstream Last-Modified header.
- `snapshot_retrieved_at` (string): FARA snapshot retrieval timestamp.
- `snapshot_source_urls` (array): Official snapshot URLs.
- `source` (string): Official source system.
- `status` (string): Source acquisition status, separate from row delivery.
- `targeted_entities` (array): Targeted entities in this window.
- `total_records` (integer): Exact final record count when known.
- `truncated` (boolean): More data is available through next_cursor or record_handles; no source data was discarded.
- `years` (array): Explicit requested years.

### `uslobbying_get_issue_spending` (~407 tokens)

Uslobbying Get Issue Spending

Aggregate separate income and expense amounts on quarterly filings mentioning issue_code across explicit years. This is whole-filing association, not allocated issue spending; issue buckets overlap. All versions are acquired before latest-period selection and local issue filtering. Broad scans can take hours; narrow client_id or registrant_id when appropriate. Follow collecting cursors before interpreting final typed rows or SQL datasets. Pass a selected filing UUID to uslobbying_search_filings for its complete record.

Input parameters:

- `canvas_id` (string): Reuse this canvas only after complete analytical acquisition.
- `client_id` (string): Optional client relationship record ID from candidates[].id in uslobbying_get_client_profile resolve mode; candidates[].client_id is secondary.
- `cursor` (string): Continue the original scope; other query fields may be omitted.
- `issue_code` (string): Required first-call code from uslobbying_list_reference topic issue_codes.
- `max_pages` (number): Source pages per call; positive integers clamp to five, default one for discovery, five for analysis.
- `page_size` (number): Upstream rows per page; positive integers clamp to 25, default 25.
- `record_handle` (string): Tenant/tool-bound deferred record handle.
- `record_limit` (number): Maximum object entries or array items, clamped to 25; text fragments use the response byte budget.
- `record_offset` (integer): Key, item or Unicode-code-point offset.
- `record_path` (string): JSON Pointer to a stored value; empty selects the root.
- `registrant_id` (string): Optional native registrant scope.
- `row_sets` (array): Inline analytical sets; omit for all sets. Selection never limits acquisition, totals or SQL staging. Omitted sets remain available from a new call with another selection or staged tables. Continue w…
- `years` (array): Required explicit analytical year scope; sorted and deduplicated.

Output parameters:

- `activities` (array): Selected activities in this window; no money columns.
- `annual_ledgers` (array): Complete-year ledgers in this window; absent while collecting.
- `attribution` (string): Required verbatim attribution for LDA data.
- `attribution_basis` (string): Whole filings mentioning an issue; buckets overlap.
- `canvas_available` (boolean): SQL canvas support is enabled.
- `canvas_id` (string): Tenant-scoped canvas access token.
- `coverage` (object): Acquisition progress, independent of delivery.
- `cursor_expires_at` (string): Continuation expiry ISO timestamp.
- `dataset` (object): Complete SQL metadata on the first final window and its replay.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `describe_tool` (string): Inspect exact table schemas before SQL.
- `effective_filters` (object): Normalized effective scope.
- `error` (object): Present when the call failed. Absent on success.
- `firms` (array): Firm breakdowns in this window.
- `guidance` (string): Table names and dataframe instructions.
- `issue_code` (string): Requested issue membership code.
- `issue_codes` (array): Overlapping issue breakdowns in this window.
- `methodology` (object): Accounting limitations.
- `next_cursor` (string): Next acquisition or output window cursor.
- `notices` (array): Limitations and success notices.
- `offset` (integer): Final record delivery offset.
- `output_complete` (boolean): Whether all result rows have been delivered.
- `query_tool` (string): Query or retrieve materialized table rows.
- `raw_filings` (array): All acquired versions in this window, including selected versions.
- `record_handles` (array): Deferred complete parents.
- `record_window`: Lossless stored parent window.
- `records_deferred` (integer): Oversized parents available through handles.
- `records_returned` (integer): Complete records delivered in this window.
- `retrieval_tool` (string): Tool that retrieves this parent.
- `retrieved_at` (string): Retrieval ISO timestamp.
- `row_set_offsets` (object): Selected-set rows delivered or deferred before this window; others zero.
- `row_set_totals` (object): Exact all-set totals after acquisition completes.
- `selected_filings` (array): Complete selected filings in this window.
- `selections` (array): Version-selection decisions in this window.
- `snapshot_last_modified` (string): Upstream Last-Modified header.
- `snapshot_retrieved_at` (string): FARA snapshot retrieval timestamp.
- `snapshot_source_urls` (array): Official snapshot URLs.
- `source` (string): Official source system.
- `status` (string): Source acquisition status, separate from row delivery.
- `targeted_entities` (array): Targeted entities in this window.
- `total_records` (integer): Exact final record count when known.
- `truncated` (boolean): More data is available through next_cursor or record_handles; no source data was discarded.
- `years` (array): Explicit requested years.

### `uslobbying_search_lobbyists` (~389 tokens)

Uslobbying Search Lobbyists

Find lobbyists by name or registrant in mode search, then retrieve filing-scoped evidence with mode activity, lobbyist_id and filing_year. Pass an evidence filing_uuid to uslobbying_search_filings for the complete filing. Covered positions are disclosed text, not verified present employment. Activity mode checks the requested lobbyist locally. Follow next_cursor for all results.

Input parameters:

- `client_id` (string): Optional activity client relationship record ID from candidates[].id in uslobbying_get_client_profile resolve mode; candidates[].client_id is secondary.
- `covered_positions_only` (boolean): Activity only: require this lobbyist’s nonblank covered-position disclosure.
- `cursor` (string): Continue the original scope; other query fields may be omitted.
- `filing_year` (integer): Required report year in activity mode.
- `lobbyist_id` (string): Required in activity mode.
- `max_pages` (number): Source pages per call; positive integers clamp to five, default one for discovery, five for analysis.
- `mode` (string): search (default) finds identities by name or registrant; activity requires lobbyist_id and filing_year. Omit with cursor.
- `name` (string): Lobbyist identity name substring.
- `page_size` (number): Upstream rows per page; positive integers clamp to 25, default 25.
- `record_handle` (string): Tenant/tool-bound deferred record handle.
- `record_limit` (number): Maximum object entries or array items, clamped to 25; text fragments use the response byte budget.
- `record_offset` (integer): Key, item or Unicode-code-point offset.
- `record_path` (string): JSON Pointer to a stored value; empty selects the root.
- `registrant_id` (string): Registrant identity ID.
- `registrant_name` (string): Registrant identity name substring.

Output parameters:

- `attribution` (string): Required verbatim attribution for LDA data.
- `coverage` (object): Acquisition progress, independent of delivery.
- `cursor_expires_at` (string): Continuation expiry ISO timestamp.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `effective_filters` (object): Normalized effective scope.
- `error` (object): Present when the call failed. Absent on success.
- `evidence` (array): Matched filing-based participant evidence in activity mode.
- `lobbyists` (array): Complete identity records in search mode.
- `mode` (string): Resolved operation.
- `next_cursor` (string): Next acquisition or output window cursor.
- `notices` (array): Limitations and success notices.
- `offset` (integer): Final record delivery offset.
- `output_complete` (boolean): Whether all result rows have been delivered.
- `record_handles` (array): Deferred complete parents.
- `record_window`: Lossless stored parent window.
- `records_deferred` (integer): Oversized parents available through handles.
- `records_returned` (integer): Complete records delivered in this window.
- `retrieval_tool` (string): Tool that retrieves this parent.
- `retrieved_at` (string): Retrieval ISO timestamp.
- `snapshot_last_modified` (string): Upstream Last-Modified header.
- `snapshot_retrieved_at` (string): FARA snapshot retrieval timestamp.
- `snapshot_source_urls` (array): Official snapshot URLs.
- `source` (string): Official source system.
- `total_records` (integer): Exact final record count when known.
- `truncated` (boolean): More of the parent value remains available through record windows.

### `uslobbying_get_contributions` (~436 tokens)

Uslobbying Get Contributions

Retrieve complete semiannual LD-203 reports, contributions, PAC relationships and certifications, preserving original and amended reports. Child predicates must match the same item; full parent contribution lists and matched_item_indexes remain available. Report counts are not donation counts and no cross-report donation total is inferred.

Input parameters:

- `amount_max` (string): Inclusive local same-item maximum exact decimal USD; complete parent lists remain available.
- `amount_min` (string): Inclusive local same-item minimum exact decimal USD; complete parent lists remain available.
- `contribution_date_after` (string): Inclusive earliest item calendar date.
- `contribution_date_before` (string): Inclusive latest item calendar date.
- `contribution_type` (string): Official feca, he, me, ple or pic payment code.
- `contributor` (string): Case-insensitive literal contributor substring.
- `cursor` (string): Continue the original scope; other query fields may be omitted.
- `filing_period` (string): Semiannual period.
- `filing_year` (integer): Required first-call reporting year, 2008 through current UTC year.
- `honoree` (string): Case-insensitive literal honoree substring.
- `lobbyist_id` (string): Lobbyist filer ID.
- `lobbyist_name` (string): Lobbyist name upstream search.
- `max_pages` (number): Source pages per call; positive integers clamp to five, default one for discovery, five for analysis.
- `page_size` (number): Upstream rows per page; positive integers clamp to 25, default 25.
- `payee` (string): Case-insensitive literal payee substring.
- `record_handle` (string): Tenant/tool-bound deferred record handle.
- `record_limit` (number): Maximum object entries or array items, clamped to 25; text fragments use the response byte budget.
- `record_offset` (integer): Key, item or Unicode-code-point offset.
- `record_path` (string): JSON Pointer to a stored value; empty selects the root.
- `registrant_id` (string): Registrant ID.
- `registrant_name` (string): Registrant name upstream search.

Output parameters:

- `amendment_policy` (string): Amendments remain separate reports.
- `attribution` (string): Required verbatim attribution for LDA data.
- `coverage` (object): Acquisition progress, independent of delivery.
- `cursor_expires_at` (string): Continuation expiry ISO timestamp.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `effective_filters` (object): Normalized effective scope.
- `error` (object): Present when the call failed. Absent on success.
- `item_count_in_batch` (integer): Items in returned complete parent lists.
- `next_cursor` (string): Next acquisition or output window cursor.
- `notices` (array): Limitations and success notices.
- `offset` (integer): Final record delivery offset.
- `output_complete` (boolean): Whether all result rows have been delivered.
- `record_handles` (array): Deferred complete parents.
- `record_window`: Lossless stored parent window.
- `records_deferred` (integer): Oversized parents available through handles.
- `records_returned` (integer): Complete records delivered in this window.
- `report_count_in_batch` (integer): Complete parent reports returned.
- `reports` (array): Full parent reports and complete child lists.
- `retrieval_tool` (string): Tool that retrieves this parent.
- `retrieved_at` (string): Retrieval ISO timestamp.
- `snapshot_last_modified` (string): Upstream Last-Modified header.
- `snapshot_retrieved_at` (string): FARA snapshot retrieval timestamp.
- `snapshot_source_urls` (array): Official snapshot URLs.
- `source` (string): Official source system.
- `total_records` (integer): Exact final record count when known.
- `truncated` (boolean): More of the parent value remains available through record windows.

### `uslobbying_search_foreign_agents` (~328 tokens)

Search foreign agents

Search official FARA daily registrant or foreign-principal snapshots, or retrieve one registration principal, short-form or document collection. Follow cursors to pinned local windows; principal status differs from registrant status. Disclosure records do not establish wrongdoing or influence.

Input parameters:

- `country` (string): Exact represented country/location label, foreign-principal search only.
- `cursor` (string): Opaque continuation; original filters may be omitted or repeated unchanged.
- `detail` (string): Detail collection, default foreign_principals; unavailable in search mode.
- `entity` (string): Search entity, default registrants; unavailable in detail mode.
- `mode` (string): Search daily snapshots or fetch one registration detail collection; defaults to search.
- `name_contains` (string): Search-only literal case-insensitive token-AND match over entity names.
- `page_size` (number): Maximum records in one local output window; positive integers clamp to 25, default 25.
- `record_handle` (string): Opaque tenant/tool-bound deferred record handle; exclusive with source selectors and cursor.
- `record_limit` (number): Maximum object entries or array items, clamped to 25; text fragments use the response byte budget.
- `record_offset` (integer): Key, item or Unicode-code-point offset.
- `record_path` (string): JSON Pointer to a stored value; empty selects the root.
- `registration_number` (string): Lossless digit-string registration number, required for detail mode.
- `status` (string): Selected entity status, default active; documents require all.

Output parameters:

- `attribution` (string): Required verbatim attribution for LDA data.
- `coverage` (object): Acquisition progress, independent of delivery.
- `cursor_expires_at` (string): Continuation expiry ISO timestamp.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `detail` (string): Selected detail collection.
- `effective_filters` (object): Normalized effective scope.
- `entity` (string): Selected search entity.
- `error` (object): Present when the call failed. Absent on success.
- `mode` (string): Original acquisition mode.
- `next_cursor` (string): Opaque next local result window.
- `notices` (array): Limitations and success notices.
- `offset` (integer): Start position in the pinned result set.
- `output_complete` (boolean): Whether every matched parent has been delivered or deferred.
- `record_handles` (array): Retained oversized parents, excluded from full records delivered.
- `record_window`: Exact recursive window of a retained parent.
- `records` (array): Complete normalized parent records delivered in this window.
- `records_deferred` (integer): Oversized parents represented by handles.
- `records_returned` (integer): Full records delivered in this window.
- `retrieved_at` (string): Retrieval ISO timestamp.
- `snapshot_last_modified` (string): Upstream Last-Modified header.
- `snapshot_retrieved_at` (string): FARA snapshot retrieval timestamp.
- `snapshot_source_urls` (array): Official snapshot URLs.
- `source` (string): Official source system.
- `source_urls` (array): Official source URLs actually acquired.
- `status` (string): Effective selected entity status.
- `total_matches` (integer): Exact matched records in the pinned acquisition.
- `truncated` (boolean): More data is available through next_cursor, record_handles or record windows; no source data was discarded.

### `uslobbying_list_reference` (~227 tokens)

Uslobbying List Reference

List official issue codes, filing types, government entities, contribution types and countries, or explain identifiers, methodology and FARA rules. Optional filter performs case-insensitive literal token-AND matching across the complete vocabulary. Follow next_cursor for pinned result windows; retrieve oversized entries with this tool using record_handle and record_path. Countries include separately attributed LDA codes and FARA source labels; FARA labels are not guessed ISO codes.

Input parameters:

- `cursor` (string): Pinned continuation; omit original topic/filter or repeat them unchanged.
- `filter` (string): Every whitespace-separated token must occur literally in an entry.
- `record_handle` (string): Tenant/tool-bound deferred record handle.
- `record_limit` (number): Maximum object entries or array items, clamped to 25; text fragments use the response byte budget.
- `record_offset` (integer): Key, item or Unicode-code-point offset.
- `record_path` (string): JSON Pointer to a stored value; empty selects the root.
- `topic` (string): Vocabulary or explanatory topic; required on the first call.

Output parameters:

- `cursor_expires_at` (string): Absolute expiry of retained entries and continuations.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `entries` (array): Complete entries delivered in this pinned vocabulary window.
- `error` (object): Present when the call failed. Absent on success.
- `matched_entries` (integer): Entries matching every literal filter token.
- `next_cursor` (string): Opaque continuation of the pinned vocabulary.
- `notices` (array): Source limitations and empty-result recovery.
- `offset` (integer): Start position in the pinned filtered vocabulary.
- `output_complete` (boolean): Every matched entry has been delivered or deferred.
- `record_handles` (array): Oversized entries retrievable through this same tool.
- `record_window`: Exact recursive window of a deferred vocabulary entry.
- `records_deferred` (integer): Oversized entries retained behind handles.
- `records_returned` (integer): Complete entries delivered in this window.
- `retrieval_tool` (string): Tool used to retrieve deferred vocabulary entries.
- `retrieved_at` (string): Vocabulary retrieval timestamp.
- `source_urls` (array): Official source references.
- `topic` (string): Requested vocabulary.
- `total_entries` (integer): Entries before local filtering.
- `truncated` (boolean): More entries or deferred record values remain retrievable.

### `uslobbying_dataframe_query` (~177 tokens)

Query disclosure tables

Run one read-only SELECT over staged disclosure tables, materialize the complete result, then retrieve whole rows by result_table and next_offset without rerunning SQL. Inspect columns with uslobbying_dataframe_describe first.

Input parameters:

- `canvas_id` (string, required): Canvas token returned by a disclosure analytical tool.
- `offset` (integer): Canonical row offset for result_table, default zero.
- `register_as` (string): Fresh result table name for a new SQL call; omit for a generated name.
- `result_table` (string): Previously materialized result table; exclusive with sql and register_as.
- `row_limit` (number): Maximum whole rows in this response; positive integers clamp to 100, then to any lower provider ceiling.
- `sql` (string): One read-only SELECT; exclusive with result_table and offset.

Output parameters:

- `canvas_id` (string): Tenant-scoped canvas access token.
- `columns` (array): Complete result schema.
- `dataset` (object): Materialized dataset and routing.
- `delivery_limits` (object): Clamped controls for this call; an empty map means no clamp. Immediate cursor replay retains its original values.
- `describe_tool` (string): Inspect exact table schemas before SQL.
- `effective_row_limit` (integer): Effective row limit when a delivery or provider ceiling lowers the requested limit.
- `error` (object): Present when the call failed. Absent on success.
- `guidance` (string): Table names and dataframe instructions.
- `next_offset` (integer): Next undelivered row offset.
- `offset` (integer): Canonical-order starting row offset.
- `output_complete` (boolean): Whether this result has no remaining delivery rows.
- `query_tool` (string): Query or retrieve materialized table rows.
- `result_table` (string): Stable materialized result table.
- `row_count` (integer): Exact materialized result count.
- `row_order` (string): Delivery orders by all materialized values.
- `rows` (array): Whole JSON-safe rows.
- `rows_returned` (integer): Rows actually delivered.
- `truncated` (boolean): More materialized rows remain; continue with next_offset.

### `uslobbying_dataframe_describe` (~67 tokens)

Describe disclosure tables

Inspect exact staged table schemas, row counts, lifecycle, acquisition coverage and provenance before SQL.

Input parameters:

- `canvas_id` (string, required): Canvas token returned by an analytical disclosure tool.
- `table_name` (string): Existing table to inspect; omit for every table in this canvas.

Output parameters:

- `canvas_id` (string): Tenant-scoped canvas access token.
- `describe_tool` (string): Inspect exact table schemas before SQL.
- `error` (object): Present when the call failed. Absent on success.
- `guidance` (string): Table names and dataframe instructions.
- `query_tool` (string): Query or retrieve materialized table rows.
- `tables` (array): Complete table metadata, or an empty array for an empty canvas.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/us-lobbying#diagnostics

## Score history

- 2026-11-05: 75
- 2026-11-04: 75
- 2026-11-03: 74
- 2026-11-02: 74
- 2026-11-01: 73
- 2026-10-31: 73
- 2026-10-30: 72
- 2026-10-29: 72
- 2026-10-28: 72
- 2026-10-27: 71
- 2026-10-26: 71

## Common questions

### What is the io.github.cyanheads/us-lobbying-mcp-server server?

io.github.cyanheads/us-lobbying-mcp-server is listed in the public MCP registry as io.github.cyanheads/us-lobbying-mcp-server. Search US lobbying disclosures and foreign-agent registrations via MCP. This page covers its hosted endpoint (https://us-lobbying.caseyjhand.com/mcp).

### Is the io.github.cyanheads/us-lobbying-mcp-server server safe to use?

io.github.cyanheads/us-lobbying-mcp-server scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.cyanheads/us-lobbying-mcp-server server expose?

io.github.cyanheads/us-lobbying-mcp-server exposes 9 tools: uslobbying_search_filings, uslobbying_get_client_profile, uslobbying_get_issue_spending, uslobbying_search_lobbyists, uslobbying_get_contributions, and 4 more. Their descriptions and schemas cost roughly 3,021 tokens of context every time the server is loaded.

### Does the io.github.cyanheads/us-lobbying-mcp-server server require authentication?

No. We connected to io.github.cyanheads/us-lobbying-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.github.cyanheads/us-lobbying-mcp-server server still maintained?

io.github.cyanheads/us-lobbying-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the io.github.cyanheads/us-lobbying-mcp-server server?

VerifyMCP ran 13 checks on io.github.cyanheads/us-lobbying-mcp-server, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- Remote endpoint: https://us-lobbying.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/us-lobbying-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/us-lobbying.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/us-lobbying/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/us-lobbying.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-us-lobbying-mcp-server/us-lobbying
