{"openapi":"3.1.0","info":{"title":"SDK & API Breaking-Change Tracker for AI Agents","description":"Agent-native data engine serving deterministic signature deprecation checks & FastMCP tool endpoints.","version":"1.0.0"},"paths":{"/.well-known/mcp/server-card.json":{"get":{"summary":"Get Mcp Server Card","description":"Dual-route SEP-1649 server discovery card for cadencemcp.com with open CORS for IDEs.","operationId":"get_mcp_server_card__well_known_mcp_server_card_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/mcp.json":{"get":{"summary":"Get Mcp Server Card","description":"Dual-route SEP-1649 server discovery card for cadencemcp.com with open CORS for IDEs.","operationId":"get_mcp_server_card__well_known_mcp_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/sdks":{"get":{"summary":"Serve Sdks Directory Ssr","description":"Dynamic Database & Catalog-Driven SDK Directory Index listing all 100+ tracked SDKs.","operationId":"serve_sdks_directory_ssr_sdks_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/sdks/{library}":{"get":{"summary":"Serve Sdk Detail Ssr","description":"Server-Side Rendered (SSR) HTML response containing pre-baked code diffs and guardrail status for all tracked SDKs.","operationId":"serve_sdk_detail_ssr_sdks__library__get","parameters":[{"name":"library","in":"path","required":true,"schema":{"type":"string","title":"Library"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/mcp/tools":{"get":{"summary":"Get Mcp Tools Schema","description":"Returns available FastMCP tools discovery schema for AI coding agents.","operationId":"get_mcp_tools_schema_v1_mcp_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/mcp":{"get":{"summary":"Mcp Endpoint","description":"2026 Streamable HTTP FastMCP Endpoint with MCP-Protocol-Version: 2026-07-28 Header Validation.","operationId":"mcp_endpoint_v1_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"summary":"Mcp Endpoint","description":"2026 Streamable HTTP FastMCP Endpoint with MCP-Protocol-Version: 2026-07-28 Header Validation.","operationId":"mcp_endpoint_v1_mcp_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/healthz":{"get":{"summary":"Healthz Check","description":"Lightweight health check route with 3-second response caching to prevent DuckDB locking during DDoS floods.","operationId":"healthz_check_healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/admin/db-hash":{"get":{"summary":"Get Remote Db Hash","description":"Server Handshake: Query active cloud database content hash to prevent local desynchronization.","operationId":"get_remote_db_hash_v1_admin_db_hash_get","parameters":[{"name":"x-sync-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Sync-Admin-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/sync-snapshot":{"post":{"summary":"Receive Snapshot Sync","description":"Receive outbound snapshot push from Tier 1 local workstation, verify Ed25519 signature, and hot-swap.","operationId":"receive_snapshot_sync_v1_admin_sync_snapshot_post","parameters":[{"name":"x-sync-admin-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Sync-Admin-Key"}},{"name":"x-snapshot-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Snapshot-Signature"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_receive_snapshot_sync_v1_admin_sync_snapshot_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/check-signature":{"get":{"summary":"Check Signature","description":"Sub-50ms symbol deprecation check with explicit top-level is_valid boolean flag.","operationId":"check_signature_v1_check_signature_get","parameters":[{"name":"library","in":"query","required":true,"schema":{"type":"string","example":"openai-python","title":"Library"}},{"name":"symbol","in":"query","required":true,"schema":{"type":"string","example":"openai.ChatCompletion.create","title":"Symbol"}},{"name":"version","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"latest","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/catalog":{"get":{"summary":"Get Sdk Catalog","description":"Return complete 1,000 tracked developer SDK catalog across Python, TypeScript, Rust, and Go.","operationId":"get_sdk_catalog_v1_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/changes":{"get":{"summary":"Get Changes","description":"Fetch structured breaking changes for a library.","operationId":"get_changes_v1_changes_get","parameters":[{"name":"library","in":"query","required":true,"schema":{"type":"string","title":"Library"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BreakingChangeRecord"},"title":"Response Get Changes V1 Changes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/search":{"get":{"summary":"Search Breaking Changes","description":"Semantic vector search over breaking changes and code snippets.","operationId":"search_breaking_changes_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"library","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Library"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/BreakingChangeRecord"},"title":"Response Search Breaking Changes V1 Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/github":{"post":{"summary":"Github Webhook Receiver","description":"HMAC SHA-256 protected GitHub Webhook receiver with BackgroundTasks async queue offloading.","operationId":"github_webhook_receiver_v1_webhooks_github_post","parameters":[{"name":"x-hub-signature-256","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hub-Signature-256"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/stripe":{"post":{"summary":"Stripe Webhook Receiver","description":"Stripe asynchronous subscription event handler with raw-body HMAC SHA-256 verification.","operationId":"stripe_webhook_receiver_v1_webhooks_stripe_post","parameters":[{"name":"stripe-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/checkout":{"post":{"summary":"Create Checkout Session","description":"Generate programmatic Stripe checkout session for credit card key registration.","operationId":"create_checkout_session_v1_billing_checkout_post","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","title":"Email"}},{"name":"tier","in":"query","required":false,"schema":{"type":"string","default":"developer","title":"Tier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/usage":{"get":{"summary":"Get Customer Usage","description":"Fetch current usage meter analytics and allowance remaining for customer with anti-bruteforce IP rate limiter.","operationId":"get_customer_usage_v1_billing_usage_get","parameters":[{"name":"customer_id","in":"query","required":true,"schema":{"type":"string","title":"Customer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/billing/session-status":{"get":{"summary":"Get Session Status","description":"Check if Stripe completed checkout webhook was received for a session_id.","operationId":"get_session_status_v1_billing_session_status_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/stats":{"get":{"summary":"Get Stats","operationId":"get_stats_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/contact/submit":{"post":{"summary":"Submit Contact Form","description":"POST /api/v1/contact/submit: Low friction support & sales intake endpoint.\nProtected by a 3-layer anti-bot defense stack:\n1. Sliding-window IP rate limiter (Max 5 submissions / 15 mins -> 429 Too Many Requests)\n2. Invisible Honeypot check (Silent drop with fake success 200 OK)\n3. Interaction velocity check (Reject < 3.0s with fake success 200 OK)","operationId":"submit_contact_form_api_v1_contact_submit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactFormSchema"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/admin/login":{"post":{"summary":"Admin Login","description":"POST /api/v1/admin/login: Handles dual form ingestion (application/x-www-form-urlencoded & application/json).\nProtected by 5-attempt / 15-min IP rate limiting and constant-time HMAC credential validation.\nSets HttpOnly, Secure, SameSite=Strict session cookie with max_age=28800 (8 hours).","operationId":"admin_login_api_v1_admin_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/logout":{"post":{"summary":"Admin Logout","description":"POST /api/v1/admin/logout: Clears admin_session HttpOnly cookie.","operationId":"admin_logout_api_v1_admin_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/admin/tickets":{"get":{"summary":"List Admin Tickets","description":"List & filter contact support tickets for administrative overview (Requires Dual Auth).","operationId":"list_admin_tickets_api_v1_admin_tickets_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"X-Admin-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-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/admin/tickets/{ticket_id}/resolve":{"patch":{"summary":"Resolve Admin Ticket","description":"Resolve contact support ticket.","operationId":"resolve_admin_ticket_api_v1_admin_tickets__ticket_id__resolve_patch","parameters":[{"name":"ticket_id","in":"path","required":true,"schema":{"type":"string","title":"Ticket Id"}},{"name":"X-Admin-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/founder-insights":{"get":{"summary":"Get Founder Insights Api","description":"GET /v1/admin/founder-insights: Returns Stripe sales metrics, free tier usage meters, and support ticket queues (Requires Admin Auth Gate).","operationId":"get_founder_insights_api_v1_admin_founder_insights_get","parameters":[{"name":"X-Admin-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/founder-dashboard":{"get":{"summary":"Serve Founder Dashboard Ssr","description":"Server-Side Rendered (SSR) Founder Sales & Support Escalation Dashboard (Requires Admin Auth Gate).","operationId":"serve_founder_dashboard_ssr_admin_founder_dashboard_get","parameters":[{"name":"X-Admin-API-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Admin-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"summary":"Serve Dashboard","operationId":"serve_dashboard__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/checkout/success":{"get":{"summary":"Serve Checkout","operationId":"serve_checkout_checkout_success_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/checkout":{"get":{"summary":"Serve Checkout","operationId":"serve_checkout_checkout_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin/login":{"get":{"summary":"Serve Admin Login","operationId":"serve_admin_login_admin_login_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/admin":{"get":{"summary":"Serve Admin Dashboard","operationId":"serve_admin_dashboard_admin_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms-full.txt":{"get":{"summary":"Serve Llms Txt","operationId":"serve_llms_txt_llms_full_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"summary":"Serve Llms Txt","operationId":"serve_llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health Check","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Body_receive_snapshot_sync_v1_admin_sync_snapshot_post":{"properties":{"snapshot_file":{"type":"string","contentMediaType":"application/octet-stream","title":"Snapshot File"}},"type":"object","required":["snapshot_file"],"title":"Body_receive_snapshot_sync_v1_admin_sync_snapshot_post"},"BreakingChangeRecord":{"properties":{"id":{"type":"string","title":"Id","description":"Unique record identifier"},"target_library":{"type":"string","title":"Target Library","description":"E.g., openai-python, stripe-python, supabase-py"},"version_deprecated":{"type":"string","title":"Version Deprecated","description":"Version where change occurred, e.g., v1.0.0"},"deprecated_symbol":{"type":"string","title":"Deprecated Symbol","description":"Fully qualified symbol name, e.g., openai.ChatCompletion.create"},"replacement_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Replacement Symbol","description":"Replacement symbol, e.g., client.chat.completions.create"},"breaking_change_type":{"$ref":"#/components/schemas/ChangeType"},"description":{"type":"string","title":"Description"},"code_example_before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Example Before"},"code_example_after":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Example After"},"documentation_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Documentation Url"},"confidence":{"$ref":"#/components/schemas/ConfidenceScore"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","target_library","version_deprecated","deprecated_symbol","breaking_change_type","description","confidence"],"title":"BreakingChangeRecord"},"ChangeType":{"type":"string","enum":["REMOVED_PARAMETER","RENAMED_SYMBOL","DEPRECATED_METHOD","TYPE_MUTATION","ENDPOINT_REMOVED","INSTANTIATION_REQUIRED"],"title":"ChangeType"},"ConfidenceScore":{"properties":{"score":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Score","description":"Confidence score from 0.0 to 1.0"},"syntax_valid":{"type":"boolean","title":"Syntax Valid","description":"Whether before/after code snippets passed AST syntax validation"},"source_certainty":{"type":"string","title":"Source Certainty","description":"E.g. AST_EXACT_MATCH, LLM_PROSE_EXTRACTED, MANUAL_VERIFIED"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning"}},"type":"object","required":["score","syntax_valid","source_certainty"],"title":"ConfidenceScore"},"ContactFormSchema":{"properties":{"user_name":{"type":"string","maxLength":100,"minLength":2,"title":"User Name"},"user_email":{"type":"string","title":"User Email"},"category":{"type":"string","title":"Category"},"message":{"type":"string","maxLength":3000,"minLength":10,"title":"Message"},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id"},"form_loaded_at":{"type":"number","title":"Form Loaded At"},"honeypot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Honeypot","default":""}},"type":"object","required":["user_name","user_email","category","message","form_loaded_at"],"title":"ContactFormSchema"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}