{"openapi":"3.1.0","info":{"title":"Tolca","version":"0.9.0","description":"Pay-per-call services for AI agents over x402 (USDC on Base). MCP endpoint: https://tolca.tonbot.ca/mcp","contact":{"name":"Tolca","email":"yasser@tonbot.ca","url":"https://tolca.tonbot.ca"}},"servers":[{"url":"https://tolca.tonbot.ca"}],"paths":{"/v1/summarize":{"post":{"operationId":"summarize","summary":"Summarize text (up to 40k chars) into a faithful, tight summary, with optional max_words and target language. Pay-per-ca","description":"Summarize text (up to 40k chars) into a faithful, tight summary, with optional max_words and target language. Pay-per-call over x402 in USDC on Base; payment challenge answered in ~10 ms, 7-day average processing ~1.5 s across Tolca services.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.03,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","example":"Long article text..."},"max_words":{"type":"integer","minimum":20,"maximum":1000,"default":150},"language":{"type":"string","enum":["auto","en","fr"],"default":"auto"}},"required":["text"]},"example":{"text":"Long article text...","max_words":120}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}},"/v1/translate":{"post":{"operationId":"translate","summary":"Translate text between French (including Quebec French) and English, with optional tone. Pay-per-call over x402 in USDC ","description":"Translate text between French (including Quebec French) and English, with optional tone. Pay-per-call over x402 in USDC on Base; payment challenge answered in ~25 ms, 7-day average processing ~1.5 s across Tolca services.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.04,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","example":"Bonjour, comment ça va?"},"target":{"type":"string","enum":["fr","en"]},"tone":{"type":"string","enum":["neutral","formal","casual","quebec"],"default":"neutral"}},"required":["text","target"]},"example":{"text":"Bonjour, comment ça va?","target":"en"}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}},"/v1/extract":{"post":{"operationId":"extract","summary":"Turn messy text into clean JSON matching the schema you provide (field names and types). Pay-per-call over x402 in USDC ","description":"Turn messy text into clean JSON matching the schema you provide (field names and types). Pay-per-call over x402 in USDC on Base; payment challenge answered in ~5 ms, 7-day average processing ~1.5 s across Tolca services.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.02,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"text":{"type":"string","example":"Invoice #123 from Acme, total 450.00 CAD"},"schema":{"type":"object","example":{"invoice_number":"string","total":"number"}}},"required":["text","schema"]},"example":{"text":"Invoice #123 from Acme, total 450.00 CAD due 2026-11-01","schema":{"invoice_number":"string","vendor":"string","total":"number"}}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}},"/v1/extract-url":{"post":{"operationId":"extract-url","summary":"Fetch a public URL (HTML article, PDF, or JSON) and return JSON matching your schema in one call, with page title and so","description":"Fetch a public URL (HTML article, PDF, or JSON) and return JSON matching your schema in one call, with page title and source. Pay-per-call over x402 in USDC on Base; payment challenge answered in ~8 ms.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.03,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","example":"https://en.wikipedia.org/wiki/Montreal"},"schema":{"type":"object","example":{"title":"string","population":"number"}},"max_chars":{"type":"integer","minimum":1000,"maximum":60000,"default":30000}},"required":["url","schema"]},"example":{"url":"https://example.com/blog/post","schema":{"title":"string","author":"string","key_points":"string[]"}}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}},"/v1/pkg-check":{"post":{"operationId":"pkg-check","summary":"Is this package safe to install? One call, one verdict: safe / caution / avoid, with a score, concrete reasons (known vu","description":"Is this package safe to install? One call, one verdict: safe / caution / avoid, with a score, concrete reasons (known vulnerabilities from OSV, deprecation, abandonment, adoption, install scripts, typosquat signals) and a one-line recommendation. Input: name, ecosystem (npm | PyPI), optional version.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.02,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"lodash"},"ecosystem":{"type":"string","enum":["npm","PyPI"],"example":"npm"},"version":{"type":"string","example":"4.17.15"}},"required":["name","ecosystem"]},"example":{"name":"lodash","ecosystem":"npm","version":"4.17.15"}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}},"/v1/qc-contractor-check":{"post":{"operationId":"qc-contractor-check","summary":"Québec contractor check in one call: active RBQ licence (status, type, categories, bond, restrictions), RENA listing (in","description":"Québec contractor check in one call: active RBQ licence (status, type, categories, bond, restrictions), RENA listing (ineligible for public contracts), environmental administrative penalties. Deterministic verdict ok / review / blocking with reasons, sources and extraction dates. Official open data (CC-BY). Input: neq (10 digits) or licence (RBQ number) or name; optional lang fr|en. / Vérification d'entrepreneur québécois: licence RBQ, RENA, sanctions environnementales, verdict avec preuves.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.5,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"neq":{"type":"string","example":"1143512480","description":"Numéro d'entreprise du Québec, 10 chiffres"},"licence":{"type":"string","example":"5596-1234-01","description":"Numéro de licence RBQ"},"name":{"type":"string","example":"Construction ABC inc."},"lang":{"type":"string","enum":["fr","en"],"default":"fr"}},"description":"Fournir neq, licence ou name"},"example":{"name":"Construction ABC inc.","lang":"fr"}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}},"/v1/pkg-meta":{"post":{"operationId":"pkg-meta","summary":"Package metadata in one call, cheapest tier: latest and resolved version, license, first/last publish dates, weekly down","description":"Package metadata in one call, cheapest tier: latest and resolved version, license, first/last publish dates, weekly downloads, deprecation flag, install scripts, maintainers count. npm or PyPI. No vulnerability scan (see pkg-check for the full safe/caution/avoid verdict). Input: name, ecosystem (npm | PyPI), optional version.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.005,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"express"},"ecosystem":{"type":"string","enum":["npm","PyPI"]},"version":{"type":"string"}},"required":["name","ecosystem"]},"example":{"name":"express","ecosystem":"npm"}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}},"/v1/qc-licence":{"post":{"operationId":"qc-licence","summary":"Cheapest Québec contractor check: is this business holding an ACTIVE RBQ licence right now? Returns active true/false, l","description":"Cheapest Québec contractor check: is this business holding an ACTIVE RBQ licence right now? Returns active true/false, licence number, name, NEQ, municipality, restriction flag and authorized work categories. Bulk-friendly for agents vetting many contractors. For RENA (public contract ban) and environmental penalties use qc-contractor-check. Input: neq (10 digits) or licence or name. / Licence RBQ active, oui ou non.","x-payment-info":{"protocol":"x402","version":2,"network":"eip155:8453","asset":"USDC","price_usd":0.02,"payTo":"0x35F0B86a7E33F561faf7cfa5654CAd9162C4A17d"},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"neq":{"type":"string","example":"1166302126"},"licence":{"type":"string","example":"8315-8105-31"},"name":{"type":"string","example":"Neolect"}},"description":"Fournir neq, licence ou name"},"example":{"name":"Neolect"}}}},"responses":{"200":{"description":"Result JSON"},"402":{"description":"Payment required (x402 v2, PAYMENT-REQUIRED header)"}}}}}}