# ASX Short Position Report API > Daily processed ASIC short-selling data for the Australian market: full snapshot, deterministic risk scores, 60-day percentiles, sector/market-cap enrichment, and an AI narrative + structured risk assessment per flagged stock. ## Overview This API turns the official (public) ASIC short-selling registry into a ready-to-use feed for trading bots and agents. It does the processing for you: anomaly flagging, composite risk scoring, historical percentile ranking, market-cap / squeeze-probability enrichment, and a daily AI-written market summary plus structured per-ticker assessment. - Data source: Official ASIC Short Positions Registry (public data, T+4 reporting lag). - Access: free, no authentication required. - Base URL: https://asic-short-position-processor.flare-oracle.workers.dev ## Key endpoints - GET /api/v1/openapi.json — Machine-readable OpenAPI 3.1 contract. - GET /llms.txt — This file. - GET /api/v1/asic/latest — Latest full report: market_data, anomaly_matrix, risk_narrative, risk_assessment. - GET /api/v1/asic/dates — All archived report dates, newest first (free). - GET /api/v1/asic/status — Service status: data freshness, next scheduled run, archive count (free, no auth). - GET /api/v1/asic/latest/narrative — Latest AI market summary as plain text. - GET /api/v1/asic/latest/assessment — Latest structured per-ticker assessment. - GET /api/v1/asic/report/{date} — Archived full report for a date, YYYY-MM-DD. - GET /api/v1/asic/report/{date}/narrative — Archived narrative. - GET /api/v1/asic/report/{date}/assessment — Archived assessment. - GET /api/v1/asic/squeeze-candidates?min_cover=3&confirmed=false&limit=20 — Ranked squeeze candidates: anomaly_matrix filtered by days_to_cover (Story 1 price/volume join), sorted by borrow_pressure then risk_score. Add `catalyst=true` for CATALYST_PRESENT rows only (Story 2 announcement join). Add `holder=true` for HOLDER_NOTICE rows only (Story 4 substantial-holder/director notices ±3d). Add `signal=squeeze_watch&min_conviction=30` for Story 3 composite-signal rows only. ## MCP (Model Context Protocol) — Streamable HTTP - POST /mcp — Streamable HTTP endpoint, protocol `2025-03-26`, stateless (each POST creates a fresh server). Requires `Host` header, `Content-Type: application/json`, `Accept: application/json, text/event-stream`. `GET /mcp` returns 405. - Discovery: `GET /.well-known/mcp.json` (also `/.well-known/mcp`) — `{ endpoint, transport, version, tools }`. Advertised via `Link: rel=mcp-server` and `rel=mcp-discovery`. - Tools (10, all use `Host` header; historical variants require `date: YYYY-MM-DD`): - `get_latest_report` — full latest report (market_data, anomaly_matrix, risk_narrative, risk_assessment). - `get_latest_narrative` — latest AI narrative as plain text. - `get_latest_assessment` — latest structured per-ticker risk assessment. - `get_historical_report` — archived full report for `date`. - `get_historical_narrative` — archived narrative for `date`. - `get_historical_assessment` — archived assessment for `date`. - `list_available_dates` — all archived dates, newest first. - `get_service_status` — health/freshness (`kv_data_ready`, `last_asic_reporting_date`, `archived_report_count`). - `get_ticker_history` — per-ticker time series `asx_code` (e.g. `DRO`) + `limit` 1-60 (default 20, newest first, scans R2 `daily/*.json`; includes `price_close`, `volume`, `days_to_cover` where the Story 1 price join hit). - `get_squeeze_candidates` — top squeeze candidates from the latest report: `min_cover` (default 3), `confirmed_only`, `catalyst_only`, `holder_only` (Story 4 HOLDER_NOTICE), `signal` (squeeze_watch|accumulation_watch|event_driven_watch|quiet), `min_conviction` 0-100 (default 0), `limit` 1-50 (default 20). - Example: ```bash # initialize curl -X POST https://asic-short-position-processor.flare-oracle.workers.dev/mcp \ -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' # tools/list then tools/call curl -X POST https://asic-short-position-processor.flare-oracle.workers.dev/mcp \ -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_latest_narrative","arguments":{}}}' ``` - Notes: MCP reads KV/R2 directly (no x402 hop); REST `/api/v1/asic/*` remains x402-gated. Inspector: `npx @modelcontextprotocol/inspector --url https://asic-short-position-processor.flare-oracle.workers.dev/mcp`. ## Agent discovery suite This API publishes the full agent discovery suite. All discovery surfaces are free, unauthenticated, and always-on: - GET /agents.json — Typed action manifest for web agents (each action declares endpoint, parameters and x402 USDC price). - GET /.well-known/agent-card.json — A2A AgentCard for agent-to-agent discovery. - GET /.well-known/agent-skills/index.json — Agent Skills discovery index (agentskills.io v0.2.0) for the `asx-short-report` skill (also at /.well-known/agent-skills/asx-short-report/SKILL.md). - GET /.well-known/x402 (also /.well-known/x402.json) — x402 payment discovery file (route pricing, network eip155:8453, input/output schemas). - GET /.well-known/mcp.json (also /.well-known/mcp) — MCP discovery file (endpoint, transport, version, tools). - GET /.well-known/security.txt — RFC 9116 security contact. - GET /robots.txt — Robots + sitemap pointer; lists `/llms.txt` and `/llms-full.txt`. - GET /sitemap.xml — Enumerates all discovery URLs + API contract. - The RFC 8288 Link header on every response advertises all of the above. ## Pricing (x402 / USDC on Base) | Route | Price | |-------|-------| | GET /api/v1/asic/latest | $0.005 | | GET /api/v1/asic/squeeze-candidates | $0.005 | | GET /api/v1/asic/latest/assessment | $0.003 | | GET /api/v1/asic/report/{date} | $0.003 | | GET /api/v1/asic/latest/narrative | $0.001 | | GET /api/v1/asic/report/{date}/assessment | $0.002 | | GET /api/v1/asic/report/{date}/narrative | $0.001 | ## Data model - Anomaly: asx_code, short_interest_pct, prior_day_pct, delta_pct, consecutive_rising_days, anomaly_type (HIGH_SHORT_SQUEEZE_RISK | RAPID_ACCUMULATION | SUSTAINED_ACCUMULATION | HARD_TO_BORROW | VOLUME_CONFIRMED | SHORTS_UP_PRICE_HOLDING | CATALYST_PRESENT | RESULTS_WEEK | CAP_RAISE_OVERHANG | HOLDER_NOTICE | HOLDER_CUSTODIAL | BORROWED_HOLDING | HOLDER_RETURN), risk_score (0-100), history_percentile_60d, sector, industry, market_cap, price_aud, squeeze_probability, price_close, volume_today, avg_vol_20d, days_to_cover, volume_spike_ratio, price_5d_pct, divergence_flag, borrow_pressure, price_as_of, price_stale, catalyst_count_3d, catalyst_headlines, results_week, cap_raise_overhang, holder_count_3d, holder_headlines, holder_present (Story 4 substantial-holder/director subset, metadata only — direction unknown, independent of priceSensitive), holder_custodial (Story 4 P0a: notice names a known agent-lender/prime broker — borrowed/client stock possible, not a beneficial long), holder_nature (Story 6 parsed PDF direction: beneficial|borrowed|custodial|mixed|unknown, null when no parse — overrides the headline heuristic), borrowed_pct (borrowed % stated in notice, null when absent), offsetting_short_pct (Dec-2026+ form field, first observed short number, null when unstated), signal (squeeze_watch|accumulation_watch|event_driven_watch|quiet — Story 3 composite, positioning-heavy 40/30/15/15, >=2 pillars), signal_conviction (0-100), signal_confidence (high|medium|low), signal_drivers (cite only these). Price/volume fields are null with `price_stale: true` when the Yahoo join missed that run; `catalyst_count_3d: 0` (never null) means no ASX announcements in the ±3d window; risk numbers are unaffected. `price_as_of` may differ from `asic_reporting_date` (T+4 shorts vs T+0 prices). - RiskAssessmentEntry: asx_code, severity (LOW|MEDIUM|HIGH), direction (accumulating|declining|stable), status (new|continuing), summary (<=20 words). - Clean days return an empty assessment and the narrative "No anomalies flagged today." ## Documentation - OpenAPI: https://asic-short-position-processor.flare-oracle.workers.dev/api/v1/openapi.json - Response headers include `X-Data-Source: Official ASIC Short Positions Registry`. # Full discovery payload (embedded) ## OpenAPI 3.1 ```json { "openapi": "3.1.0", "info": { "title": "ASX Short Position Report API", "description": "Daily processed ASIC short-selling data for the Australian market: full snapshot, deterministic risk scores, 60-day percentiles, sector/market-cap enrichment and AI narrative + structured risk assessment.\n\nData source: Official ASIC Short Positions Registry (public data). The API adds processing: risk ranking, anomaly detection, enrichment and AI analysis.", "version": "0.1.0", "x-source": "Official ASIC Short Positions Registry" }, "servers": [ { "url": "https://asic-short-position-processor.flare-oracle.workers.dev" } ], "tags": [ { "name": "Latest", "description": "Today's (most recent) processed report" }, { "name": "Historical", "description": "Archived daily snapshots keyed by ASIC reporting date (YYYY-MM-DD, T+4 lag)" }, { "name": "Meta", "description": "API metadata" } ], "paths": { "/api/v1/openapi.json": { "get": { "tags": [ "Meta" ], "summary": "This OpenAPI document", "description": "Machine-readable API contract. Served by the Worker itself.", "responses": { "200": { "description": "The OpenAPI 3.1 document", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/api/v1/asic/latest": { "get": { "tags": [ "Latest" ], "summary": "Latest full short-position report", "description": "Full feed: market snapshot, anomaly matrix with risk scores and enrichment, AI narrative and structured assessment.", "responses": { "200": { "description": "Latest processed report", "headers": { "X-Data-Source": { "$ref": "#/components/headers/XDataSource" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Report" } } } }, "503": { "description": "No report has been generated yet (system warming up)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "error": "System warming up. Execute trigger manually." } } } } } } }, "/api/v1/asic/squeeze-candidates": { "get": { "tags": [ "Latest" ], "summary": "Squeeze candidates (Stories 1-4: short% + price/volume + catalyst + composite signal + holder notices)", "description": "In-memory filter over the latest anomaly_matrix by days_to_cover with optional VOLUME_CONFIRMED / CATALYST_PRESENT / HOLDER_NOTICE requirements and Story 3 composite signal (signal, min_conviction), ranked by borrow_pressure then risk_score. Nulls when prices stale.", "parameters": [ { "name": "min_cover", "in": "query", "required": false, "schema": { "type": "number", "default": 3 }, "description": "Minimum days-to-cover" }, { "name": "confirmed", "in": "query", "required": false, "schema": { "type": "boolean", "default": false }, "description": "Only VOLUME_CONFIRMED rows when true" }, { "name": "catalyst", "in": "query", "required": false, "schema": { "type": "boolean", "default": false }, "description": "Only CATALYST_PRESENT rows when true" }, { "name": "holder", "in": "query", "required": false, "schema": { "type": "boolean", "default": false }, "description": "Only HOLDER_NOTICE rows (substantial-holder/director notices ±3d, Story 4) when true" }, { "name": "signal", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "squeeze_watch", "accumulation_watch", "event_driven_watch", "quiet" ] }, "description": "Only rows with this Story 3 composite signal" }, { "name": "min_conviction", "in": "query", "required": false, "schema": { "type": "integer", "default": 0, "minimum": 0, "maximum": 100 }, "description": "Minimum signal conviction 0-100" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 20, "minimum": 1, "maximum": 50 } } ], "responses": { "200": { "description": "Ranked squeeze candidates", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SqueezeCandidatesResponse" } } } }, "503": { "description": "No report has been generated yet (system warming up)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/api/v1/asic/status": { "get": { "tags": [ "Latest" ], "summary": "Service status", "description": "Public, free status endpoint: data freshness (last report date), next scheduled cron run, KV readiness and archived report count. No authentication.", "responses": { "200": { "description": "Service status", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceStatus" } } } } } } }, "/api/v1/asic/dates": { "get": { "tags": [ "Historical" ], "summary": "Archived report dates", "description": "Public, free endpoint listing all archived daily report dates, newest first, so clients can enumerate what history is available before querying a specific date. No authentication.", "responses": { "200": { "description": "List of archived dates", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "integer" }, "dates": { "type": "array", "items": { "type": "string", "example": "2026-08-12" } } } } } } } } } }, "/api/v1/asic/latest/narrative": { "get": { "tags": [ "Latest" ], "summary": "Latest AI narrative (plain text)", "description": "2-3 sentence market summary for the most recent report. Returns text/plain.", "responses": { "200": { "description": "Narrative text", "headers": { "X-Data-Source": { "$ref": "#/components/headers/XDataSource" } }, "content": { "text/plain": { "schema": { "type": "string" }, "example": "Short interest remains elevated across small-caps, led by XYZ.AX..." } } }, "503": { "description": "No report available yet", "content": { "text/plain": { "schema": { "type": "string" }, "example": "No report available yet." } } } } } }, "/api/v1/asic/latest/assessment": { "get": { "tags": [ "Latest" ], "summary": "Latest structured risk assessment", "description": "Per-ticker AI risk assessment for the most recent report (severity, direction, status, summary).", "responses": { "200": { "description": "Structured assessment", "headers": { "X-Data-Source": { "$ref": "#/components/headers/XDataSource" } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssessmentResponse" } } } }, "503": { "description": "No report available yet", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "error": "No report available yet." } } } } } } }, "/api/v1/asic/report/{date}": { "get": { "tags": [ "Historical" ], "summary": "Archived full report for a date", "description": "Full processed snapshot for a specific ASIC reporting date, streamed from R2.", "parameters": [ { "name": "date", "in": "path", "required": true, "description": "ASIC reporting date, YYYY-MM-DD (T+4 lag relative to the trading day)", "schema": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$" }, "example": "2026-08-11" } ], "responses": { "200": { "description": "Archived report", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Report" } } } }, "404": { "description": "No archived report for that date", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "example": { "error": "No archived report for that date" } } } } } } }, "/api/v1/asic/report/{date}/narrative": { "get": { "tags": [ "Historical" ], "summary": "Archived narrative for a date", "description": "AI narrative for a specific ASIC reporting date (plain text).", "parameters": [ { "$ref": "#/components/parameters/ReportDate" } ], "responses": { "200": { "description": "Narrative text", "content": { "text/plain": { "schema": { "type": "string" } } } }, "404": { "description": "No archived report for that date", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/api/v1/asic/report/{date}/assessment": { "get": { "tags": [ "Historical" ], "summary": "Archived structured assessment for a date", "description": "Structured risk assessment for a specific ASIC reporting date.", "parameters": [ { "$ref": "#/components/parameters/ReportDate" } ], "responses": { "200": { "description": "Structured assessment", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AssessmentResponse" } } } }, "404": { "description": "No archived report for that date", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } }, "/": { "get": { "tags": [ "Meta" ], "summary": "Root index", "description": "Human-readable landing page (HTML for browsers, llms.txt content for plain-text/agent clients). Carries RFC 8288 Link headers advertising the whole discovery suite.", "responses": { "200": { "description": "Index page", "content": { "text/html": { "schema": { "type": "string" } } } } } } }, "/llms.txt": { "get": { "tags": [ "Meta" ], "summary": "Agent discovery file (llms.txt)", "description": "llms.txt convention: plain-text agent discovery document. Free, unauthenticated.", "responses": { "200": { "description": "The llms.txt document", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/agents.json": { "get": { "tags": [ "Meta" ], "summary": "Agent actions manifest (agents.json)", "description": "Typed action manifest for web agents. Declares each callable action, its endpoint, parameters and x402 pricing. Free, unauthenticated.", "responses": { "200": { "description": "The agents.json manifest", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/.well-known/agent-card.json": { "get": { "tags": [ "Meta" ], "summary": "A2A AgentCard", "description": "Google A2A AgentCard: capability advertisement for agent-to-agent discovery. Free, unauthenticated.", "responses": { "200": { "description": "The A2A AgentCard", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/.well-known/x402.json": { "get": { "tags": [ "Meta" ], "summary": "x402 discovery file", "description": "x402 payment discovery file declaring route pricing, network and schemas for x402-aware agents and directories (x402scan, CDP Bazaar). Also served at the extensionless /.well-known/x402 path. Free, unauthenticated.", "responses": { "200": { "description": "The x402 discovery document", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/.well-known/security.txt": { "get": { "tags": [ "Meta" ], "summary": "Security contact (RFC 9116)", "description": "Security.txt contact and disclosure policy. Free, unauthenticated.", "responses": { "200": { "description": "The security.txt document", "content": { "text/plain": { "schema": { "type": "string" } } } } } } }, "/mcp": { "post": { "tags": [ "MCP" ], "summary": "MCP Streamable HTTP endpoint", "description": "Model Context Protocol endpoint (Streamable HTTP, protocol 2025-03-26). Accepts JSON-RPC `initialize`, `tools/list`, `tools/call`, `resources/list`, etc. Tools correspond 1:1 to the REST API plus `get_ticker_history`. Advertised in `/.well-known/agent-card.json` and `Link: rel=mcp-server`. Stateless; GET/DELETE return 405.", "responses": { "200": { "description": "MCP JSON-RPC response (or SSE stream)", "content": { "application/json": { "schema": { "type": "object" } }, "text/event-stream": { "schema": { "type": "string" } } } } } }, "get": { "tags": [ "MCP" ], "summary": "MCP not supported via GET (stateless)", "description" ``` ## MCP discovery ```json { "mcpVersion": "2025-03-26", "transport": "streamable-http", "endpoint": "https://asic-short-position-processor.flare-oracle.workers.dev/mcp", "requiresHostHeader": true, "version": "0.1.0", "tools": [ "get_latest_report", "get_latest_narrative", "get_latest_assessment", "get_historical_report", "get_historical_narrative", "get_historical_assessment", "list_available_dates", "get_service_status", "get_ticker_history", "get_squeeze_candidates" ], "description": "MCP discovery for the ASX Short Position Report (ASIC T+4). POST /mcp is stateless Streamable HTTP; see /api/v1/openapi.json for REST schemas and /.well-known/agent-card.json for A2A." } ``` ## AgentCard ```json { "name": "ASX Short Position Report API", "description": "Daily processed ASIC short-selling data for the Australian market: full snapshot, deterministic risk scores, 60-day percentiles, sector/market-cap enrichment, and an AI narrative plus structured per-ticker risk assessment. Returns JSON via a REST API with a T+4 reporting lag. Paid routes require an x402 (USDC) micro-payment; discovery and documentation routes are free.", "url": "https://asic-short-position-processor.flare-oracle.workers.dev", "version": "0.1.0", "skills": [ { "id": "latest_report", "name": "Latest Short Position Report", "description": "Return the most recent processed ASIC short-selling report: full market snapshot, ranked anomaly matrix, AI narrative and structured per-stock risk assessment.", "tags": [ "asx", "short-selling", "risk", "finance" ], "examples": [ "What is the latest ASX short position report?", "Show me today's most shorted stocks and their risk scores" ] }, { "id": "latest_narrative", "name": "Latest AI Narrative", "description": "Return the 2-3 sentence AI market summary for the most recent report as plain text.", "tags": [ "asx", "short-selling", "risk", "finance" ], "examples": [ "Summarize today's short-selling market in plain English" ] }, { "id": "latest_assessment", "name": "Latest Structured Assessment", "description": "Return the structured per-ticker risk assessment (severity, direction, status) for the most recent report.", "tags": [ "asx", "short-selling", "risk", "finance" ], "examples": [ "Which stocks are HIGH severity accumulating today?" ] }, { "id": "historical_report", "name": "Historical Short Position Report", "description": "Return the archived full report for a specific ASIC reporting date (YYYY-MM-DD).", "tags": [ "asx", "short-selling", "risk", "finance", "historical" ], "examples": [ "Get the archived report for 2026-08-11" ] }, { "id": "historical_narrative", "name": "Historical AI Narrative", "description": "Return the archived AI narrative for a specific ASIC reporting date (YYYY-MM-DD).", "tags": [ "asx", "short-selling", "risk", "finance", "historical" ], "examples": [ "What was the narrative on 2026-08-11?" ] }, { "id": "historical_assessment", "name": "Historical Structured Assessment", "description": "Return the archived structured assessment for a specific ASIC reporting date (YYYY-MM-DD).", "tags": [ "asx", "short-selling", "risk", "finance", "historical" ], "examples": [ "Show the risk assessment for 2026-08-10" ] }, { "id": "squeeze_candidates", "name": "Squeeze Candidates", "description": "Return ranked short-squeeze candidates from the latest report: anomaly_matrix filtered by days_to_cover (Story 1 price/volume join) with optional VOLUME_CONFIRMED / CATALYST_PRESENT (Story 2 announcement join) / HOLDER_NOTICE (Story 4 holder notices) requirements and Story 3 composite signal (signal, min_conviction), sorted by borrow_pressure then risk_score.", "tags": [ "asx", "short-selling", "risk", "finance", "squeeze", "catalysts" ], "examples": [ "Which shorts are hardest to cover today?", "Show squeeze candidates with cover over 5 days", "Which crowded shorts have a fresh catalyst?" ] }, { "id": "mcp_ticker_history", "name": "Ticker Short-Interest History (MCP)", "description": "Per-ticker time series across up to 60 archived reports via MCP tool get_ticker_history — scans R2 daily snapshots for a given ASX code and returns chronological short_interest_pct with anomaly context. Use for charting or answering 'has X been rising?'", "tags": [ "asx", "short-selling", "risk", "finance", "historical", "mcp", "timeseries" ], "examples": [ "Get DRO short interest history last 20 days", "Has BHP short interest been rising? Chart it", "Compare DRO today vs 60-day percentile" ] }, { "id": "mcp_latest_full", "name": "Latest Full Report via MCP", "description": "Fetch the latest full report via MCP tool get_latest_report (Streamable HTTP POST /mcp) — 747 securities, anomaly_matrix with risk scores, squeeze probability, sector/market cap, AI narrative + assessment. Prefer MCP when the client supports it; else use REST GET /api/v1/asic/latest.", "tags": [ "asx", "short-selling", "risk", "finance", "mcp" ], "examples": [ "Call get_latest_report via MCP", "Use POST /mcp to get today's most shorted stocks" ] } ], "capabilities": { "streaming": false, "pushNotifications": false, "stateTransitionHistory": false, "mcp": { "enabled": true, "endpoint": "https://asic-short-position-processor.flare-oracle.workers.dev/mcp", "transport": "streamable-http", "version": "2025-03-26" } }, "securitySchemes": [], "defaultInputModes": [ "text", "json" ], "provider": { "organization": "asx-short-report", "url": "https://asic-short-position-processor.flare-oracle.workers.dev" }, "documentationUrl": "https://asic-short-position-processor.flare-oracle.workers.dev/api/v1/openapi.json", "mcp": { "endpoint": "https://asic-short-position-processor.flare-oracle.workers.dev/mcp", "transport": "streamable-http", "tools": [ "get_latest_report", "get_latest_narrative", "get_latest_assessment", "get_historical_report", "get_historical_narrative", "get_historical_assessment", "list_available_dates", "get_service_status", "get_ticker_history", "get_squeeze_candidates" ] }, "payment": { "protocol": "x402", "asset": "USDC", "pricing": { "/api/v1/asic/latest": "0.005", "/api/v1/asic/squeeze-candidates": "0.005", "/api/v1/asic/latest/narrative": "0.001", "/api/v1/asic/latest/assessment": "0.003", "/api/v1/asic/report/{date}": "0.003", "/api/v1/asic/report/{date}/narrative": "0.001", "/api/v1/asic/report/{date}/assessment": "0.002" } } } ```