# Belfort Data

> Figures from SEC filings; every figure links to its filing; error rates published. API key required.

- name: xyz.belfortagent/belfort-data
- version: 1.0.0
- connection class: R1 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 82/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/xyz.belfortagent%2Fbelfort-data
- tools: https://api.protogrid.dev/v1/servers/xyz.belfortagent%2Fbelfort-data/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": {
    "belfort-data": {
      "type": "http",
      "url": "https://api.belfortagent.xyz/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  }
}
```

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

## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-4d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 82/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 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: 88 (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
- pass `tools.annotations`: 14 of 14 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_statements (openWorldHint); get_earnings_release (openWorldHint); status (openWorldHint); …
- pass `tools.token_cost`: about 3,316 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

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

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 0 of the 7 days needed

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

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

- tools: 14, about 3,316 tokens to load them all
- tool set hash: b098cca720c45943b5bcfe3c1b1309a6
- badge: [![protogrid quality](https://protogrid.dev/badge/xyz.belfortagent/belfort-data.svg)](https://protogrid.dev/servers/xyz.belfortagent/belfort-data)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://api.belfortagent.xyz/mcp (streamable-http, auth api_key ${X_API_KEY}, reachable true, uptime30d 1)

## Packages

_none_

## Tools (14)

- `get_company`: One company by ticker or CIK. Costs 1 credit. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_earnings_release`: One 8-K Item 2.02 earnings release with its plain-text exhibit body. Costs 5 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_filings`: Filings list from SEC submissions, newest first. One page only via limit/cursor. Costs 3 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_financials`: Normalized core financials from printed statement lines (published fields only), newest period first. One page via limit/cursor. Costs 1 credit. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_form13f`: Form 13F holdings for a manager CIK. value_unit is thousands_usd or usd; ticker is null unless proven. One page only. Not part of the free demo: charged even for demo companies. Costs 3 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_holders`: Who reported holding this issuer on Form 13F for one period (newest by default). Top 25 by default; page the full list. About 35% of 13F rows lack dual-evidence CIK links and are left out. Costs 3 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_insider_trades`: Form 3/4/5 insider transactions for an issuer, newest first. Blank price is null. One page only via limit/cursor. Costs 3 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_macro`: One official macro series document (BLS, Treasury par yields, Fed H.15). Unknown series are refused. Costs 1 credit. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_metrics`: Key metrics for a company, newest period first. Unknown query parameters are refused. Costs 1 credit. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_ownership`: Schedule 13D/13G reporting-owner records for an issuer, newest filing first. Structured XML filings from 2024-12-18 only. Costs 3 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_segments`: Single-axis product, geographic and business-segment revenue (OperatingSegments folded in). Multi-axis and expense lines are not served. One page via limit/cursor. Costs 3 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `get_statements`: Statements as filed, one document per filing and statement, newest filing first. Costs 3 credits. One page only: pass `limit` (1–20, default 4) and `cursor` from `meta.next_cursor`. Do not assume every page is fetched. A typical page of 4 documents is about 45 KB (median in the pilot sample); large pages stay under the API document budget (~4 MB). A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `list_earnings_releases`: 8-K Item 2.02 press-release exhibits for an issuer, newest filed first. List items omit text (a document page). Titles may be null. One page via limit/cursor; optional from/to on filed. Costs 3 credits. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
- `status`: Data age for metrics, statements, ownership, and macro. Costs 0 credits. Authenticated on the hosted connector like every other tool; the underlying /v1/status route itself needs no key. A figure can be withheld (null/absent beats a guess). A figure can change or disappear when a later filing arrives; figures are not versioned. Read `adjustments` for extractor decisions beyond copying one filed figure. This is filing data, not investment advice.
