{"openapi":"3.1.0","info":{"title":"The Undesirables — AI Tools API","description":"TCG card grading, Monte Carlo simulation, and market intelligence. Powered by x402 micropayments in USDC on Base. Free tools require no payment. Paid tools return HTTP 402 — sign a USDC payment and retry with the payment proof header.","version":"1.0.0"},"paths":{"/":{"get":{"tags":["Info"],"summary":"Root","description":"Server info and available endpoints.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["Info"],"summary":"Health","description":"Health check endpoint.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/ai-plugin.json":{"get":{"tags":["Discovery"],"summary":"Ai Plugin","description":"Bitte Protocol / OpenAI plugin manifest for agent discovery.","operationId":"ai_plugin__well_known_ai_plugin_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/.well-known/agent.json":{"get":{"tags":["Discovery"],"summary":"Agent Card","description":"Google A2A Agent Card for peer-to-peer agent discovery.","operationId":"agent_card__well_known_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/search":{"get":{"tags":["Free"],"summary":"Search Tcg Products","description":"🆓 **FREE** — Search 187K+ TCG products across 13 games.\n\nReturns product names, sets, and current market prices from TCGCSV.\nNo payment required.","operationId":"search_tcg_products_api_v1_search_get","parameters":[{"name":"query","in":"query","required":true,"schema":{"type":"string","description":"Search term (card name, set, etc)","title":"Query"},"description":"Search term (card name, set, etc)"},{"name":"game","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by game: Pokemon, Magic, Yu-Gi-Oh, etc","title":"Game"},"description":"Filter by game: Pokemon, Magic, Yu-Gi-Oh, etc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Max results (1-50)","default":10,"title":"Limit"},"description":"Max results (1-50)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/market":{"get":{"tags":["Free"],"summary":"Market Snapshot","description":"🆓 **FREE** — Daily TCGCSV market data snapshot.\n\nTop movers, price changes, volume trends. Updated daily.\nNo payment required.","operationId":"market_snapshot_api_v1_market_get","parameters":[{"name":"game","in":"query","required":false,"schema":{"type":"string","description":"Game name","default":"Pokemon","title":"Game"},"description":"Game name"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/grade":{"get":{"tags":["Paid — $0.05"],"summary":"Grade Card","description":"💰 **$0.05 USDC** — AI Vision Card Grading.\n\nAnalyzes centering, corners, edges, surface, and print quality\nusing Qwen VL to predict PSA and Beckett grading scores.\n\nReturns `402 Payment Required` — sign USDC payment on Base to access.","operationId":"grade_card_api_v1_grade_get","parameters":[{"name":"image_url","in":"query","required":true,"schema":{"type":"string","description":"URL or local path to card image","title":"Image Url"},"description":"URL or local path to card image"},{"name":"game","in":"query","required":false,"schema":{"type":"string","description":"Game for grading context","default":"Pokemon","title":"Game"},"description":"Game for grading context"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/simulate":{"get":{"tags":["Paid — $0.10"],"summary":"Simulate Price","description":"💰 **$0.10 USDC** — Monte Carlo Price Simulation.\n\nRuns stochastic simulations using real market data.\nModels: Heston (vol-of-vol), Merton (jump-diffusion), Kou (double-exp jumps).\nReturns percentile bands (5th, 25th, 50th, 75th, 95th).\n\nReturns `402 Payment Required` — sign USDC payment on Base to access.","operationId":"simulate_price_api_v1_simulate_get","parameters":[{"name":"card_name","in":"query","required":true,"schema":{"type":"string","description":"Card name to simulate","title":"Card Name"},"description":"Card name to simulate"},{"name":"current_price","in":"query","required":true,"schema":{"type":"number","description":"Current price in USD","title":"Current Price"},"description":"Current price in USD"},{"name":"model","in":"query","required":false,"schema":{"type":"string","description":"Model: heston, merton, or kou","default":"heston","title":"Model"},"description":"Model: heston, merton, or kou"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Forecast horizon in days","default":30,"title":"Days"},"description":"Forecast horizon in days"},{"name":"simulations","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":100,"description":"Number of Monte Carlo paths","default":10000,"title":"Simulations"},"description":"Number of Monte Carlo paths"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"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"}}}}