# io.github.bch1212/pubrecords

> US public-records intelligence for AI agents — companies, SEC, courts, spending, licenses.

- name: io.github.bch1212/pubrecords
- version: 0.1.0
- connection class: R1 (autonomous)
- trust: 90/100
- quality: 73/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.bch1212%2Fpubrecords
- tools: https://api.protogrid.dev/v1/servers/io.github.bch1212%2Fpubrecords/tools

**An agent can connect on its own if it already holds `X_API_KEY`, `X_API_KEY`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "pubrecords": {
      "type": "http",
      "url": "https://mcp-pubrecords-production.up.railway.app/mcp/",
      "headers": {
        "X-API-Key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  }
}
```

Placeholders to fill: `${X_API_KEY}`, `${X_API_KEY}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 65
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-164d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: mcp_search_companies (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); mcp_get_company_details (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); mcp_search_sec_filings (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,464 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 10 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 10, about 1,464 tokens to load them all
- tool set hash: bf0d02c617ee6c0c1397f5f703a33f62
- tools last changed: 2026-10-01T16:41:46.303Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.bch1212/pubrecords.svg)](https://protogrid.dev/servers/io.github.bch1212/pubrecords)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-01 `mcp_search_licenses` changed (description)
  - before: Search professional / business licenses (NPI + FCC, more sources roadmap). Args: entity_name: Licensee name. license_type: 'npi' | 'medical' | 'fcc' | 'radio' | 'all'. state: 2-letter state code.
  - after: Search professional / business licenses (NPI + FCC, more sources roadmap). Args: entity_name: Licensee name. license_type: 'npi' | 'medical' | 'fcc' | 'radio' | 'all'. state: 2-letter state code.
- 2026-10-01 `mcp_verify_entity` changed (description)
  - before: Cross-reference an entity across multiple sources and score confidence. Args: name: Entity name to verify. state: Optional 2-letter state code for jurisdiction filtering.
  - after: Cross-reference an entity across multiple sources and score confidence. Args: name: Entity name to verify. state: Optional 2-letter state code for jurisdiction filtering.
- 2026-10-01 `mcp_get_ucc_filings` changed (description)
  - before: UCC lien lookup. (Roadmap; returns not_implemented per state.) Args: debtor_name: Name of the debtor. state: 2-letter state code.
  - after: UCC lien lookup. (Roadmap; returns not_implemented per state.) Args: debtor_name: Name of the debtor. state: 2-letter state code.
- 2026-10-01 `mcp_lookup_npi` changed (description)
  - before: Look up healthcare providers in the NPPES NPI registry. Args: name: Provider individual or organization name. specialty: Taxonomy description (e.g. 'Internal Medicine'). state: 2-letter state code. limit: Max results (1-200, default 25).
  - after: Look up healthcare providers in the NPPES NPI registry. Args: name: Provider individual or organization name. specialty: Taxonomy description (e.g. 'Internal Medicine'). state: 2-letter state code. limit: Max results (1-200, default 25).
- 2026-10-01 `mcp_lookup_federal_spending` changed (description)
  - before: Search USASpending.gov for awards (contracts + grants). Args: recipient_name: Award recipient name. agency: Awarding agency name (e.g. 'Department of Defense'). year: Fiscal year (e.g. 2024). limit: Max results (1-100, default 25).
  - after: Search USASpending.gov for awards (contracts + grants). Args: recipient_name: Award recipient name. agency: Awarding agency name (e.g. 'Department of Defense'). year: Fiscal year (e.g. 2024). limit: Max results (1-100, default 25).
- 2026-10-01 `mcp_search_court_cases` changed (description)
  - before: Search federal court cases via CourtListener (RECAP). Args: party_name: Plaintiff or defendant name. court: CourtListener court id (e.g. 'nyed', 'txsd'). date_from: Earliest filing date (YYYY-MM-DD). limit: Max results (1-50, default 25).
  - after: Search federal court cases via CourtListener (RECAP). Args: party_name: Plaintiff or defendant name. court: CourtListener court id (e.g. 'nyed', 'txsd'). date_from: Earliest filing date (YYYY-MM-DD). limit: Max results (1-50, default 25).
- 2026-10-01 `mcp_get_sec_filing` changed (description)
  - before: Fetch metadata + index URL for one SEC filing by accession number. Args: accession_number: EDGAR accession number (e.g. '0001193125-21-000001').
  - after: Fetch metadata + index URL for one SEC filing by accession number. Args: accession_number: EDGAR accession number (e.g. '0001193125-21-000001').
- 2026-10-01 `mcp_search_sec_filings` changed (description)
  - before: Search SEC EDGAR full-text for filings. Args: company_name: Issuer name or keyword. form_type: Filing form (e.g. '10-K', '10-Q', '8-K'). date_from: Earliest filing date (YYYY-MM-DD). limit: Max results (1-100, default 25).
  - after: Search SEC EDGAR full-text for filings. Args: company_name: Issuer name or keyword. form_type: Filing form (e.g. '10-K', '10-Q', '8-K'). date_from: Earliest filing date (YYYY-MM-DD). limit: Max results (1-100, default 25).
- 2026-10-01 `mcp_get_company_details` changed (description)
  - before: Fetch officers, agent, and filing history for a known company. Args: company_id: OpenCorporates company number. jurisdiction: Jurisdiction code (e.g. 'us_de', 'us_ca').
  - after: Fetch officers, agent, and filing history for a known company. Args: company_id: OpenCorporates company number. jurisdiction: Jurisdiction code (e.g. 'us_de', 'us_ca').
- 2026-10-01 `mcp_search_companies` changed (description)
  - before: Search US business entities by name (OpenCorporates). Args: name: Company or trade name to search for. state: 2-letter US state code (e.g. 'CA') to narrow jurisdiction. status: Filter by current status (e.g. 'active', 'dissolved'). limit: Max results (1-100, default 25).
  - after: Search US business entities by name (OpenCorporates). Args: name: Company or trade name to search for. state: 2-letter US state code (e.g. 'CA') to narrow jurisdiction. status: Filter by current status (e.g. 'active', 'dissolved'). limit: Max results (1-100, default 25).

Full history: https://api.protogrid.dev/v1/servers/io.github.bch1212%2Fpubrecords/changes

## Remotes

- https://mcp-pubrecords-production.up.railway.app/mcp/ (streamable-http, auth api_key ${X_API_KEY}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (10)

- `mcp_get_company_details`: Fetch officers, agent, and filing history for a known company.

        Args:
            company_id: OpenCorporates company number.
            jurisdiction: Jurisdiction code (e.g. 'us_de', 'us_ca').
        
- `mcp_get_sec_filing`: Fetch metadata + index URL for one SEC filing by accession number.

        Args:
            accession_number: EDGAR accession number (e.g. '0001193125-21-000001').
        
- `mcp_get_ucc_filings`: UCC lien lookup. (Roadmap; returns not_implemented per state.)

        Args:
            debtor_name: Name of the debtor.
            state: 2-letter state code.
        
- `mcp_lookup_federal_spending`: Search USASpending.gov for awards (contracts + grants).

        Args:
            recipient_name: Award recipient name.
            agency: Awarding agency name (e.g. 'Department of Defense').
            year: Fiscal year (e.g. 2024).
            limit: Max results (1-100, default 25).
        
- `mcp_lookup_npi`: Look up healthcare providers in the NPPES NPI registry.

        Args:
            name: Provider individual or organization name.
            specialty: Taxonomy description (e.g. 'Internal Medicine').
            state: 2-letter state code.
            limit: Max results (1-200, default 25).
        
- `mcp_search_companies`: Search US business entities by name (OpenCorporates).

        Args:
            name: Company or trade name to search for.
            state: 2-letter US state code (e.g. 'CA') to narrow jurisdiction.
            status: Filter by current status (e.g. 'active', 'dissolved').
            limit: Max results (1-100, default 25).
        
- `mcp_search_court_cases`: Search federal court cases via CourtListener (RECAP).

        Args:
            party_name: Plaintiff or defendant name.
            court: CourtListener court id (e.g. 'nyed', 'txsd').
            date_from: Earliest filing date (YYYY-MM-DD).
            limit: Max results (1-50, default 25).
        
- `mcp_search_licenses`: Search professional / business licenses (NPI + FCC, more sources roadmap).

        Args:
            entity_name: Licensee name.
            license_type: 'npi' | 'medical' | 'fcc' | 'radio' | 'all'.
            state: 2-letter state code.
        
- `mcp_search_sec_filings`: Search SEC EDGAR full-text for filings.

        Args:
            company_name: Issuer name or keyword.
            form_type: Filing form (e.g. '10-K', '10-Q', '8-K').
            date_from: Earliest filing date (YYYY-MM-DD).
            limit: Max results (1-100, default 25).
        
- `mcp_verify_entity`: Cross-reference an entity across multiple sources and score confidence.

        Args:
            name: Entity name to verify.
            state: Optional 2-letter state code for jurisdiction filtering.
        
