{"openapi":"3.1.0","info":{"title":"AIAAM - AI as a Market","description":"MAI-1 protocol catalog for autonomous agents. Not for humans.","version":"1.0.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/":{"get":{"summary":"Llmo Root","description":"Pure HTML index optimized for AI crawlers (GPTBot, Claude-Web, etc.).\nNo CSS. No JavaScript. Just a hierarchical list of all available MAI-1 entries.","operationId":"llmo_root__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/llmo-apis":{"get":{"summary":"Llmo Apis","description":"Machine-readable index of MAI-API manifests — plain HTML, no CSS.\nEquivalent of llmo.html but for compiled API manifests.\nDesigned for AI crawlers, coding agents, LLM scrapers.","operationId":"llmo_apis_llmo_apis_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/mai-api":{"get":{"summary":"Mai Api Page","description":"Public landing page for MAI-API — lists compiled manifests by category.\nHonest attribution: specs sourced from APIs.guru (CC0), no vendor affiliation.","operationId":"mai_api_page_mai_api_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/agent.json":{"get":{"summary":"Well Known Mcp","description":"Agent discovery standard — like robots.txt for AI agents.\nCrawlers and agent frameworks check this path automatically.\ntools_count is read live from DB on every request.","operationId":"well_known_mcp_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/agent.json":{"get":{"summary":"Well Known Mcp","description":"Agent discovery standard — like robots.txt for AI agents.\nCrawlers and agent frameworks check this path automatically.\ntools_count is read live from DB on every request.","operationId":"well_known_mcp__well_known_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp.json":{"get":{"summary":"Well Known Mcp","description":"Agent discovery standard — like robots.txt for AI agents.\nCrawlers and agent frameworks check this path automatically.\ntools_count is read live from DB on every request.","operationId":"well_known_mcp__well_known_mcp_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/robots.txt":{"get":{"summary":"Robots","description":"Welcome all AI crawlers explicitly.","operationId":"robots_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms.txt":{"get":{"summary":"Llms Txt","description":"Machine-readable catalog of all verified MAI-1 contracts.\nFollows the llmstxt.org standard so AI crawlers can index tool contracts\nwithout parsing the full API documentation.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap Xml","description":"Standard XML sitemap listing all tool pages for crawler indexing.","operationId":"sitemap_xml_sitemap_xml_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/api/v1/tools":{"get":{"summary":"Search Tools","description":"Search the MAI-1 catalog by keyword or intent phrase and optional category.\n\nSearches across: aid, task, tags (capability keywords), install_cmd,\nexecute_cmd, source_platform, input_schema, output_schema.\n\nIntent examples: \"web scraping\", \"send emails\", \"vector database\",\n\"audio transcription\", \"llm framework\".\n\nIf q is empty or absent → returns top 10 by reliability_score.\nMax 10 results per query.","operationId":"search_tools_api_v1_tools_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Keyword to search across MAI-1 catalog","title":"Q"},"description":"Keyword to search across MAI-1 catalog"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source platform: github | pypi | huggingface | npm","title":"Category"},"description":"Filter by source platform: github | pypi | huggingface | npm"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/services/search":{"get":{"summary":"Search Apis","description":"Search MAI-API manifests only. Returns compiled API manifests matching the intent.\nFor a unified search across both catalogs use GET /api/v1/search.","operationId":"search_apis_api_v1_services_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Intent phrase, e.g. 'send emails', 'payments'","title":"Q"},"description":"Intent phrase, e.g. 'send emails', 'payments'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"summary":"Unified Search","description":"Unified search across both catalogs:\n  - MAI-1 tools  (installable libraries: pip, npm, GitHub)\n  - MAI-API manifests (web APIs: Stripe, Slack, GitHub API, …)\n\nEach result is tagged with \"type\": \"tool\" or \"type\": \"api\".\nTools are ranked by reliability_score; APIs by reliability_score.\nMax 5 results per catalog (10 total).\n\nExamples:\n  ?q=audio+transcription  → whisper, whisperx (tools)\n  ?q=send+emails          → sendgrid (tool + api)\n  ?q=vector+database      → chroma, pinecone, weaviate (tools)\n  ?q=llm+orchestration    → langchain, crewai (tools)\n  ?q=task+queue           → celery (tool)","operationId":"unified_search_api_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Intent phrase, e.g. 'audio transcription', 'vector database'","title":"Q"},"description":"Intent phrase, e.g. 'audio transcription', 'vector database'"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tools/trending":{"get":{"summary":"Trending Tools","description":"Top tools by reliability_score DESC. Used by WebMCP handlers and MCP clients.","operationId":"trending_tools_api_v1_tools_trending_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":1,"description":"Number of results (max 20)","default":10,"title":"Limit"},"description":"Number of results (max 20)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tools/{aid}":{"get":{"summary":"Get Tool","description":"Fetch a full MAI-1 contract by tool ID.\nReturns identity + logic + trust + action blocks.\nOptionally includes telemetry_protocol and quality_signal metadata\nfor operators who choose to participate.","operationId":"get_tool_api_v1_tools__aid__get","parameters":[{"name":"aid","in":"path","required":true,"schema":{"type":"string","title":"Aid"}},{"name":"User-Agent","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User-Agent"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Post Tool","description":"Returning AI request. The body MUST include a tax_payload.\n\nBehavior:\n- Valid tax_payload → return full MAI-1 (including action block)\n- No tax_payload  → return partial MAI-1 (identity + logic + trust, action = null)\n                    plus 'tax_required' instructions","operationId":"post_tool_api_v1_tools__aid__post","parameters":[{"name":"aid","in":"path","required":true,"schema":{"type":"string","title":"Aid"}},{"name":"User-Agent","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User-Agent"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/TaxPayload"},{"type":"null"}],"title":"Payload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/tools/{aid}/instructions":{"get":{"summary":"Get Instructions","description":"Devuelve el AGENT_INSTRUCTIONS.md generado por context_injector para el tool.\nSolo disponible para tools con licencia MIT o Apache-2.0.","operationId":"get_instructions_api_v1_tools__aid__instructions_get","parameters":[{"name":"aid","in":"path","required":true,"schema":{"type":"string","title":"Aid"}}],"responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translate":{"post":{"summary":"Translate Url","description":"Admin-only. Translate a source URL (GitHub/HuggingFace/PyPI/npm) into\na MAI-1 entry and persist it in the catalog.\n\nRequires header: X-Admin-Secret\nBody: {\"url\": \"https://github.com/owner/repo\"}","operationId":"translate_url_api_v1_translate_post","parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ingest":{"post":{"summary":"Ingest Tool","description":"Admin-only. Accept a pre-built MAI-1 object and persist it.\nUsed when the translator runs locally and pushes results here.","operationId":"ingest_tool_api_v1_ingest_post","parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/update-trust":{"post":{"summary":"Update Trust","description":"Admin-only. Batch-update ONLY reliability_score + reliability_calculated_at.\nSafe alternative to /api/v1/ingest (which merges the whole row): scores are\ncomputed locally by reliability_scorer.py from public GitHub metadata and\npushed here, leaving telemetry counters and verified status untouched.","operationId":"update_trust_admin_update_trust_post","parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TrustUpdate"},"title":"Updates"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/contribute":{"post":{"summary":"Contribute Tool Endpoint","description":"Public, agent-facing. Submit a PyPI or GitHub URL; the registry builds an\nunverified MAI-1 contract from public metadata (no LLM, nothing invented).\nRate-limited per IP. Idempotent: resubmitting returns the existing contract.","operationId":"contribute_tool_endpoint_api_v1_contribute_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContributeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/stats":{"get":{"summary":"Admin Stats","description":"Protected endpoint exposing aggregated telemetry.","operationId":"admin_stats_admin_stats_get","parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/search-trends":{"get":{"summary":"Search Trends","description":"Search query analytics — drives catalog expansion decisions.\nThe zero-results bucket shows what agents need that we don't have yet.\nProtected: X-Admin-Secret required.\nReturns empty arrays gracefully when the table is empty or just created.","operationId":"search_trends_admin_search_trends_get","parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/intel":{"get":{"summary":"Intel","description":"Aggregated telemetry for the last 30 days.\nShadow mode: not public, only accessible with X-Admin-Key.\nStarts accumulating data from day 1 for future buyer due diligence.","operationId":"intel_api_v1_intel_get","parameters":[{"name":"X-Admin-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bulk":{"get":{"summary":"Bulk Tools","description":"Model II — Bulk MAI-1 fetch. Requires a valid X-Api-Key.\nReturns up to 20 full MAI-1 contracts in one call.\nSaves ~96,000 tokens vs fetching one-by-one.\n\nExample:\n  GET /api/v1/bulk?aids=langchain-v1,langgraph-v1,crewai-v1\n  Header: X-Api-Key: aik_pro_xxxx","operationId":"bulk_tools_api_v1_bulk_get","parameters":[{"name":"aids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated list of AIDs (max 20)","title":"Aids"},"description":"Comma-separated list of AIDs (max 20)"},{"name":"X-Api-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pricing":{"get":{"summary":"Pricing","description":"Public pricing page for Model II — programmatic bulk access.","operationId":"pricing_api_v1_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/api-keys":{"get":{"summary":"Admin List Keys","description":"Admin — list all API keys with usage stats.","operationId":"admin_list_keys_admin_api_keys_get","parameters":[{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api-keys/{key_prefix}":{"delete":{"summary":"Admin Deactivate Key","description":"Admin — deactivate a key by its full value.","operationId":"admin_deactivate_key_admin_api_keys__key_prefix__delete","parameters":[{"name":"key_prefix","in":"path","required":true,"schema":{"type":"string","title":"Key Prefix"}},{"name":"X-Admin-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/submit-api":{"post":{"summary":"Submit Api","description":"Compile a public OpenAPI/Swagger URL into a MAI-API manifest via Haiku.\nReturns HTTP 202 immediately; compilation runs in background (~15s).\n\nAccess rules:\n- No API key: only URLs from the public allowlist (apis.guru, raw.githubusercontent.com, etc.)\n- Valid API key: any public URL (SSRF blocklist still enforced)\n\nRate limits:\n- No key: 2/hour/IP · 10/day global hard cap\n- API key: 20/day per key","operationId":"submit_api_api_v1_submit_api_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitAPIRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/services/{service_name}/status":{"get":{"summary":"Service Status","description":"Check whether a submitted API has been compiled and is ready.\nAccepts the manifest service_name OR the URL domain hint returned in the 202.","operationId":"service_status_api_v1_services__service_name__status_get","parameters":[{"name":"service_name","in":"path","required":true,"schema":{"type":"string","title":"Service Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/services/{service_name}/mai-api.json":{"get":{"summary":"Service Manifest","description":"Returns the compiled MAI-API manifest JSON, or 404 if not ready or not verified.","operationId":"service_manifest_api_v1_services__service_name__mai_api_json_get","parameters":[{"name":"service_name","in":"path","required":true,"schema":{"type":"string","title":"Service Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/compiled-apis":{"get":{"summary":"Admin List Compiled Apis","description":"List compiled APIs with manifest preview (first 3 intents). Requires X-Admin-Secret.","operationId":"admin_list_compiled_apis_admin_compiled_apis_get","parameters":[{"name":"verified","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(true|false|all)$"},{"type":"null"}],"default":"all","title":"Verified"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/compiled-apis/{compiled_id}/verify":{"patch":{"summary":"Admin Verify Compiled Api","description":"Set verified=True on a CompiledAPI record. Requires X-Admin-Secret.","operationId":"admin_verify_compiled_api_admin_compiled_apis__compiled_id__verify_patch","parameters":[{"name":"compiled_id","in":"path","required":true,"schema":{"type":"integer","title":"Compiled Id"}},{"name":"x-admin-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/ingest-compiled-api":{"post":{"summary":"Admin Ingest Compiled Api","description":"Upsert a CompiledAPI record from local SQLite → production PostgreSQL.","operationId":"admin_ingest_compiled_api_admin_ingest_compiled_api_post","parameters":[{"name":"x-admin-secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp":{"get":{"summary":"Mcp Manifest","description":"MCP server capabilities manifest — quick discovery for agents and crawlers.","operationId":"mcp_manifest_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Mcp Handler","description":"MCP JSON-RPC 2.0 dispatcher.\nSupported methods: initialize · tools/list · tools/call\ntools/call responses use the official MCP content envelope:\n  result: { content: [{ type: \"text\", text: \"<json string>\" }] }","operationId":"mcp_handler_mcp_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_JsonRpcRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/mcp/sse":{"get":{"summary":"Mcp Sse Endpoint","description":"MCP HTTP+SSE transport — for Claude Desktop and SSE-compatible MCP clients.\n1. Client connects here with GET → receives 'endpoint' event pointing to /mcp/messages\n2. Client POSTs JSON-RPC to /mcp/messages?session_id=<id>\n3. Server puts response in queue → delivered here as SSE 'message' event","operationId":"mcp_sse_endpoint_mcp_sse_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/mcp/messages":{"post":{"summary":"Mcp Sse Messages","description":"Receive JSON-RPC from SSE client and route response back over the stream.","operationId":"mcp_sse_messages_mcp_messages_post","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_JsonRpcRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ContributeRequest":{"properties":{"source_url":{"type":"string","maxLength":300,"title":"Source Url","description":"PyPI project or GitHub repo URL"}},"type":"object","required":["source_url"],"title":"ContributeRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IngestRequest":{"properties":{"aid":{"type":"string","title":"Aid"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"input_schema":{"type":"object","title":"Input Schema"},"output_schema":{"type":"object","title":"Output Schema"},"reliability_score":{"type":"number","title":"Reliability Score","default":0.75},"latency_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latency Ms"},"source_url":{"type":"string","title":"Source Url"},"install_cmd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Install Cmd"},"execute_cmd":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Execute Cmd"},"source_platform":{"type":"string","title":"Source Platform","default":"github"},"translator_used":{"type":"string","title":"Translator Used","default":"haiku"},"foam_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Foam Score"},"verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Verified"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"health_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Health Score"},"affiliate_tag":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Affiliate Tag"},"monetizable":{"type":"boolean","title":"Monetizable","default":false},"task":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Task"}},"type":"object","required":["aid","input_schema","output_schema","source_url"],"title":"IngestRequest"},"SubmitAPIRequest":{"properties":{"openapi_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Openapi Url"},"category":{"type":"string","pattern":"^(payments|finance|communication|devtools|google|ai|productivity|security|ecommerce|media|social|data|other)$","title":"Category","default":"other"}},"type":"object","required":["openapi_url"],"title":"SubmitAPIRequest"},"TaxPayload":{"properties":{"trend_keyword":{"type":"string","title":"Trend Keyword"},"execution_feedback":{"type":"integer","title":"Execution Feedback"},"validation_bit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Validation Bit"},"micro_translation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Micro Translation"},"referral_included":{"type":"boolean","title":"Referral Included","default":false},"validation_vote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Validation Vote"},"referral_confirmed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Referral Confirmed"}},"type":"object","required":["trend_keyword","execution_feedback"],"title":"TaxPayload","description":"The bundle of micro-taxes an AI must pay."},"TranslateRequest":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"TranslateRequest"},"TrustUpdate":{"properties":{"aid":{"type":"string","title":"Aid"},"reliability_score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Reliability Score"}},"type":"object","required":["aid","reliability_score"],"title":"TrustUpdate"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"_JsonRpcRequest":{"properties":{"jsonrpc":{"type":"string","title":"Jsonrpc","default":"2.0"},"id":{"anyOf":[{},{"type":"null"}],"title":"Id"},"method":{"type":"string","title":"Method"},"params":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Params"}},"type":"object","required":["method"],"title":"_JsonRpcRequest"}}}}