{
  "name": "fermi",
  "description": "Calibrated probability ranges for forecasting questions, with the assumptions behind them.",
  "version": "0.1.0",
  "transport": {
    "streamable_http": {
      "url": "https://stag-fermi.kromatic.com/mcp",
      "status": "live",
      "auth": "bearer",
      "note": "Real MCP Streamable-HTTP transport (recommended). Connect with the mcp Python SDK or any Streamable-HTTP client. Authenticate with an opaque bearer token: 'Authorization: Bearer fmi_pat_...' (or 'fmi_oat_...'). One header authenticates every tool call. Mint a token via POST /api/v1/tokens."
    },
    "sse": {
      "url": "https://stag-fermi.kromatic.com/mcp/sse/",
      "messages_url": "https://stag-fermi.kromatic.com/mcp/sse/messages/",
      "status": "live",
      "note": "Real MCP SSE-transport server. Connect with the mcp Python SDK or any MCP client. SSE tool calls don't carry per-call HTTP headers, so pass api_key as an argument to the estimate tool instead of a bearer."
    },
    "http": {
      "url": "https://stag-fermi.kromatic.com/mcp/tools",
      "call_url": "https://stag-fermi.kromatic.com/mcp/tools/estimate",
      "note": "HTTP adapter mirroring the MCP tool contract. For MCP-native clients, prefer the streamable_http transport above."
    }
  },
  "auth": {
    "type": "api_key",
    "header": "X-API-Key",
    "bearer_note": "The MCP Streamable-HTTP transport at /mcp additionally accepts opaque 'Authorization: Bearer fmi_pat_/fmi_oat_' tokens minted via POST /api/v1/tokens. Omitting credentials uses the anonymous tier unless the server rejects anonymous MCP calls.",
    "signup_url": "https://stag-fermi.kromatic.com/api/v1/accounts",
    "note": "POST /api/v1/accounts with no body to create an account and receive an API key (3 starter credits).",
    "channel_attribution_note": "Directories/registries may tag the arrivals they send by passing an identifiable marker as the 'X-Fermi-Channel' header or a '?channel=' (alias '?ref=') query param on the first call. Optional; affects nothing about the response. Authenticated arrivals AND anonymous MCP arrivals (the first call most new users make) are both attributed, including a per-platform classification (Claude.ai/ChatGPT/grok.com connector, or other)."
  },
  "tools": [
    {
      "name": "estimate",
      "title": "Create new estimate",
      "description": "Cost: spends quota. Creates a NEW calibrated probability distribution for a natural-language question. Anonymous callers get a small free tier-1 allowance per UTC day; with an account it debits credits and reports the amount as credits_charged. Call tools/list on /mcp for the exact, configured numbers."
    },
    {
      "name": "feedback",
      "title": "Send feedback to the Fermi team",
      "description": "Cost: free. Submit feedback, a feature request, or a bug report to the Fermi team."
    },
    {
      "name": "get_estimate",
      "title": "Read estimate",
      "description": "Cost: free. Polling never spends quota or credits. Reads the status/result of a previously requested (tier-3 async) estimate by id."
    },
    {
      "name": "buy_credits",
      "title": "Buy Fermi credits",
      "description": "Cost: charges the saved card $0.50 per credit (see GET /api/v1/billing/pricing). Purchases credits using a saved payment method (off-session)."
    },
    {
      "name": "whoami",
      "title": "Check account and quota",
      "description": "Cost: free. Checking never spends quota or credits, and never consumes an anonymous estimate. Reports who you are to Fermi (anonymous or account), what a call will cost, the credit balance or remaining free anonymous allowance, the tier table, the per-credit price, and an account's last 10 credit transactions. Works anonymously."
    }
  ],
  "docs": {
    "quickstart": "https://stag-fermi.kromatic.com/llms.txt",
    "full": "https://stag-fermi.kromatic.com/agents.md",
    "openapi": "https://stag-fermi.kromatic.com/openapi.json",
    "swagger": "https://stag-fermi.kromatic.com/docs"
  }
}
