{"openapi":"3.1.0","info":{"title":"clouatre.ca API","version":"1.0.0","description":"x402-gated surfaces on clouatre.ca: three paid AI evaluations (prices declared per operation in x-payment-info; served via aptu-dev-x402 upstream at https://aptu.dev, settled on this origin's resource URLs) plus free discovery endpoints.","contact":{"email":"hugues@linux.com","url":"https://clouatre.ca/llms.txt"},"x-guidance":"Pricing is declared per operation in x-payment-info and mirrored in the /.well-known/x402 manifest. Paid requests without payment return 402 with an x402 challenge in the PAYMENT-REQUIRED header; settle via an x402 facilitator, then retry with the PAYMENT-SIGNATURE header. Discovery links are in x-discovery and llms.txt."},"externalDocs":{"url":"https://clouatre.ca/.well-known/x402","description":"x402 resource manifest (prices, network, discovery links)"},"x-discovery":{"llmsTxt":"https://clouatre.ca/llms.txt","llmsFullTxt":"https://clouatre.ca/llms-full.txt"},"servers":[{"url":"https://clouatre.ca"}],"paths":{"/v1/catalog":{"get":{"operationId":"listCatalogResources","summary":"List this origin's x402-gated resources","security":[],"description":"Free discovery endpoint returning the origin, every advertised resource with its price, and discovery links. Derived from the x402 manifest's single resource list. Paid evaluations are served via aptu-dev-x402 upstream (https://aptu.dev).","responses":{"200":{"description":"Catalog of x402 resources","content":{"application/json":{"schema":{"type":"object","required":["origin","resources","discovery"],"properties":{"origin":{"type":"string"},"resources":{"type":"array","items":{"type":"object","required":["method","path","description","priceUsd"],"properties":{"method":{"type":"string"},"path":{"type":"string"},"description":{"type":"string"},"priceUsd":{"type":"string"}}}},"discovery":{"type":"array","items":{"type":"string"}}}}}}}}}},"/.well-known/x402":{"get":{"operationId":"getX402Manifest","summary":"x402 resource manifest","security":[],"description":"x402 discovery manifest for this origin's advertised surfaces (paid and free), with prices, network, asset, and discovery links.","responses":{"200":{"description":"x402 manifest"}}}},"/v1/resume-eval":{"post":{"operationId":"evaluateResume","summary":"Evaluate a resume against a job description","description":"Scores a resume against a job description. Returns dimension scores, verdict, and red flags.","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["resume_text","format"],"properties":{"resume_text":{"type":"string","maxLength":30000},"format":{"type":"string","enum":["markdown","typst","json"]},"job_description":{"type":"string","maxLength":6000}}}}}},"responses":{"200":{"description":"Evaluation report","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request body or input"},"402":{"description":"Payment required (x402 challenge in the PAYMENT-REQUIRED header)","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 v2 payment challenge (402 JSON): resource, accepts, extensions.","schema":{"type":"string"}}}}}}},"/v1/agent-readiness":{"post":{"operationId":"auditDomainReadiness","summary":"Audit a domain's AI-agent readiness","description":"Scores a domain's AI-agent readiness: robots.txt, llms.txt, mcp.json, structured data. Returns pass/fail findings and a 0-100 score.","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.05"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["domain"],"properties":{"domain":{"type":"string","minLength":1,"maxLength":253,"pattern":"^[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)+$"}}}}}},"responses":{"200":{"description":"Readiness audit report","content":{"application/json":{"schema":{"type":"object","required":["domain","score","findings"],"properties":{"domain":{"type":"string"},"score":{"type":"integer","minimum":0,"maximum":100},"findings":{"type":"array","items":{"type":"object","required":["check","pass","detail","ms"],"properties":{"check":{"type":"string"},"pass":{"type":"boolean"},"detail":{"type":"string"},"ms":{"type":"integer"},"hint":{"type":"string"}}}}}}}}},"400":{"description":"Invalid request body or input"},"402":{"description":"Payment required (x402 challenge in the PAYMENT-REQUIRED header)","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 v2 payment challenge (402 JSON): resource, accepts, extensions.","schema":{"type":"string"}}}}}}},"/v1/btc-regime":{"get":{"operationId":"checkBtcRegimeGate","summary":"Check BTC spot against the 7-day moving average regime gate","description":"BTC spot regime check against a 7-day moving average: returns bull or bear, MA7, deviation percent, and a favor-entry or block-entry action. Use when an agent must gate a BTC entry before sizing.","x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"}},"parameters":[{"name":"spot","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0},"example":65000},{"name":"closes","in":"query","required":false,"example":"63500,64200,64800,65100,64700,65500,66000","description":"Comma-separated list of exactly 7 daily closes, oldest first; omit to read Kraken.","schema":{"type":"string","pattern":"^[0-9]+(\\.[0-9]+)?(,[0-9]+(\\.[0-9]+)?){6}$"}}],"responses":{"200":{"description":"Regime verdict","content":{"application/json":{"schema":{"type":"object","required":["regime","closesSource","availability","disclaimer"],"properties":{"regime":{"type":"string","enum":["bull","bear","insufficient-data"]},"ma7":{"type":"number","nullable":true},"spotVsMa7Pct":{"type":"number","nullable":true},"action":{"type":"string","nullable":true,"enum":["favor-entry","block-entry"]},"closesSource":{"type":"string","enum":["client","kraken"]},"fetchedAt":{"type":"string","format":"date-time"},"availability":{"type":"string","enum":["available","unavailable"]},"unavailableReason":{"type":"string","enum":["not_reported","provider_error","stale"]},"disclaimer":{"type":"string"}}}}}},"400":{"description":"Invalid query input"},"402":{"description":"Payment required (x402 challenge in the PAYMENT-REQUIRED header)","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 v2 payment challenge (402 JSON): resource, accepts, extensions.","schema":{"type":"string"}}}}}}}}}