← Sugra APICONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Sugra API
Snapshot Sep 30, 2026 · 23:16 UTC · version 1.0.1
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"description": "Find the right Sugra operation and call it over HTTPS or MCP. Use when the path or operation_id is unknown, before guessing parameters, or after a catalog miss. Confirm details on https://docs.sugra.ai. Do not invent routes.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 226
}
],
"name": "discover-and-call",
"skill_md_contents": "---\nname: discover-and-call\ndescription: Find the right Sugra operation and call it over HTTPS or MCP. Use when the path or operation_id is unknown, before guessing parameters, or after a catalog miss. Confirm details on https://docs.sugra.ai. Do not invent routes.\nlicense: MIT\n---\n\n# Discover and call\n\nDo not invent paths or `operation_id`s. Confirm the operation on https://docs.sugra.ai (search or Ask AI, then the endpoint page). Two complete loops, same API.\n\n## HTTP loop\n\n1. If the path is already known, skip to step 4 after confirming it on docs.sugra.ai.\n2. Search https://docs.sugra.ai. Machine companion: `GET https://sugra.ai/openapi.json`. Coarse map: `GET /services`, `GET /sources`.\n3. Read parameters and, for POST, the request body. Required names come from docs or the spec.\n4. Call `https://sugra.ai` with `x-api-key`. GET uses query params. POST uses JSON body plus any path or query params the spec lists.\n5. Parse `{data, meta}`. Cite source and `data_time`. Read `X-RateLimit-Remaining`.\n\n```\nGET https://sugra.ai/api/v1/etf/sectors/relative-strength?window=1m\nx-api-key: sugra_...\n```\n\n## MCP loop\n\nWorks on hosted (11 tools) and stdio (8 tools). Do not call hosted-only names on stdio.\n\n1. `search_endpoints(query=..., toolset=None, source=None, limit=10)`. Unknown `toolset` / `source` returns `unknown_toolset` / `unknown_source` with the valid set, not an empty hit list.\n2. Pick an `operation_id` from `results`. Confirm it on docs.sugra.ai.\n3. `describe_endpoint(operation_id=...)` - params, `request_body_schema` on POST, `agent_hints` (`duration_class`, `max_concurrency`, `bulk_cost`).\n4. `call_endpoint(operation_id=..., params={...}, body=...)`.\n\n`fetch_data(query=...)` is a one-shot. If it misses, use the four-step loop. `list_toolsets` and `list_sources` (resources `sugra://catalog/domains`, `sugra://catalog/sources`) are the map, not the query.\n\nShaping on `call_endpoint` / `fetch_data`: `limit`, `fields` (dotted paths), `include_raw`. `limit` bounds only the top-level list. `meta.shaped` reports what applied.\n\nHosted only: `resolve_entity`, `get_snapshot`, `get_timeseries`. LEI/VAT and sanctions on every transport: `sugra_entity_lookup`, `sugra_entity_screen`.\n\nSix MCP prompts (`market_snapshot`, `macro_briefing`, `sanctions_screening`, `sector_compare`, `earth_conditions`, `source_overview`) are recipes over the eight gateway tools. They are not the catalog.\n\n## Misses\n\nA miss is not \"Sugra has no data\". Search docs.sugra.ai. Widen the query. Drop a bad MCP `toolset`/`source` filter. If MCP search still misses, fetch live `/openapi.json` (the wheel catalog can lag), then HTTP-call if the spec has it.\n\nDo not add per-endpoint MCP tools to skip this loop.\n\n## Timeouts\n\n30 seconds covers most GETs. Bulk or live-upstream POSTs can run longer. MCP `agent_hints.duration_class` is the budget hint. A timeout is not empty data.\n"
}SHA-256 of public snapshot: 7d4e92c8fcac78170e920aa5494b6b7748e936ccc5d990fe9087033a87bdc9f2