{
  "markdown": "# sugra-api-mcp\n\n<!-- mcp-name: ai.sugra/api-mcp -->\n\n<p align=\"center\">\n  <img src=\"https://app.sugra.ai/images/brand/sugra-app-icon.svg\" alt=\"sugra.ai\" width=\"112\" height=\"112\" />\n</p>\n\n<p align=\"center\">\n  <a href=\"https://pypi.org/project/sugra-api-mcp/\"><img src=\"https://img.shields.io/pypi/v/sugra-api-mcp?label=PyPI&color=F5A623\" alt=\"PyPI\"></a>\n  <a href=\"https://pypi.org/project/sugra-api-mcp/\"><img src=\"https://img.shields.io/pypi/pyversions/sugra-api-mcp?label=Python\" alt=\"Python versions\"></a>\n  <a href=\"https://github.com/Sugra-Systems/sugra-api-mcp/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/Sugra-Systems/sugra-api-mcp?label=License\" alt=\"License\"></a>\n  <a href=\"https://smithery.ai/servers/sugra-systems/sugra-api\"><img src=\"https://smithery.ai/badge/sugra-systems/sugra-api\" alt=\"Smithery\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://chatgpt.com/plugins/plugin_asdk_app_6a33ce728e488191a82df247ab605e91\"><img src=\"https://img.shields.io/badge/OpenAI_Plugins_Directory-Install_plugin-F5A623?style=for-the-badge\" alt=\"Install Sugra API from the OpenAI Plugins Directory\"></a>\n</p>\n\n<p align=\"center\">\n  <sub>Published in the official OpenAI Plugins Directory. Available for ChatGPT and Codex.</sub>\n</p>\n\n**Give any AI agent access to 1,500+ data endpoints across markets, economics, companies, government, news, climate, maritime and entity screening - through one MCP server.**\n\nWorks with ChatGPT, Claude, Gemini, xAI, Cursor, VS Code and any MCP client.\n\nOfficial [Model Context Protocol](https://modelcontextprotocol.io) server for the [Sugra API](https://sugra.ai): one connector, a bundled endpoint catalog, and structured tool results with source attribution on every answer.\n\n## See it in action\n\nAn agent answering a real question end to end - resolving entities, pulling live snapshots and history, and citing the source and freshness on every number:\n\n![Compare NVIDIA, AMD and Intel over the past 12 months, answered live through the Sugra MCP](docs/media/sugra-mcp-demo-markets.gif)\n\nMore examples:\n\n**Macro research** - one prompt builds a full G7 inflation and policy-rate table, each cell dated and sourced, with the unavailable ones flagged rather than faked:\n\n![A G7 inflation and central bank policy rate table assembled live from the Sugra API](docs/media/sugra-mcp-demo-macro.gif)\n\n**Cross-domain snapshot** - Brent crude, marine weather and regional risk pulled together for a shipping desk, each with its source and timestamp:\n\n![A Red Sea shipping snapshot combining Brent crude, marine weather and hazard sourcing](docs/media/sugra-mcp-demo-shipping.gif)\n\n\n## What a session looks like\n\nHosted MCP transcript (the three composed tools shown here run on the hosted endpoint). Captured example - wording and figures vary by run and as new BLS data is published:\n\n```text\nUser: Where does US inflation stand, and how has it trended over the past year?\n\nresolve_entity(\"US inflation\")\n  -> macro indicator cpi_us (U.S. Bureau of Labor Statistics)\nget_snapshot(\"cpi_us\")\n  -> latest reading with freshness, provenance and quota cost\nget_timeseries(\"cpi_us\", metric=\"macro_series\", range=\"1y\")\n  -> 12 monthly points with an explicit downsampling flag\n\nAgent: US CPI printed 2.9% year over year in the latest release, down from\n3.5% twelve months earlier - a steady decline since spring.\nSource: U.S. Bureau of Labor Statistics via the Sugra API.\n```\n\nEvery tool result carries structured metadata - source attribution, freshness, and rate-limit cost - so agents can cite sources and budget requests instead of guessing.\n\n## How it works\n\n```mermaid\nflowchart LR\n    A[\"AI agent<br/>(ChatGPT, Claude, Gemini, xAI, IDEs)\"] --> B[\"Sugra MCP<br/>hosted: 11 tools / local: 8 tools\"]\n    B --> C[\"Sugra API<br/>1,500+ endpoints, 36 data domains\"]\n    C --> D[\"160+ primary sources<br/>markets, economics, government,<br/>news, climate, maritime\"]\n```\n\nBehind the gateway sits the Sugra API: 160+ primary sources - sovereign statistics agencies, central banks, intergovernmental bodies and more - feeding 1,500+ endpoints across 36 data domains. The server ships a bundled catalog of the full endpoint surface, so discovery (search, describe, toolsets) runs locally without network calls; only actual data requests hit the API.\n\n## What agents build with it\n\nSix workflow prompts ship with the server and turn these into one-click flows in clients that surface MCP prompts:\n\n- **Market and macro research** - \"Compare inflation and central bank policy rates across the G7.\" (`macro_briefing`)\n- **Equity snapshots with sources** - \"Where does NVIDIA stand today - price, profile, and market backdrop?\" (`market_snapshot`)\n- **Sanctions and compliance screening** - \"Screen this supplier and resolve its LEI identity.\" (`sanctions_screening`)\n- **Sector comparison** - \"Energy versus technology: valuations and flows side by side.\" (`sector_compare`)\n- **Climate, maritime and trade intelligence** - \"Red Sea shipping this week: chokepoint transits, crude price, and weather on the route.\" (`earth_conditions` plus the transport and commodities catalog)\n- **Source discovery** - \"What does the catalog offer for fixed income, and from which institutions?\" (`source_overview`)\n\nEvery answer carries source attribution and freshness metadata, so agents cite instead of guessing.\n\n## Hosted MCP (recommended)\n\nNo install. Point your client at the hosted Streamable HTTP endpoint:\n\n```\nhttps://app.sugra.ai/mcp\n```\n\n- 11 tools: the eight gateway tools plus three composed agent tools (`resolve_entity`, `get_snapshot`, `get_timeseries`)\n- OAuth sign-in through the claude.ai and ChatGPT connector UIs, or `Authorization: Bearer sugra_xxx_...` with an API key\n- In claude.ai: Settings -> Connectors -> Add custom connector\n- In ChatGPT: Settings -> Connectors -> Add MCP server\n\n## Local package\n\nRuns on your machine over stdio (or self-hosted HTTP) with an API key:\n\n```bash\npip install sugra-api-mcp\n```\n\n- Eight gateway tools\n- stdio for desktop clients and IDEs, Streamable HTTP for self-hosting\n- Authenticates with `SUGRA_API_KEY`\n\nGet a free API key at [app.sugra.ai/settings/billing](https://app.sugra.ai/settings/billing) (Free tier: 50 req/day).\n\n## Quick start\n\n```bash\npip install sugra-api-mcp\nexport SUGRA_API_KEY=sugra_xxx_...   # free key: app.sugra.ai/settings/billing\nsugra-api-mcp call quotes_symbol_price --params '{\"symbol\":\"AAPL\"}'\n```\n\nThe same call through an agent: connect the server to your client (next section) and ask \"What is AAPL trading at? Use Sugra.\" The agent finds `quotes_symbol_price` in the catalog and calls it with the symbol.\n\n## Connect your client\n\nSupported clients:\n\n- **Anthropic Claude**: Claude Desktop, Claude Code (CLI), claude.ai (web)\n- **OpenAI GPT**: ChatGPT (via MCP connector)\n- **Google Gemini**: Gemini CLI, Gemini Code Assist (VS Code + JetBrains)\n- **xAI**: Remote MCP Tools in xAI SDK and Responses API\n- **IDEs**: VS Code (native), Cursor, Zed, Cline, Continue.dev, Windsurf\n- **Custom agents**: anything built on the Python or TypeScript MCP SDK\n\n### Claude Desktop (stdio)\n\nAdd to `claude_desktop_config.json`:\n\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n- Linux: Claude Desktop has no Linux build. On Linux, `pip install sugra-api-mcp` and use Claude Code (CLI), an IDE client, or the hosted HTTP endpoint below.\n\n```json\n{\n  \"mcpServers\": {\n    \"sugra\": {\n      \"command\": \"sugra-api-mcp\",\n      \"env\": {\n        \"SUGRA_API_KEY\": \"sugra_xxx_yourkey...\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop. Sugra tools appear in the tools menu.\n\n### Claude Code (Anthropic CLI)\n\n```bash\nclaude mcp add sugra -- sugra-api-mcp\n# then set the env var that sugra-api-mcp reads\nexport SUGRA_API_KEY=sugra_xxx_...\n```\n\nOr edit `~/.claude/config.json` manually with the same shape as Claude Desktop above.\n\n### Usage with Gemini CLI\n\nGemini CLI reads MCP servers from `~/.gemini/settings.json` (user scope) or\n`.gemini/settings.json` in the project. For a local stdio install, add:\n\n```json\n{\n  \"mcpServers\": {\n    \"sugra\": {\n      \"command\": \"sugra-api-mcp\",\n      \"env\": {\n        \"SUGRA_API_KEY\": \"sugra_xxx_yourkey...\"\n      }\n    }\n  }\n}\n```\n\nIf the console script is not on `PATH`, use `\"command\": \"python\"` with\n`\"args\": [\"-m\", \"sugra_api_mcp\"]` instead. The equivalent Gemini CLI command\nis:\n\n```bash\ngemini mcp add --scope user -e SUGRA_API_KEY=sugra_xxx_yourkey... sugra sugra-api-mcp\n```\n\nOr connect to the hosted endpoint without installing the package:\n\n```bash\ngemini mcp add --scope user --transport http \\\n  --header \"Authorization: Bearer sugra_xxx_yourkey...\" \\\n  sugra https://app.sugra.ai/mcp\n```\n\nRun `gemini mcp list` to check the connection, then enter `/mcp` in an\ninteractive session to inspect the available tools. A local stdio connection\nshows the eight gateway tools in [Tool reference](#tool-reference); the hosted\nendpoint also shows the three [hosted-only agent tools](#hosted-only-agent-tools-appsugraaimcp).\nIf a local server does not connect from a new directory, review and trust that\nworkspace with `gemini trust` before retrying.\n\nThese examples were checked against the\n[Gemini CLI MCP documentation](https://github.com/google-gemini/gemini-cli/blob/main/docs/tools/mcp-server.md)\nand Gemini CLI v0.51.0.\n\n### Cursor, Zed, Cline, Continue.dev, Windsurf\n\nEach of these has an MCP settings file (typically `mcp.json` or equivalent) with the same stdio config shape as Claude Desktop.\n\n### ChatGPT\n\nChatGPT supports MCP through its connector UI. Use the hosted HTTP endpoint (below) since ChatGPT does not launch local stdio processes.\n\n### HTTP (claude.ai, ChatGPT, remote agents)\n\nHosted Streamable HTTP endpoint:\n\n```\nhttps://app.sugra.ai/mcp\n```\n\nAdd to claude.ai, ChatGPT, or any Streamable HTTP MCP client. Authenticate with `Authorization: Bearer sugra_xxx_...`.\n\nIn claude.ai: Settings -> Connectors -> Add custom connector.\nIn ChatGPT: Settings -> Connectors -> Add MCP server.\n\n## Tool reference\n\nThe local package exposes eight gateway tools. The hosted endpoint adds three composed analysis tools on top (see Hosted MCP above). The package exposes exactly eight tools:\n\n| Tool | Purpose |\n|---|---|\n| `fetch_data` | One-step: find best endpoint for a natural-language query and call it. Combines search + call in one round trip. |\n| `search_endpoints` | Search the bundled endpoint catalog. Runtime search does not fetch `/openapi.json`. |\n| `describe_endpoint` | Inspect an endpoint by `operation_id`, including path, method, parameters, required inputs, `agent_hints`, and `request_body_schema` for JSON-body POST operations. |\n| `call_endpoint` | Call a Sugra API operation by `operation_id`. Arbitrary path calls are no longer supported. |\n| `list_toolsets` | List catalog groups with endpoint counts and descriptions. |\n| `list_sources` | Show bundled catalog source metadata. |\n| `sugra_entity_screen` | Screen a name against sanctions and watchlists (Sugra Entity). |\n| `sugra_entity_lookup` | Composed entity lookup by identifier - `anchor` is `lei` or `vat`, plus the identifier `value`; returns registry identity + screening (Sugra Entity). |\n\n`call_endpoint` and `fetch_data` both support response shaping with `limit`, `fields`, and `include_raw`. Shaping works on enveloped (`{\"data\": ...}`) and envelope-less payloads alike; `fields` entries may use dotted paths into nested objects (`geo.city`), and `meta.shaped` reports what was actually applied (`fields_applied` / `fields_unmatched`, `limit_applied`) rather than echoing the request. `limit` bounds ONLY the top-level list - the envelope `data` list or a bare top-level array; lists nested inside records are never truncated, and `meta.shaped.limit_applied` says whether the bound took effect.\n\n`describe_endpoint` returns computed `agent_hints` per endpoint so agents can budget time and parallelism before calling:\n\n- `duration_class` - `fast` (under ~2s, snapshot-backed), `slow` (live upstream proxying, occasionally 15s+), or `heavy` (per-item upstream work, large batches can exceed the gateway timeout)\n- `max_concurrency` - advisory ceiling for parallel calls from one session\n- `bulk_cost` - on per-item bulk endpoints: 1 request credit per item in the request body (the API reports the total in the `X-RateLimit-Cost` response header)\n\n### Hosted-only agent tools (app.sugra.ai/mcp)\n\nThe hosted MCP endpoint at `https://app.sugra.ai/mcp` serves the same eight tools PLUS three composed agent tools that are not available on stdio or self-hosted installs:\n\n| Tool | Purpose |\n|---|---|\n| `resolve_entity` | Free text (ticker, company, indicator, coin, currency pair) to a canonical market or macro entity. Ambiguous matches return ranked candidates, never a silent pick. |\n| `get_snapshot` | Entity plus a named recipe to one composed current view with freshness, provenance, coverage, and billing blocks. Composed calls charge a fixed recipe cost (1-2 requests) from the daily quota. |\n| `get_timeseries` | Entity plus metric (`price`, `macro_series`, `etf_flows`) to a bounded series with an explicit downsampling flag. |\n\nThese three tools wrap an internal composed plane that requires an infrastructure credential available only on the hosted deployment. The tool code ships inside the package, but it is registered only by the hosted HTTP entry point and only when that credential is present - `pip install sugra-api-mcp` (stdio and self-hosted HTTP) always exposes the classic eight-tool gateway. Hosted-only examples in any documentation are labeled as such. For compliance entity lookups (LEI / VAT, sanctions screening) use `sugra_entity_lookup` and `sugra_entity_screen`, which work on every transport.\n\n## CLI\n\nServer startup is unchanged:\n\n```bash\nsugra-api-mcp\nsugra-api-mcp --transport streamable-http --port 8001\n```\n\nCatalog and gateway helpers:\n\n```bash\nsugra-api-mcp doctor\nsugra-api-mcp list-toolsets\nsugra-api-mcp search \"NASDAQ futures\"\nsugra-api-mcp describe cot_financial\nsugra-api-mcp call quotes_symbol_price --params '{\"symbol\":\"AAPL\"}'\n```\n\n## Environment variables\n\nUser-facing configuration for local installs, MCP clients, Docker stdio, and\ndirectory sandboxes (for example Glama Try in Browser). Set only this:\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `SUGRA_API_KEY` | For API calls | - | Your Sugra API key (`sugra_...`). Get a free key at [app.sugra.ai/settings/billing](https://app.sugra.ai/settings/billing) (Free tier: 50 req/day). Not needed to start the server: catalog tools (`search_endpoints`, `describe_endpoint`, `list_toolsets`, `list_sources`) work without it; API-calling tools return a structured `missing_api_key` error until it is set. In HTTP mode with a client Bearer token this is only a fallback. |\n\nOptional overrides (leave unset unless you need them):\n\n| Variable | Default | Description |\n|---|---|---|\n| `SUGRA_API_BASE` | `https://sugra.ai` | Override the Sugra API base URL (self-hosted or beta API only). |\n| `SUGRA_TIMEOUT` | `30` | Downstream HTTP timeout in seconds for calls from this server to the Sugra API. |\n\nOperator-only settings for self-hosted Streamable HTTP (reverse proxy CORS/hosts,\nOAuth authorization-server wiring, and shared secrets) are documented in\n[docs/self-hosting.md](docs/self-hosting.md). Do not put operator secrets into\npublic directory sandboxes.\n\n### HTTP transport with OAuth\n\nWhen running with `--transport streamable-http` the server allows unauthenticated MCP discovery requests (`initialize`, `notifications/initialized`, `tools/list`, `resources/list`, `prompts/list`, and `ping`) so ChatGPT Apps and other mixed-auth clients can discover tool metadata. Tool calls still require `Authorization: Bearer ...`. Two token formats are accepted:\n\n- Raw API key (`sugra_...`) - passed through as the downstream `x-api-key`. Compatible with earlier local API-key setups.\n- OAuth JWT - signature verified against the issuer's JWKS. The audience must match `https://app.sugra.ai/mcp`, the token must include `sugra:read`, and hosted access is validated against APP before resolving the user's primary API key. Successful hosted OAuth requests update MCP connection activity in APP.\n\nMost users should use the hosted endpoint `https://app.sugra.ai/mcp` instead of\nself-hosting OAuth. If you run your own HTTP process, see\n[docs/self-hosting.md](docs/self-hosting.md).\n\n## Timeouts and the error contract\n\n`SUGRA_TIMEOUT` caps each downstream HTTP call from this server to the Sugra API (default 30 seconds). It is one link in a longer chain; when a tool call fails, `elapsed_ms` in the error payload tells you which link cut it:\n\n```\nMCP client (agent harness)         own tool timeout, often 60-180s, client-controlled\n  -> hosted proxy (app.sugra.ai)   86400s, effectively unlimited\n    -> this server (httpx)         SUGRA_TIMEOUT, default 30s\n      -> Sugra API -> upstreams    15-60s per upstream call, server-side\n```\n\nTool failures return structured JSON instead of raising, so agents can pick a retry strategy:\n\n| `error` value | Meaning | Retry strategy |\n|---|---|---|\n| `upstream_timeout` | No response within `SUGRA_TIMEOUT` (`elapsed_ms` close to `timeout_s` x 1000) | Retry once: the aborted attempt usually completes server-side and warms upstream caches. Then narrow the request (smaller batch, tighter filters). |\n| `upstream_connect_error` | Could not reach the Sugra API (DNS failure, connection refused) | Retry after a short delay. |\n| `upstream_transport_error` | Connection dropped mid-request | Retry once. |\n| free-text string + `status_code` | The API answered with HTTP 4xx/5xx; `retry_after` included when the API sent a Retry-After header | Honor `retry_after` for 429/503; fix the request for 4xx. |\n| `tool_execution_failed` | Unexpected failure inside the gateway (`exception_type` included) | Report if persistent. |\n\nAll error payloads carry `elapsed_ms`. `url` is present on transport and HTTP errors (not on `tool_execution_failed`, which can fire before a URL exists). On the three transport errors `status_code` is `null` (no HTTP status was received) - consumers comparing `status_code` numerically should guard for that. If a tool call instead fails with a bare client-side message and no structured JSON, the timeout fired in your agent harness above this server: raise the client's tool timeout, not `SUGRA_TIMEOUT`.\n\n## Examples\n\nAsk Claude:\n\n- \"Search Sugra endpoints for NASDAQ futures.\"\n- \"Describe the `cot_financial` operation.\"\n- \"Call `quotes_symbol_price` with symbol AAPL and return only symbol and price.\"\n- \"List available Sugra toolsets.\"\n\n## Troubleshooting\n\n**Looking for `get_market_price`, `get_macro_indicator`, or `get_news`?** Those curated tool names appear in some older directory listings and never shipped in this package - use `fetch_data` for one-step natural-language calls or `search_endpoints` plus `call_endpoint` for explicit routing.\n\n\n**`missing_api_key` in tool responses**\n\nThe server starts and lists its tools without a key, but API-calling tools (`call_endpoint`, `fetch_data`, the entity tools) return `{\"error\": \"missing_api_key\"}` until the server can find one. Depending on how you run it:\n- As an MCP tool from your client (Claude, ChatGPT, Gemini, xAI, IDE, etc.): check the `env` block in your MCP config file. Value should be a full key like `sugra_ao1_...`, not empty and not wrapped in extra quotes.\n- Shell / CI: `export SUGRA_API_KEY=sugra_...` before running `sugra-api-mcp`.\n- HTTP mode: set via `.env` or systemd `EnvironmentFile`, not the shell.\n\n`sugra-api-mcp doctor` reports whether the key is visible to the process.\n\n**`401 Unauthorized` or `403 Forbidden` in tool responses**\n\nKey accepted but rejected. Common causes:\n- Key was regenerated in [app.sugra.ai/settings/billing](https://app.sugra.ai/settings/billing) and your config still has the old one.\n- Typo - key contains only lowercase letters and digits, no spaces, no trailing newlines.\n- Free tier was deactivated. Sign in to verify status.\n\n**`429 Too Many Requests`**\n\nHit your plan's daily limit. Response headers include `X-RateLimit-Reset` with the UTC timestamp when the counter resets (midnight UTC). Upgrade your plan at [app.sugra.ai/settings/billing](https://app.sugra.ai/settings/billing).\n\n**`Invalid Host header`** (only if self-hosting HTTP mode)\n\nFastMCP has DNS rebinding protection for public hostnames behind a reverse\nproxy. See [docs/self-hosting.md](docs/self-hosting.md) for the allowed-hosts\nsetting.\n\n**Tool result truncated with `meta.truncated` notice**\n\nSome endpoints return very large payloads (global wildfires, full table catalogs). The client enforces the MCP 25k token limit - when hit, the data list is trimmed and a retry hint appears in `meta.truncated.retry_hint`. Add narrower filters (country, date range, `limit`) to get the full result.\n\n**`Python version 3.11 or higher is required`**\n\nsugra-api-mcp requires Python 3.11+. Check: `python --version`. If you have 3.10 or older:\n- Ubuntu: install Python 3.11 or newer from your distribution packages or the deadsnakes PPA.\n- macOS: `brew install python@3.11`\n- Windows: download from [python.org](https://www.python.org/downloads/)\n\nThen recreate your venv.\n\n**Hosted `app.sugra.ai/mcp` returns 5xx**\n\nThe hosted endpoint can briefly restart after deploys. Wait 60 seconds and retry. If persistent, email support@sugra.systems.\n\n**Debugging tool calls locally**\n\nRun with stdio and log JSON-RPC messages:\n```bash\nSUGRA_API_KEY=sugra_... sugra-api-mcp 2>&1 | tee mcp-debug.log\n```\nSend manual JSON-RPC from a second terminal using `nc` or an MCP inspector.\n\n## Development\n\n```bash\ngit clone https://github.com/Sugra-Systems/sugra-api-mcp\ncd sugra-api-mcp\npip install -e \".[dev,http]\"\nexport SUGRA_API_KEY=sugra_...\npython -m sugra_api_mcp  # stdio mode\npython -m sugra_api_mcp --transport streamable-http --port 8001  # HTTP mode\npython scripts/build_endpoint_catalog.py  # rebuild bundled catalog from sibling API openapi.json\n```\n\nRun tests:\n\n```bash\npytest\n```\n\n## Docker\n\nBuild the image from the repository root:\n\n```bash\ndocker build -t sugra-api-mcp .\n```\n\nRun in stdio mode (the default entrypoint) for MCP clients that spawn a local process:\n\n```bash\ndocker run -i --rm -e SUGRA_API_KEY=sugra_... sugra-api-mcp\n```\n\nRun the Streamable HTTP transport on port 8001 with Docker Compose:\n\n```bash\nexport SUGRA_API_KEY=sugra_...\ndocker compose up -d\n```\n\nThen point your MCP client at `http://localhost:8001/mcp`. The compose service\npasses `SUGRA_API_KEY` and the optional overrides (`SUGRA_API_BASE`,\n`SUGRA_TIMEOUT`) from your shell when set, and checks container health against\n`http://localhost:8001/health`. Reverse-proxy and OAuth operator settings are\ndocumented in [docs/self-hosting.md](docs/self-hosting.md).\n\nA note on auth: no environment variable is baked into the image and none is\nrequired for the container to start. In HTTP mode clients authenticate per\nrequest with `Authorization: Bearer sugra_...`, so `SUGRA_API_KEY` on the\ncontainer is only a fallback for requests without a Bearer token.\n\n## License\n\nMIT © 2026 Sugra Systems, Inc.\n",
  "bytes": 23158,
  "sha": "0f43026fd055768f6cd8b23a2008eaf10bd3ab05720281f39431732c69554eb3",
  "repo_slug": "sugra-systems/sugra-api-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_sugra_api_mcp_61a0d969/readme"
}