{"openapi":"3.1.0","info":{"title":"ToolSkipper discovery and task API","version":"0.11.0","description":"Source-reviewed catalogue, structured general-task recommendations, a planning-only multilingual benchmark lab, host-managed account setup, sourced connection guides, bounded keyless execution and explicitly consented pilot reporting. Discovery remains read-only. Optional task execution sends public search input to Exa or an approved documentation URL to Jina; it accepts only maxSpendUsd:0, sends no credentials or payments, and never automatically retries or switches providers. Browserless is a host-connection handoff only. No external translation. Generic execute_task results are response-local. Optional authenticated benchmark runs save fixed public inputs and bounded outputs with explicit consent, with separate owner self reviews; provider and hosting policies apply. Public discovery is available to anonymous visitors and agent clients without a ToolSkipper account or API key. Public pages, REST and MCP share 120 requests/minute and 6000/UTC day per network. Optional administrator-issued X-ToolSkipper-Key allows 600/minute and 50000/UTC day, subject to network/site safety ceilings. A key grants no visitor identity or private-operation access. HTTP 429 returns Retry-After seconds; wait without automatically retrying or changing identity. Private records and provider execution additionally require a trusted signed-in Sites visitor; administrator operations additionally require explicit membership. Service-access credentials do not supply visitor identity or administrator role."},"servers":[{"url":"https://toolskipper.com"}],"paths":{"/api/llm-providers":{"get":{"operationId":"searchLlmProviders","summary":"Read official-documentation observations for LLM provider plans","description":"Separate provider-level snapshot. Free quotas, evaluation and paid credits remain distinct. Provider identity is not model identity. After seven days, planType becomes unknown and cannot match a free-plan filter. Literal metadata matching is not suitability assessment. Unknown or repeated parameters are rejected. No provider inference, keys, account connection or payment. Inspect dated source passages and conditions; account/card eligibility and model capabilities remain unassessed.","parameters":[{"name":"query","in":"query","schema":{"type":"string","maxLength":200}},{"name":"planType","in":"query","schema":{"type":"string","enum":["all","free-tier","evaluation","recurring-credit","trial-credit","paid-credit","unknown"],"default":"all"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":100,"default":0}}],"responses":{"200":{"description":"Dated provider documentation with coverage and limitations","content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","generatedAt","coverage","appliedFilters","total","returned","nextOffset","providers","heldCandidates","policy","limitations"],"additionalProperties":false,"properties":{"schemaVersion":{"const":1},"generatedAt":{"type":"string","format":"date-time"},"coverage":{"type":"object","required":["discoveredProviders","documentationChecked","heldProviders","modelRecords","recentDocumentationChecked"],"additionalProperties":false,"properties":{"discoveredProviders":{"type":"integer","minimum":0,"maximum":100},"documentationChecked":{"type":"integer","minimum":0,"maximum":100},"heldProviders":{"type":"integer","minimum":0,"maximum":100},"modelRecords":{"type":"integer","minimum":0,"maximum":100},"recentDocumentationChecked":{"type":"integer","minimum":0,"maximum":100}}},"appliedFilters":{"type":"object","properties":{"query":{"type":"string","maxLength":200,"description":"Literal metadata terms; all whitespace-separated terms must occur."},"planType":{"type":"string","description":"Filter documented access-plan observations; defaults to all. Stale observations become unknown, not free access.","enum":["all","free-tier","evaluation","recurring-credit","trial-credit","paid-credit","unknown"]},"limit":{"type":"integer","description":"Maximum provider records to return; defaults to 20.","minimum":1,"maximum":50},"offset":{"type":"integer","description":"Number of matching provider records to skip for pagination; defaults to 0.","minimum":0,"maximum":100}},"additionalProperties":false,"required":["query","planType","limit","offset"]},"total":{"type":"integer","minimum":0},"returned":{"type":"integer","minimum":0,"maximum":50},"nextOffset":{"type":["integer","null"],"minimum":0},"providers":{"type":"array","maxItems":50,"items":{"type":"object","additionalProperties":false,"required":["id","name","website","kind","verification","planType","observedPlanType","summary","quota","conditions","source","accountEligibility","creditCardRequired","modelCapabilities","liveAvailability","models","evidenceState"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"website":{"type":"string","format":"uri"},"kind":{"const":"llm-provider"},"verification":{"const":"documentation-checked"},"planType":{"enum":["free-tier","evaluation","recurring-credit","trial-credit","paid-credit","unknown"]},"observedPlanType":{"enum":["free-tier","evaluation","recurring-credit","trial-credit","paid-credit","unknown"]},"summary":{"type":"string"},"quota":{"type":"string"},"conditions":{"type":"string"},"source":{"type":"object","required":["url","checkedAt","sha256","passages"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri"},"checkedAt":{"type":"string","format":"date-time"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"passages":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":4}}},"accountEligibility":{"const":"unknown"},"creditCardRequired":{"const":"unknown"},"modelCapabilities":{"const":"unassessed"},"liveAvailability":{"const":"not-tested"},"models":{"type":"array","maxItems":0},"evidenceState":{"enum":["recent","stale"]}}}},"heldCandidates":{"type":"array","maxItems":100,"description":"Separate held source-review dispositions; these are not matching or verified provider offers.","items":{"type":"object","required":["name","reason","sourceUrl"],"additionalProperties":false,"properties":{"name":{"type":"string"},"reason":{"type":"string"},"sourceUrl":{"type":["string","null"],"format":"uri"}}}},"policy":{"type":"object","required":["providerInferenceCalls","accountConnections","payments","modelsImported","evidenceMaxAgeDays"],"additionalProperties":false,"properties":{"providerInferenceCalls":{"const":0},"accountConnections":{"const":0},"payments":{"const":0},"modelsImported":{"const":0},"evidenceMaxAgeDays":{"const":7}}},"limitations":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/discovered/providers":{"get":{"operationId":"searchProviderDiscoveries","summary":"Read crawler-discovered provider declarations","description":"Separate unreviewed provider-card index. Pricing, authentication, identity and task performance remain unknown. Declared MCP and A2A interfaces are distinct; no provider tools run. Records expire from this index seven days after source retrieval. Hosting access policy applies.","parameters":[{"name":"query","in":"query","schema":{"type":"string","maxLength":200}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}],"responses":{"200":{"description":"Up to 24 provider-declared records with source URL, hash, retrieval date and interfaces","content":{"application/json":{"schema":{"type":"object","required":["records","total","offset"],"properties":{"records":{"type":"array","maxItems":24,"items":{"type":"object","properties":{"verification":{"const":"discovered"},"auth":{"const":"unknown"},"pricing":{"const":"unknown"}}}},"total":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/discovered":{"get":{"operationId":"searchDiscoveredServices","summary":"Search automatically discovered, unreviewed Registry metadata","description":"Separate index of deduplicated pending remote MCP records from the Official MCP Registry. Literal substring search; no semantic matching, provider execution or evidence of authentication, pricing, quality or availability. Reviewed/rejected/unpublished identities are excluded. Site hosting access policy applies. Follow nextOffset; live inserts can shift offset pages.","parameters":[{"name":"query","in":"query","schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}],"responses":{"200":{"description":"Discovered metadata and pagination","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"services":{"type":"array","maxItems":100,"items":{"type":"object","additionalProperties":false,"properties":{"registryName":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"website":{"type":"string"},"endpoint":{"type":"string"},"sourceUrl":{"type":"string"},"sourceCheckedAt":{"type":"string"},"registryVersion":{"type":"string"},"verification":{"const":"discovered"},"auth":{"const":"unknown"},"pricing":{"const":"unknown"}},"required":["registryName","name","description","website","endpoint","sourceUrl","sourceCheckedAt","registryVersion","verification","auth","pricing"]}},"total":{"type":"integer","minimum":0},"returned":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0},"nextOffset":{"type":["integer","null"]},"statusSource":{"const":"official-mcp-registry"}},"required":["services","total","returned","offset","nextOffset","statusSource"]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/helpers/api-anything":{"get":{"operationId":"getLocalHelperPlan","summary":"Read optional local API Anything setup","description":"Static setup metadata only. A pinned local CLI/stdio MCP supports one public Hacker News read operation. Local host installation is unknown to ToolSkipper. No query parameters, installation, website call, account access, payment, persistence or execution occurs through this endpoint. Download and enable the separate local helper in your host after review.","responses":{"200":{"description":"Local helper plan; inspect executionLocation, hostStatus, supported tools and caveats","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/mcp":{"post":{"operationId":"publicMcp","summary":"Public read-only MCP discovery without sign-in","description":"Stateless Streamable HTTP JSON-RPC. Supports server/discover, initialize, ping, tools/list and tools/call. Fixed allowlist: search_discovered_services, search_services, get_service, compare_services, get_connection_spec, get_service_evidence, get_connection_handoff, get_task_options, get_benchmark_suite, plan_benchmark, recommend_services. No execution, user records, reporting or administration. Calls with unknown/private tool names are rejected before database or provider work. Public discovery tools are available to anonymous visitors and agent clients without sign-in. Discovery does not authorize provider accounts, credentials or payments.","responses":{"200":{"description":"JSON-RPC result; inspect tool isError and structuredContent","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Notification acknowledged without execution"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/services/{slug}/evidence":{"get":{"operationId":"getServiceEvidence","summary":"Read dated public source and attempt evidence","description":"Only the currently published service is eligible. Internal public-input observations are separate from private saved runs and voluntary feedback. Read validity dates, failure status, source binding and scope; these are not independent quality scores or guarantees.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Evidence with source review, observations and explicit unknowns","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"slug":{"type":"string"},"serviceName":{"type":["string","null"]},"available":{"type":"boolean"},"evidencePath":{"type":"string"},"badgePath":{"type":"string"},"source":{"type":"object","properties":{"status":{"type":"string","enum":["reviewed","unavailable"]},"checkedAt":{"type":["string","null"]},"scope":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":false}}},"required":["status","checkedAt","scope","sources"],"additionalProperties":false},"connection":{"type":"object","properties":{"status":{"type":"string","enum":["observed","not_observed","stale","unavailable"]},"observationId":{"type":["string","null"]},"observedAt":{"type":["string","null"]},"outcome":{"type":["string","null"],"enum":["completed","no_results","connection_required","payment_required","rate_limited","failed",null]}},"required":["status","observationId","observedAt","outcome"],"additionalProperties":false},"task":{"type":"object","properties":{"status":{"type":"string","enum":["internally_reviewed","not_reviewed","stale","unavailable"]},"observationId":{"type":["string","null"]},"reviewedAt":{"type":["string","null"]},"qualityVerified":{"type":"boolean","const":false},"independentReview":{"type":"boolean","const":false}},"required":["status","observationId","reviewedAt","qualityVerified","independentReview"],"additionalProperties":false},"latestAttempt":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"provenance":{"type":"string","const":"internal_live"},"observedAt":{"type":"string","format":"date-time"},"adapterEndpoint":{"type":"string"},"transport":{"type":"string","enum":["MCP","REST"]},"task":{"type":"string","enum":["web_search","read_page"]},"input":{"type":"string","maxLength":2000},"status":{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},"reasonCode":{"type":"string"},"durationMs":{"type":"integer","minimum":0,"maximum":300000},"connectionObserved":{"type":"boolean"},"responseShapeChecked":{"type":"boolean"},"outputExcerpt":{"type":["string","null"],"maxLength":1200},"sourceUrls":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string"}},"cost":{"type":"object","properties":{"relayChargeUsd":{"type":"number","const":0},"paymentSentUsd":{"type":"number","const":0},"providerCostUsd":{"type":"null"}},"required":["relayChargeUsd","paymentSentUsd","providerCostUsd"],"additionalProperties":false},"review":{"anyOf":[{"type":"object","properties":{"reviewedAt":{"type":"string","format":"date-time"},"scope":{"type":"string"},"criteria":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"criterionId":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["pass","fail","uncertain"]}},"required":["criterionId","description","status"],"additionalProperties":false}}},"required":["reviewedAt","scope","criteria"],"additionalProperties":false},{"type":"null"}]},"fresh":{"type":"boolean"},"expiresAt":{"type":"string","format":"date-time"},"independentReview":{"type":"boolean","const":false},"qualityVerified":{"type":"boolean","const":false}},"required":["id","provenance","observedAt","adapterEndpoint","transport","task","input","status","reasonCode","durationMs","connectionObserved","responseShapeChecked","outputExcerpt","sourceUrls","cost","review","fresh","expiresAt","independentReview","qualityVerified"],"additionalProperties":false},{"type":"null"}]},"observations":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"id":{"type":"string"},"provenance":{"type":"string","const":"internal_live"},"observedAt":{"type":"string","format":"date-time"},"adapterEndpoint":{"type":"string"},"transport":{"type":"string","enum":["MCP","REST"]},"task":{"type":"string","enum":["web_search","read_page"]},"input":{"type":"string","maxLength":2000},"status":{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},"reasonCode":{"type":"string"},"durationMs":{"type":"integer","minimum":0,"maximum":300000},"connectionObserved":{"type":"boolean"},"responseShapeChecked":{"type":"boolean"},"outputExcerpt":{"type":["string","null"],"maxLength":1200},"sourceUrls":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string"}},"cost":{"type":"object","properties":{"relayChargeUsd":{"type":"number","const":0},"paymentSentUsd":{"type":"number","const":0},"providerCostUsd":{"type":"null"}},"required":["relayChargeUsd","paymentSentUsd","providerCostUsd"],"additionalProperties":false},"review":{"anyOf":[{"type":"object","properties":{"reviewedAt":{"type":"string","format":"date-time"},"scope":{"type":"string"},"criteria":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"criterionId":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["pass","fail","uncertain"]}},"required":["criterionId","description","status"],"additionalProperties":false}}},"required":["reviewedAt","scope","criteria"],"additionalProperties":false},{"type":"null"}]},"fresh":{"type":"boolean"},"expiresAt":{"type":"string","format":"date-time"},"independentReview":{"type":"boolean","const":false},"qualityVerified":{"type":"boolean","const":false}},"required":["id","provenance","observedAt","adapterEndpoint","transport","task","input","status","reasonCode","durationMs","connectionObserved","responseShapeChecked","outputExcerpt","sourceUrls","cost","review","fresh","expiresAt","independentReview","qualityVerified"],"additionalProperties":false}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","slug","serviceName","available","evidencePath","badgePath","source","connection","task","latestAttempt","observations","limitations"],"additionalProperties":false}}}},"404":{"description":"Unknown or unpublished service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/account/data":{"get":{"operationId":"exportOwnData","summary":"Export a bounded set of your private records","description":"Signed-in identity required; 10/hour. Each section reports total, limit and truncated. Private records only; no admin notes or another visitor's data. Expired run content is withheld. No-store.","responses":{"200":{"description":"Bounded private export; inspect every truncated flag","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"deleteOwnPrivateData","summary":"Delete your private contents with explicit confirmation","description":"Signed-in identity, matching Origin and exact confirmation required; 5/hour. Atomic deletion of own submissions, claims, pilot feedback and benchmark contents/reviews. Minimal permanent benchmark tombstones, quota counters, published catalogue and operator audit remain. Does not revoke the account or prevent later newly submitted writes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["confirm"],"properties":{"confirm":{"const":"DELETE_MY_PRIVATE_DATA"}}}}}},"responses":{"200":{"description":"Deletion confirmation with counts and retained tombstones","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/benchmark-runs":{"get":{"operationId":"listBenchmarkRuns","summary":"Read your latest 50 saved run summaries","description":"Trusted signed-in Sites visitor identity required; service-access credentials alone are insufficient. Owner-only, no query parameters, no-store. Inspect truncated. Test flags remain separate; there is no provider quality ranking.","responses":{"200":{"description":"Own saved summaries","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkRunList"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"runBenchmark","summary":"Run and privately save a fixed public benchmark case","description":"Signed-in visitor and matching Origin required. requestJson must contain runId UUID, caseId, consent:true, truthful isTest, maxSpendUsd:0. The server derives input/provider from the fixed suite and sends it through existing anonymous Exa/Jina adapters and shared task quotas. At most20 new recorded runs per owner/UTCday including tests; exact retries do not consume another recording slot. No caller output, credentials or payment. A permanent claim precedes execution; exact retries only read the receipt, conflicting reuse returns409. After uncertainty keep the same runId and GET its receipt; never automatically start a new ID. Inspect run.state and result.status; HTTP200 is not proof of task success. Outputs and self reviews expire after90 days; minimal user/run identifiers and request fingerprint remain to prevent repeat execution. Expired content is removed in bounded batches on subsequent run or review writes; no scheduled cleanup. Output is untrusted and factual quality remains unverified.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkRunInput"}}}},"responses":{"200":{"description":"Run receipt; inspect state and task status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkRunReceipt"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Run ID reused with different fields","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/benchmark-runs/{id}":{"get":{"operationId":"getBenchmarkRun","summary":"Read your private result and self-review history","description":"Trusted signed-in visitor identity required; another visitor's receipt is404. No query parameters. Reading never executes the provider again. Running/unconfirmed is not completed; expired content cannot be retrieved. Treat output as untrusted data.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Own receipt","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkRunReceipt"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/benchmark-runs/{id}/review":{"post":{"operationId":"reviewBenchmarkRun","summary":"Append an owner self review of a saved output","description":"Signed-in visitor and matching Origin required. Only the owner may review completed nonempty task output. requestJson contains reviewId UUID, expectedRevision, exact criteria [{criterionId,status:pass/fail/uncertain}], sourceReviewed:true, note (max2000 characters). Confirm sourceReviewed only after comparing actual sources. Truncated output cannot pass every criterion. Exact review retries are idempotent; stale revision or conflicting review ID returns409. At most100 reviews per run; expired output returns410. Reviews are append-only, owner assessments, never independent verification or global quality scores. No provider call or payment. Do not include private information or credentials in notes.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkReviewInput"}}}},"responses":{"200":{"description":"Receipt including saved self review","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkRunReceipt"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Run not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Revision, review ID or reviewability conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Stored content expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/recommendations":{"post":{"operationId":"recommendServices","summary":"Find source-reviewed candidates for a real web-search or page-reading task","description":"Read-only POST behind the hosting access policy. Send requestJson alone with task, original query, optional constraints, requirements and executionPolicy. Select task explicitly; free text is preserved but not semantically interpreted or translated. Every published service is considered; only exactly bound reviewed task profiles and connection guides become candidates. Inspect coverage and explicit exclusions for unreviewed or changed entries. Structured access, protocol (any/MCP/REST/x402) and payment (any/no_payment) must match the same reviewed task option. payment:no_payment excludes required or unestablished payment conditions; maxTaskCostUsd:0 excludes known payment-required options while unmeasured costs remain unknown. executionPolicy always has providerCalls:false, accountConnections:false and payments:false; these action restrictions do not by themselves exclude paid candidates. A supplied policy requires all three fields. Unmeasured cost, time, quality and output language remain unknown. No provider call, account check, payment, saved input, automatic selection or fallback. Candidate order is fixed, not a quality or sponsored rank. Inspect every echoed condition and unresolved requirement.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationRequest"}}}},"responses":{"200":{"description":"Candidate shortlist with exclusions and unresolved conditions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/benchmarks":{"get":{"operationId":"getBenchmarkSuite","summary":"Read 20 predefined benchmark cases and their review rubrics","description":"Five families across four languages. No query parameters. The suite publishes no shared live-run evidence; private run receipts are separate. Source URLs are reference material, not provider-quality evidence. No provider calls or writes.","responses":{"200":{"description":"Versioned test design and evidence status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkSuite"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/benchmarks/plan":{"post":{"operationId":"planBenchmark","summary":"Plan a case against current candidate readiness and hard constraints","description":"Public read-only POST. Send requestJson alone with caseId and optional constraints: maxTaskCostUsd, maxDurationMs, requireMeasuredQuality. Unknown/duplicate inner fields and query parameters are rejected. Budget does not authorize payment. Current published listing bindings determine setup availability; host account, quota and live availability are not checked. Unmeasured quality/cost/time remain unknown and cannot satisfy a requested measured constraint. No provider execution, persistence, quota usage or automatic fallback.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkPlanRequest"}}}},"responses":{"200":{"description":"Planning-only result; inspect every constraint and candidate readiness","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkPlan"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/connections/{provider}":{"get":{"operationId":"getConnectionHandoff","summary":"Prepare a host-managed provider connection","description":"Metadata only. Provider must be exa, jina-ai or browserless; query parameters and credentials are rejected. Uses the live published listing and exactly bound guide. Changed or unpublished listings have no usable options. Returns official setup endpoints and sources, an unknown host account status, and no payment authorization. ToolSkipper does not connect, test accounts, store keys or execute authenticated provider tasks. Configure the connection in the agent host and discover live schemas there before any authorized use.","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","enum":["exa","jina-ai","browserless"]}}],"responses":{"200":{"description":"Host-managed setup; inspect availability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectionHandoff"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/tasks/plan":{"post":{"operationId":"planTask","summary":"Inspect a supported task and its access requirements","description":"Public read-only planning endpoint. If Origin is supplied it must match ToolSkipper. The requestJson string is the complete task request; unknown/duplicate fields and spending above zero are rejected. No provider call occurs. Availability reflects reviewed setup and adapter support, not a live health check or accounts saved in another agent host.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRequest"}}}},"responses":{"200":{"description":"Current task plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskPlan"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/tasks/run":{"post":{"operationId":"executeTask","summary":"Run a bounded public task using anonymous provider access","description":"Signed-in browser endpoint with matching Origin. Explicit execution only. Same requestJson as plan. Exa web search or Jina reading of approved documentation URLs; Browserless returns connection_required without a provider call. Inputs go to the selected provider. No supplied credentials, payments, automatic retries or provider fallback. HTTP200 can contain completed, no_results, connection_required, payment_required, rate_limited or failed: inspect status. Maximum10 ready attempts/caller/hour and30/Site/hour; results are response-local and no pilot feedback is automatically saved. Completion checks provider response shape, not output quality. Not idempotent: retry only as a new intentional attempt.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskRequest"}}}},"responses":{"200":{"description":"Execution result; inspect status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/pilot/reports":{"post":{"operationId":"reportPilotOutcome","summary":"Submit an optional final pilot outcome","description":"Requires a signed-in Sites visitor, matching Origin and consent:true for this report. Only documented discrete fields; no free text, queries, URLs or email. One immutable reportId per visitor/task attempt; exact retries return200 without consuming quota and conflicting retries return409. New reports return201. Every outcome except no_match requires a currently published service and its exact category; no_match requires null serviceSlug. Limit20 new reports per UTC day including test reports. Site-scoped visitor ID is stored privately, not email. Self-reported, not independently verified. Idempotency is retained for90 days. Older records are ineligible and removed in bounded batches on later report writes; no scheduled deletion runs. Signed-in users can export a bounded set and delete private contents through /api/account/data.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotReportInput"}}}},"responses":{"200":{"description":"Identical retained report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotReportResponse"}}}},"201":{"description":"Durably stored report","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotReportResponse"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Service missing or unpublished","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflicting retry or concurrent service change","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"20 new reports per UTC day reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/pilot":{"get":{"operationId":"pilotSummary","description":"Explicit administrator membership required. Fixed rolling30-day window; no query parameters. Main counts and distinct/returning participants exclude test reports. A returning participant reported on at least2 distinct UTC days in the window. Test count is separate; latest20 reports include the test flag. No visitor IDs, report UUIDs, email, search queries or private provider data are returned. These self-reported counts are not a provider reliability score or conversion funnel.","responses":{"200":{"description":"Private, identity-free pilot summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotAdminSummary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/catalogue":{"get":{"operationId":"publishedCatalogue","description":"Published seed entries plus approved additions with durable edits and unpublication overlays. Up to 500 managed identities; unpublished entries reserve their identity and capacity. No-store; returns 503 on storage failure instead of silently falling back to seed data.","responses":{"200":{"description":"Complete published snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string"},"source":{"type":"string"},"sourceLicense":{"type":"string"},"services":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/Service"}}}}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/services":{"get":{"operationId":"searchServices","summary":"Search the sourced catalogue","description":"Deterministic keyword and bounded alias matching. q and optional q_en each have a maximum of 200 characters after trimming (UTF-16 code units); overlong requests return 400 and are never truncated. Optional q_en uses an agent-supplied English translation while preserving the original q in response metadata. Preserve numbers, negations, regions, authentication and payment constraints when composing concise wording or translating. ToolSkipper does not verify translation accuracy or infer language confidence. Category, protocol and pricing filters are never relaxed. Inspect search.reasonCodes, warnings and suggestions: NO_SEARCHABLE_TERMS, UNSUPPORTED_CONDITIONS and NO_CATALOGUE_MATCH distinguish empty-result causes. No match means no matching listing in the current published catalogue, not that no suitable provider exists elsewhere. GET retains the legacy contract; use POST /api/services or search_services with requestJson for a complete originalRequest, focused query and explicit discovery-only policy. GET does not accept originalRequest, requirements or executionPolicy URL parameters. Repeated or unknown parameters return 400.","parameters":[{"name":"q","in":"query","description":"Original Unicode query, at most 200 characters after trimming surrounding whitespace (UTF-16 code units); longer queries are rejected, never truncated. Must be nonempty when q_en is supplied. Preserve every constraint when shortening wording.","schema":{"type":"string","maxLength":200}},{"name":"q_en","in":"query","description":"Optional caller-supplied English translation or pivot, 1–200 characters after trimming (UTF-16 code units). Requires nonempty original q. Preserve every original condition; longer wording is rejected, never truncated. No external translation call is made.","schema":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[\\s\\S]*\\S[\\s\\S]*$"},"example":"extract content from websites"},{"name":"category","in":"query","schema":{"type":"string","enum":["all","search","extraction","data","browser","documents"]}},{"name":"protocol","in":"query","schema":{"type":"string","enum":["all","MCP","REST","x402"]}},{"name":"pricing","in":"query","schema":{"type":"string","enum":["all","free","freemium","usage-based","subscription","unknown"]}},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","name","recent"]}},{"name":"limit","in":"query","description":"Defaults to 50 for full view, 5 for compact view.","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"view","in":"query","description":"Full records preserve the existing REST default. Compact records include deterministic match reasons and source evidence.","schema":{"type":"string","enum":["full","compact"],"default":"full"}}],"responses":{"200":{"description":"Matching live services with original/effective query, mode, terms, structured reasonCodes, warnings and suggestions","content":{"application/json":{"schema":{"type":"object","properties":{"services":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","checkedAt"],"additionalProperties":false},"docsUrl":{"type":"string"},"source":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string","enum":["registry","provider"]},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]}},"required":["url","type","checkedAt","verification"],"additionalProperties":false},"matchReasons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["keyword","filter","catalogue"]},"field":{"type":"string","enum":["name_provider","capabilities","description","category","protocol","pricing","catalogue"]},"term":{"type":["string","null"]},"matchedTerm":{"type":["string","null"]}},"required":["kind","field","term","matchedTerm"],"additionalProperties":false},"minItems":1}},"required":["slug","name","provider","tagline","category","protocols","auth","pricing","docsUrl","source","matchReasons"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"website":{"type":"string"},"docsUrl":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"tags":{"type":"array","items":{"type":"string"}},"capabilities":{"type":"array","items":{"type":"string"}},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"summary":{"type":"string"},"url":{"type":["string","null"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","summary","url","checkedAt"],"additionalProperties":false},"endpoint":{"type":["string","null"]},"registryName":{"type":["string","null"]},"sourceUrl":{"type":"string"},"sourceType":{"type":"string","enum":["registry","provider"]},"sourceCheckedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]},"notes":{"type":"string"},"featured":{"type":"boolean"},"color":{"type":"string"}},"required":["id","slug","name","provider","tagline","description","website","docsUrl","category","tags","capabilities","protocols","auth","pricing","endpoint","registryName","sourceUrl","sourceType","sourceCheckedAt","verification","notes","featured","color"],"additionalProperties":false}]},"maxItems":100},"total":{"type":"integer","minimum":0},"returned":{"type":"integer","minimum":0,"maximum":100},"generatedAt":{"type":"string","format":"date-time"},"view":{"type":"string","enum":["compact","full"]},"search":{"type":"object","properties":{"discovery":{"type":"object","properties":{"originalRequest":{"type":["string","null"],"minLength":1,"maxLength":2000},"requirements":{"type":"array","maxItems":8,"items":{"type":"string","minLength":1,"maxLength":200}},"executionPolicy":{"type":"object","properties":{"providerCalls":{"type":"boolean","const":false},"accountConnections":{"type":"boolean","const":false},"payments":{"type":"boolean","const":false}},"required":["providerCalls","accountConnections","payments"],"additionalProperties":false},"decomposition":{"type":"string","enum":["caller_supplied","not_supplied"]},"assessment":{"type":"string","const":"unassessed"},"resultsAre":{"type":"string","const":"metadata_candidates"}},"required":["originalRequest","requirements","executionPolicy","decomposition","assessment","resultsAre"],"additionalProperties":false},"originalQuery":{"type":"string"},"effectiveQuery":{"type":"string"},"mode":{"type":"string","enum":["browse","keywords","agent-translation"]},"reasonCodes":{"type":"array","items":{"type":"string","enum":["QUERY_TOO_LONG","NO_SEARCHABLE_TERMS","UNSUPPORTED_CONDITIONS","NO_CATALOGUE_MATCH"]},"maxItems":1,"description":"Empty when matches exist. Otherwise identifies the first blocking cause: an overlong query, no searchable terms, unsupported exclusions/alternatives/numerical comparisons, or no match in the current published catalogue. It does not establish that no suitable provider exists elsewhere. REST/MCP reject overlong requests before returning search results."},"terms":{"type":"array","items":{"type":"string"}},"appliedFilters":{"type":"object","properties":{"category":{"anyOf":[{"type":"string","enum":["search","extraction","data","browser","documents"]},{"type":"null"}]},"protocol":{"anyOf":[{"type":"string","enum":["MCP","REST","x402"]},{"type":"null"}]},"pricing":{"anyOf":[{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},{"type":"null"}]}},"required":["category","protocol","pricing"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"string"}}},"required":["discovery","originalQuery","effectiveQuery","mode","reasonCodes","terms","appliedFilters","warnings","suggestions"],"additionalProperties":false}},"required":["services","total","returned","generatedAt","view","search"],"additionalProperties":false,"allOf":[{"if":{"properties":{"view":{"const":"compact"}}},"then":{"properties":{"services":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","checkedAt"],"additionalProperties":false},"docsUrl":{"type":"string"},"source":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string","enum":["registry","provider"]},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]}},"required":["url","type","checkedAt","verification"],"additionalProperties":false},"matchReasons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["keyword","filter","catalogue"]},"field":{"type":"string","enum":["name_provider","capabilities","description","category","protocol","pricing","catalogue"]},"term":{"type":["string","null"]},"matchedTerm":{"type":["string","null"]}},"required":["kind","field","term","matchedTerm"],"additionalProperties":false},"minItems":1}},"required":["slug","name","provider","tagline","category","protocols","auth","pricing","docsUrl","source","matchReasons"],"additionalProperties":false}}}},"else":{"properties":{"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"website":{"type":"string"},"docsUrl":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"tags":{"type":"array","items":{"type":"string"}},"capabilities":{"type":"array","items":{"type":"string"}},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"summary":{"type":"string"},"url":{"type":["string","null"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","summary","url","checkedAt"],"additionalProperties":false},"endpoint":{"type":["string","null"]},"registryName":{"type":["string","null"]},"sourceUrl":{"type":"string"},"sourceType":{"type":"string","enum":["registry","provider"]},"sourceCheckedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]},"notes":{"type":"string"},"featured":{"type":"boolean"},"color":{"type":"string"}},"required":["id","slug","name","provider","tagline","description","website","docsUrl","category","tags","capabilities","protocols","auth","pricing","endpoint","registryName","sourceUrl","sourceType","sourceCheckedAt","verification","notes","featured","color"],"additionalProperties":false}}}}}]}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"searchServicesWithContext","summary":"Discover catalogue candidates while retaining the complete request","description":"Read-only POST with the same requestJson envelope as MCP search_services. The focused query and exact filters find metadata candidates; originalRequest and requirements are preserved but remain unassessed. Caller-supplied separation is not semantically verified. executionPolicy always prohibits provider calls, account connections and payments; it does not claim listed services are free. No provider request or persistence. Compare search.discovery, original/effective queries and appliedFilters before using results. Unknown, duplicate and conflicting fields are rejected. Query parameters are not accepted.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchRequest"}}}},"responses":{"200":{"description":"Metadata candidates with preserved unassessed request and no-action policy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResult"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Body too large","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/services/{slug}":{"get":{"operationId":"getService","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"One live service","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"$ref":"#/components/schemas/Service"}}}}}},"404":{"description":"Unknown slug","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/services/{slug}/connection":{"get":{"operationId":"getConnectionSpec","summary":"Get sourced connection metadata","description":"Read-only descriptor of a published service. Unknown transport, authentication, endpoint and tool schemas remain explicit. Supplementary captured evidence is attached only while its service identity and relevant fields still match. No provider request, install, authentication or payment occurs.","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Connection descriptor","content":{"application/json":{"schema":{"type":"object","properties":{"connection":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"service":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"declaredInterfaces":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"endpoint":{"type":["string","null"]},"deployment":{"type":"object","properties":{"kind":{"type":"string","enum":["remote","unknown"]},"transport":{"type":"string","enum":["streamable-http","sse","unknown"]},"evidence":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["url","checkedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["kind","transport","evidence"],"additionalProperties":false},"packages":{"type":"array","items":{"type":"object","properties":{"registryType":{"type":"string"},"identifier":{"type":"string"},"version":{"type":["string","null"]},"transport":{"type":"string","enum":["stdio","unknown"]},"evidence":{"type":"object","properties":{"url":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["url","checkedAt"],"additionalProperties":false}},"required":["registryType","identifier","version","transport","evidence"],"additionalProperties":false}},"authentication":{"type":"object","properties":{"method":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"],"description":"Recorded authentication method. It may be optional or specific to an endpoint, operation or plan; it is not a universal requirement."},"requirements":{"type":"array","items":{"type":"string"},"description":"Documentation checks to resolve authentication needs for the selected connection. These entries do not assert that credentials or OAuth are mandatory."},"notes":{"type":"string"},"evidence":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["url","checkedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["method","requirements","notes","evidence"],"additionalProperties":false},"documentationUrl":{"type":"string"},"source":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string","enum":["registry","provider"]},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]}},"required":["url","type","checkedAt","verification"],"additionalProperties":false},"providerToolSchemas":{"type":"null"},"gaps":{"type":"array","items":{"type":"string"}},"nextSteps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string"},"url":{"type":"string"}},"required":["action","url"],"additionalProperties":false}},"setupGuide":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"reviewedAt":{"type":"string","format":"date-time"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"checkedAt":{"type":"string","format":"date-time"}},"required":["id","url","title","checkedAt"],"additionalProperties":false},"minItems":1},"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"protocol":{"type":"string","enum":["MCP","REST"]},"transport":{"type":"string","enum":["streamable-http","sse","stdio","https","unknown"]},"endpoint":{"type":["string","null"]},"authentication":{"type":"object","properties":{"method":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"requirement":{"type":"string","enum":["required","optional","conditional","unknown"]},"placement":{"type":"string"},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["method","requirement","placement","sourceIds"],"additionalProperties":false},"steps":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["text","sourceIds"],"additionalProperties":false},"minItems":1},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["id","label","protocol","transport","endpoint","authentication","steps","sourceIds"],"additionalProperties":false},"minItems":1},"pricing":{"type":"object","properties":{"summary":{"type":"string"},"freeAccess":{"type":"string"},"limits":{"type":"array","items":{"type":"string"}},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["summary","freeAccess","limits","sourceIds"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}}},"required":["slug","reviewedAt","sources","options","pricing","limitations"],"additionalProperties":false},{"type":"null"}]},"testing":{"type":"object","properties":{"connectionTestedByRelay":{"type":"boolean","const":false},"taskTestedByRelay":{"type":"boolean","const":false}},"required":["connectionTestedByRelay","taskTestedByRelay"],"additionalProperties":false}},"required":["schemaVersion","service","declaredInterfaces","endpoint","deployment","packages","authentication","documentationUrl","source","providerToolSchemas","gaps","nextSteps","setupGuide","testing"],"additionalProperties":false}},"required":["connection"],"additionalProperties":false}}}},"404":{"description":"Unknown or unpublished service","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/services":{"get":{"operationId":"listManagedServices","description":"Explicit administrator membership required. Includes original catalogue entries and reviewed additions. Private maintenance notes are never returned through public catalogue APIs.","parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["published","unpublished","all"],"default":"published"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":500,"default":0}}],"responses":{"200":{"description":"Managed listings","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/AdminService"}},"total":{"type":"integer"},"counts":{"type":"object","properties":{"published":{"type":"integer"},"unpublished":{"type":"integer"}}},"limit":{"type":"integer"},"offset":{"type":"integer"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/services/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"operationId":"getManagedService","description":"Explicit administrator membership required. Full current record and latest 50 private maintenance decisions. Does not expose reviewer identities.","responses":{"200":{"description":"Current listing and maintenance history","content":{"application/json":{"schema":{"type":"object","properties":{"item":{"$ref":"#/components/schemas/AdminService"},"history":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/ServiceHistoryEntry"}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"maintainService","description":"Administrator membership and matching Origin required. Edit, unpublish or restore with expectedRevision and a private note. Atomic revision check, update and audit; stable ID/slug and Registry identity preserved. Unpublished entries reserve their keys and catalogue slot. Edit keeps visibility unchanged; unpublish/restore must omit service. Limit 100/hour.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LifecycleInput"}}}},"responses":{"200":{"description":"Saved listing","content":{"application/json":{"schema":{"type":"object","properties":{"item":{"$ref":"#/components/schemas/AdminService"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Stale revision, visibility or reserved identity conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/health":{"get":{"operationId":"health","responses":{"200":{"description":"Live catalogue and migrated database ready","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Database or catalogue unavailable; no seed fallback","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/api/session":{"get":{"operationId":"getSession","responses":{"200":{"description":"Signed-in visitor or user:null with explicit admin state. Never cached.","content":{"application/json":{"schema":{"type":"object","properties":{"user":{"type":["object","null"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"email":{"type":"string"}}},"isAdmin":{"type":"boolean"},"adminBootstrapAvailable":{"type":"boolean"}}}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/bootstrap":{"post":{"operationId":"bootstrapAdmin","description":"Disabled in this release. Existing administrator membership is retained; no visitor can claim administrator status.","responses":{"200":{"description":"Explicit administrator membership established","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Another administrator already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/queue":{"get":{"operationId":"reviewQueue","description":"Requires explicit administrator membership. Up to 100 combined entries; pending oldest first, reviewed newest first. No contact emails or user IDs returned.","parameters":[{"name":"status","in":"query","schema":{"type":"string","enum":["pending","approved","rejected"],"default":"pending"}},{"name":"q","in":"query","schema":{"type":"string","maxLength":100}}],"responses":{"200":{"description":"Review items and counts","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","maxItems":100,"items":{"$ref":"#/components/schemas/ReviewItem"}},"counts":{"type":"object","properties":{"pending":{"type":"integer"},"approved":{"type":"integer"},"rejected":{"type":"integer"}}}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/reviews/{kind}/{id}":{"post":{"operationId":"reviewCandidate","description":"Explicit administrator membership and matching Origin required. Approve with a fully reviewed service or reject a pending item. Status, publication and audit commit atomically. Duplicate IDs/slugs/websites/registry names/endpoints and stale statuses return 409. Approval cannot manufacture connection-tested evidence. Limit100/hour.","parameters":[{"name":"kind","in":"path","required":true,"schema":{"type":"string","enum":["submission","discovery"]}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewInput"}}}},"responses":{"200":{"description":"Durable decision; approval also includes published service","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Candidate missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Review or catalogue conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/activity":{"get":{"operationId":"reviewActivity","description":"Explicit administrator membership required. Most recent100 decisions; no claimant tokens, contact emails or reviewer IDs.","responses":{"200":{"description":"Audit activity","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/admin/discovery":{"get":{"operationId":"discoveryRuns","description":"Explicit administrator membership required; recent bounded Registry discovery runs.","responses":{"200":{"description":"Discovery runs","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"discoverCandidates","description":"Explicit administrator membership and matching Origin required. Bounded metadata-only search of the fixed Official MCP Registry API. Candidates remain pending; never executes provider code, follows provider URLs or publishes automatically. Limit10/admin/hour; success201, recorded Registry failure502.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":2,"maxLength":80}}}}}},"responses":{"201":{"description":"Discovery run and counters","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"502":{"description":"Recorded Registry fetch failure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/submissions":{"get":{"operationId":"mySubmissions","description":"Lists up to 100 submissions owned by the signed-in visitor, newest first.","responses":{"200":{"description":"Own submissions","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"submitService","description":"Signed-in browser endpoint. Sites dispatch supplies identity; caller-supplied identity headers are not an authentication mechanism. Requires matching Origin. Never publishes automatically. Maximum 5 attempts per hour.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionInput"}}}},"responses":{"201":{"description":"Durably stored pending submission","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/claims":{"get":{"operationId":"myClaims","description":"Own claims only, including DNS challenges. Never in public catalogue responses.","responses":{"200":{"description":"Own claims","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"claimService","description":"Signed-in browser endpoint. Sites dispatch supplies identity; caller-supplied identity headers are not an authentication mechanism. Requires matching Origin. Never publishes automatically. Issues a DNS TXT challenge valid for seven days. Maximum 10 attempts per hour.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["serviceId"],"properties":{"serviceId":{"type":"string"}}}}}},"responses":{"200":{"description":"Existing claim","content":{"application/json":{"schema":{"type":"object"}}}},"201":{"description":"New challenge","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Service missing","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/claims/{id}/verify":{"post":{"operationId":"verifyClaim","description":"Signed-in browser endpoint. Sites dispatch supplies identity; caller-supplied identity headers are not an authentication mechanism. Requires matching Origin. Never publishes automatically. Requires an exact DNS TXT match from Cloudflare DNS. Maximum 15 attempts per hour. Domain control is not an endorsement.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Claim with verified:true or verified:false","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Claim not found for this visitor","content":{"application/json":{"schema":{"type":"object"}}}},"410":{"description":"Expired challenge","content":{"application/json":{"schema":{"type":"object"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/events":{"post":{"operationId":"recordEvent","description":"Signed-in browser endpoint. Sites dispatch supplies identity; caller-supplied identity headers are not an authentication mechanism. Requires matching Origin. Never publishes automatically. Coarse day, event enum and service ID only. No user ID, email, URL or query stored in event records. Maximum 120 per hour.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["event","serviceId"],"properties":{"event":{"type":"string","enum":["source_visit","compare"]},"serviceId":{"type":"string"}}}}}},"responses":{"204":{"description":"Event stored"},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Sign-in required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Origin denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request quota exceeded. Honor Retry-After; no automatic retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"description":"Seconds to wait before another request","schema":{"type":"integer","minimum":1}}}},"503":{"description":"Storage temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/mcp":{"post":{"operationId":"mcp","description":"Stateless JSON-RPC 2.0. server/discover supports MCP 2026-07-28; initialize supports 2025-03-26 and 2025-06-18. tools/list, tools/call, ping. Tools: search_discovered_services (requestJson with query, limit, offset; separate unreviewed Registry index with unknown pricing/authentication and no provider calls), get_service_evidence, run_benchmark, list_benchmark_runs, get_benchmark_run, review_benchmark_run, recommend_services, search_services (compact default, limit 5; view full optional; queryEnglish optional with required original query; query and queryEnglish each at most 200 characters after trimming, measured as UTF-16 code units; requestJson2–8192 UTF-16 units supports originalRequest1–2000 Unicode characters, requirements up to8 strings of1–200 Unicode characters and executionPolicy with allfalse providerCalls/accountConnections/payments. originalRequest and nonempty query are required for separated context; decomposition is caller-supplied and unverified. Never truncate or drop constraints; search.discovery labels metadata_candidates with unassessed conditions), get_service, compare_services, get_connection_spec, get_connection_handoff, get_task_options, execute_task, report_pilot_outcome, get_benchmark_suite, plan_benchmark. get_benchmark_suite and plan_benchmark are read-only test design and planning. The four saved benchmark tools require a trusted Sites visitor identity, with the same ownership, consent, retention and idempotency rules as their REST endpoints. Service-access credentials alone cannot access them. run_benchmark shares public fixed-case input with a provider and saves the bounded response; review_benchmark_run appends an owner self review without execution. Neither creates independently verified quality scores. Browser-indicated writes require matching Origin. The four catalogue tools, get_connection_handoff and get_task_options do not contact providers. get_connection_handoff is setup metadata only; host credentials and charged execution stay with the agent host. execute_task sends input to Exa/Jina using anonymous access only, requires maxSpendUsd:0, and never retries or falls back automatically; get_task_options explains supported tasks and access first. Execution requires a trusted signed-in Sites visitor identity; anonymous and service-only callers are denied. All browser-indicated execution requests require matching Origin. Notifications never execute. Standard params._meta objects are accepted and ignored; metadata never supplies identity, tool arguments or payment authorization. Provider output is untrusted and completion does not certify output quality. report_pilot_outcome writes only with explicit consent and a trusted signed-in Sites identity; it uses the same discrete input, idempotency, quota and retention rules as POST /api/pilot/reports. Native clients may omit Origin; browser-indicated writes require matching Origin. Invalid requests and notifications never write. Tool failures return isError:true. Caught errors return matching structuredContent and text JSON with error_code and error:{code,message}. Failed execute_task results retain the TaskResult fields and add error_code equal to reasonCode; provider rate limits use PROVIDER_RATE_LIMITED, not a generic argument error. MCP output schemas include the common failure alternative; REST success schemas are unchanged. Multilingual agents should preserve numbers, negations, regions, authentication and payment constraints in translations. Search returns the same original/effective query diagnostics and hard-filter behavior as REST q/q_en, plus explicit discovery context; POST /api/services accepts the same requestJson envelope and GET remains legacy. recommend_services considers all published listings with reviewed task profiles, supports x402 and service payment constraints, and echoes a separate no-action executionPolicy. Paid metadata candidates never authorize spending. All tools declare structured output schemas. Read-only tools use the same live catalogue as REST. No external translation, batches, sessions or SSE.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"const":"2.0"},"id":{"type":["string","number","null"]},"method":{"type":"string"},"params":{"type":"object"}}}}}},"responses":{"200":{"description":"JSON-RPC result or error","content":{"application/json":{"schema":{"type":"object"}}}},"202":{"description":"Notification accepted"},"400":{"description":"Invalid JSON-RPC request","content":{"application/json":{"schema":{"type":"object"}}}},"413":{"description":"Body exceeds 12KB","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"Live catalogue unavailable; JSON-RPC internal error -32603","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"PublicServiceEvidence":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"slug":{"type":"string"},"serviceName":{"type":["string","null"]},"available":{"type":"boolean"},"evidencePath":{"type":"string"},"badgePath":{"type":"string"},"source":{"type":"object","properties":{"status":{"type":"string","enum":["reviewed","unavailable"]},"checkedAt":{"type":["string","null"]},"scope":{"type":"string"},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":false}}},"required":["status","checkedAt","scope","sources"],"additionalProperties":false},"connection":{"type":"object","properties":{"status":{"type":"string","enum":["observed","not_observed","stale","unavailable"]},"observationId":{"type":["string","null"]},"observedAt":{"type":["string","null"]},"outcome":{"type":["string","null"],"enum":["completed","no_results","connection_required","payment_required","rate_limited","failed",null]}},"required":["status","observationId","observedAt","outcome"],"additionalProperties":false},"task":{"type":"object","properties":{"status":{"type":"string","enum":["internally_reviewed","not_reviewed","stale","unavailable"]},"observationId":{"type":["string","null"]},"reviewedAt":{"type":["string","null"]},"qualityVerified":{"type":"boolean","const":false},"independentReview":{"type":"boolean","const":false}},"required":["status","observationId","reviewedAt","qualityVerified","independentReview"],"additionalProperties":false},"latestAttempt":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"provenance":{"type":"string","const":"internal_live"},"observedAt":{"type":"string","format":"date-time"},"adapterEndpoint":{"type":"string"},"transport":{"type":"string","enum":["MCP","REST"]},"task":{"type":"string","enum":["web_search","read_page"]},"input":{"type":"string","maxLength":2000},"status":{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},"reasonCode":{"type":"string"},"durationMs":{"type":"integer","minimum":0,"maximum":300000},"connectionObserved":{"type":"boolean"},"responseShapeChecked":{"type":"boolean"},"outputExcerpt":{"type":["string","null"],"maxLength":1200},"sourceUrls":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string"}},"cost":{"type":"object","properties":{"relayChargeUsd":{"type":"number","const":0},"paymentSentUsd":{"type":"number","const":0},"providerCostUsd":{"type":"null"}},"required":["relayChargeUsd","paymentSentUsd","providerCostUsd"],"additionalProperties":false},"review":{"anyOf":[{"type":"object","properties":{"reviewedAt":{"type":"string","format":"date-time"},"scope":{"type":"string"},"criteria":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"criterionId":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["pass","fail","uncertain"]}},"required":["criterionId","description","status"],"additionalProperties":false}}},"required":["reviewedAt","scope","criteria"],"additionalProperties":false},{"type":"null"}]},"fresh":{"type":"boolean"},"expiresAt":{"type":"string","format":"date-time"},"independentReview":{"type":"boolean","const":false},"qualityVerified":{"type":"boolean","const":false}},"required":["id","provenance","observedAt","adapterEndpoint","transport","task","input","status","reasonCode","durationMs","connectionObserved","responseShapeChecked","outputExcerpt","sourceUrls","cost","review","fresh","expiresAt","independentReview","qualityVerified"],"additionalProperties":false},{"type":"null"}]},"observations":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"id":{"type":"string"},"provenance":{"type":"string","const":"internal_live"},"observedAt":{"type":"string","format":"date-time"},"adapterEndpoint":{"type":"string"},"transport":{"type":"string","enum":["MCP","REST"]},"task":{"type":"string","enum":["web_search","read_page"]},"input":{"type":"string","maxLength":2000},"status":{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},"reasonCode":{"type":"string"},"durationMs":{"type":"integer","minimum":0,"maximum":300000},"connectionObserved":{"type":"boolean"},"responseShapeChecked":{"type":"boolean"},"outputExcerpt":{"type":["string","null"],"maxLength":1200},"sourceUrls":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"string"}},"cost":{"type":"object","properties":{"relayChargeUsd":{"type":"number","const":0},"paymentSentUsd":{"type":"number","const":0},"providerCostUsd":{"type":"null"}},"required":["relayChargeUsd","paymentSentUsd","providerCostUsd"],"additionalProperties":false},"review":{"anyOf":[{"type":"object","properties":{"reviewedAt":{"type":"string","format":"date-time"},"scope":{"type":"string"},"criteria":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"criterionId":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["pass","fail","uncertain"]}},"required":["criterionId","description","status"],"additionalProperties":false}}},"required":["reviewedAt","scope","criteria"],"additionalProperties":false},{"type":"null"}]},"fresh":{"type":"boolean"},"expiresAt":{"type":"string","format":"date-time"},"independentReview":{"type":"boolean","const":false},"qualityVerified":{"type":"boolean","const":false}},"required":["id","provenance","observedAt","adapterEndpoint","transport","task","input","status","reasonCode","durationMs","connectionObserved","responseShapeChecked","outputExcerpt","sourceUrls","cost","review","fresh","expiresAt","independentReview","qualityVerified"],"additionalProperties":false}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","slug","serviceName","available","evidencePath","badgePath","source","connection","task","latestAttempt","observations","limitations"],"additionalProperties":false},"BenchmarkRunInput":{"type":"object","properties":{"requestJson":{"type":"string","minLength":2,"maxLength":4096,"description":"Complete consented request: {\"runId\":\"new UUID retained for retries\",\"caseId\":\"read-payment-doc-en\",\"consent\":true,\"isTest\":true,\"maxSpendUsd\":0}. Signed-in visitor identity is required. Select a current fixed benchmark case. ToolSkipper claims the runId before using its existing anonymous task adapter and quotas, stores the bounded result privately for 90 days, and retains a minimal permanent idempotency tombstone. Same ID and fields retrieve its existing state and never execute it again, including after uncertainty or expiry. No custom inputs, credentials, caller results, payments or account-backed runs."}},"required":["requestJson"],"additionalProperties":false},"BenchmarkRunReceipt":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"replayed":{"type":"boolean"},"run":{"type":"object","properties":{"runId":{"type":"string","format":"uuid"},"state":{"type":"string","enum":["running","completed","unconfirmed","expired"]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expiresAt":{"type":"string","format":"date-time"},"isTest":{"type":["boolean","null"]},"caseId":{"anyOf":[{"type":"string"},{"type":"null"}]},"caseTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"task":{"anyOf":[{"type":"string","enum":["web_search","read_page"]},{"type":"null"}]},"provider":{"anyOf":[{"type":"string","enum":["exa","jina-ai"]},{"type":"null"}]},"resultStatus":{"anyOf":[{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},{"type":"null"}]},"reviewRevision":{"type":"integer","minimum":0,"maximum":100},"latestReviewOutcome":{"anyOf":[{"type":"string","enum":["pass","fail","uncertain"]},{"type":"null"}]},"qualityVerified":{"type":"boolean","const":false}},"required":["runId","state","createdAt","completedAt","expiresAt","isTest","caseId","caseTitle","language","task","provider","resultStatus","reviewRevision","latestReviewOutcome","qualityVerified"],"additionalProperties":false},"case":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"family":{"type":"string"},"language":{"type":"string","enum":["en","tr","de","es"]},"task":{"type":"string","enum":["web_search","read_page"]},"title":{"type":"string"},"instruction":{"type":"string"},"input":{"type":"string"},"sourceUrls":{"type":"array","minItems":1,"items":{"type":"string","format":"uri"}},"rubric":{"type":"array","minItems":1,"items":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"}},"required":["id","description"],"additionalProperties":false}},"cohortKey":{"type":"string"}},"required":["id","family","language","task","title","instruction","input","sourceUrls","rubric","cohortKey"],"additionalProperties":false},{"type":"null"}]},"suiteVersion":{"anyOf":[{"type":"string"},{"type":"null"}]},"result":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"task":{"type":"string","enum":["web_search","read_page","browser_screenshot"]},"provider":{"type":"string","enum":["exa","jina-ai","browserless"]},"status":{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},"reasonCode":{"type":"string"},"message":{"type":"string"},"output":{"anyOf":[{"type":"object","properties":{"text":{"type":"string","maxLength":16000},"truncated":{"type":"boolean"}},"required":["text","truncated"],"additionalProperties":false},{"type":"null"}]},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"durationMs":{"type":"number","minimum":0},"retryAfterSeconds":{"type":["number","null"],"minimum":0,"maximum":86400},"recovery":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"guidance_only"},"automaticRetry":{"type":"boolean","const":false},"automaticFallback":{"type":"boolean","const":false},"summary":{"type":"string"},"sameRouteRetry":{"type":"object","properties":{"allowed":{"type":"boolean"},"requiresExplicitRequest":{"type":"boolean","const":true},"minimumDelaySeconds":{"type":["number","null"],"minimum":0,"maximum":86400},"availabilityGuaranteed":{"type":"boolean","const":false}},"required":["allowed","requiresExplicitRequest","minimumDelaySeconds","availabilityGuaranteed"],"additionalProperties":false},"alternatives":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["inspect_source","review_host_connection","review_client_execution","stop"]},"label":{"type":"string"},"description":{"type":"string"},"url":{"type":["string","null"]},"requiresAccount":{"type":"boolean"},"requiresSpendingReview":{"type":"boolean"}},"required":["action","label","description","url","requiresAccount","requiresSpendingReview"],"additionalProperties":false}}},"required":["mode","automaticRetry","automaticFallback","summary","sameRouteRetry","alternatives"],"additionalProperties":false},{"type":"null"}]},"validation":{"type":"object","properties":{"responseShapeChecked":{"type":"boolean"},"qualityVerified":{"type":"boolean","const":false}},"required":["responseShapeChecked","qualityVerified"],"additionalProperties":false},"cost":{"type":"object","properties":{"relayChargeUsd":{"type":"number","const":0},"paymentSentUsd":{"type":"number","const":0},"providerCostUsd":{"type":"null"}},"required":["relayChargeUsd","paymentSentUsd","providerCostUsd"],"additionalProperties":false},"plan":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"task":{"type":"string","enum":["web_search","read_page","browser_screenshot"]},"input":{"type":"string"},"provider":{"type":"string","enum":["exa","jina-ai","browserless"]},"availability":{"type":"string","enum":["ready","host_connection_required","unavailable"]},"canExecute":{"type":"boolean"},"reasonCode":{"type":"string"},"summary":{"type":"string"},"connection":{"type":"object","properties":{"serviceUrl":{"type":"string"},"documentationUrl":{"type":"string"},"endpoint":{"type":"string"},"authentication":{"type":"string","enum":["keyless","host_managed"]},"hostConnectionChecked":{"type":"boolean","const":false}},"required":["serviceUrl","documentationUrl","endpoint","authentication","hostConnectionChecked"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"maxSpendUsd":{"type":"number","const":0},"allowedReadOrigins":{"type":"array","items":{"type":"string"}},"allowedReadTargets":{"type":"array","items":{"type":"object","properties":{"origin":{"type":"string"},"pathPrefix":{"type":"string"},"subpaths":{"type":"boolean"}},"required":["origin","pathPrefix","subpaths"],"additionalProperties":false}},"allowQueries":{"type":"boolean","const":false},"maxInputChars":{"type":"number","const":1000},"timeoutMs":{"type":"number","const":25000},"maxResponseBytes":{"type":"number","const":262144},"maxOutputChars":{"type":"number","const":16000}},"required":["maxSpendUsd","allowedReadOrigins","allowedReadTargets","allowQueries","maxInputChars","timeoutMs","maxResponseBytes","maxOutputChars"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","task","input","provider","availability","canExecute","reasonCode","summary","connection","restrictions","limitations"],"additionalProperties":false},"diagnostics":{"type":"object","properties":{"stage":{"type":"string","enum":["initialize","initialized","list_tools","call_tool","read_page"]},"httpStatus":{"type":"integer","minimum":100,"maximum":599},"responseKind":{"type":"string","enum":["http","cloudflare"]},"networkErrorCode":{"type":["integer","null"],"minimum":1000,"maximum":1999},"edgeEvidence":{"type":"object","properties":{"challenge":{"type":"boolean"},"errorType":{"type":["integer","null"],"minimum":100,"maximum":99999},"rayId":{"type":["string","null"],"maxLength":36},"bodyKind":{"type":"string","enum":["html","json","text","other"]},"pageKind":{"type":"string","enum":["challenge","cloudflare_block","unknown"]}},"required":["challenge","errorType","rayId","bodyKind","pageKind"],"additionalProperties":false}},"required":["stage","httpStatus","responseKind","networkErrorCode"],"additionalProperties":false}},"required":["schemaVersion","task","provider","status","reasonCode","message","output","startedAt","completedAt","durationMs","retryAfterSeconds","validation","cost","plan"],"additionalProperties":false},{"type":"null"}]},"outputSha256":{"anyOf":[{"type":"string","pattern":"^[a-f0-9]{64}$"},{"type":"null"}]},"reviews":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"reviewId":{"type":"string","format":"uuid"},"revision":{"type":"integer","minimum":1,"maximum":100},"createdAt":{"type":"string","format":"date-time"},"criteria":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"criterionId":{"type":"string","minLength":1,"maxLength":80},"status":{"type":"string","enum":["pass","fail","uncertain"]}},"required":["criterionId","status"],"additionalProperties":false}},"sourceReviewed":{"type":"boolean","const":true},"note":{"type":"string","maxLength":2000},"kind":{"type":"string","const":"self_review"},"outcome":{"type":"string","enum":["pass","fail","uncertain"]},"qualityVerified":{"type":"boolean","const":false}},"required":["reviewId","revision","createdAt","criteria","sourceReviewed","note","kind","outcome","qualityVerified"],"additionalProperties":false}},"reviewsTruncated":{"type":"boolean"},"recording":{"type":"object","properties":{"source":{"type":"string","const":"relay_server"},"kind":{"type":"string","enum":["test","owner_run","expired"]},"qualityVerified":{"type":"boolean","const":false},"reviewType":{"type":"string","const":"self_review"},"limitations":{"type":"array","items":{"type":"string"}}},"required":["source","kind","qualityVerified","reviewType","limitations"],"additionalProperties":false},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false},{"type":"null"}]}},"required":["schemaVersion","replayed","run","case","suiteVersion","result","outputSha256","reviews","reviewsTruncated","recording","error"],"additionalProperties":false},"BenchmarkRunList":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"items":{"type":"array","maxItems":50,"items":{"type":"object","properties":{"runId":{"type":"string","format":"uuid"},"state":{"type":"string","enum":["running","completed","unconfirmed","expired"]},"createdAt":{"type":"string","format":"date-time"},"completedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"expiresAt":{"type":"string","format":"date-time"},"isTest":{"type":["boolean","null"]},"caseId":{"anyOf":[{"type":"string"},{"type":"null"}]},"caseTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"language":{"anyOf":[{"type":"string"},{"type":"null"}]},"task":{"anyOf":[{"type":"string","enum":["web_search","read_page"]},{"type":"null"}]},"provider":{"anyOf":[{"type":"string","enum":["exa","jina-ai"]},{"type":"null"}]},"resultStatus":{"anyOf":[{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},{"type":"null"}]},"reviewRevision":{"type":"integer","minimum":0,"maximum":100},"latestReviewOutcome":{"anyOf":[{"type":"string","enum":["pass","fail","uncertain"]},{"type":"null"}]},"qualityVerified":{"type":"boolean","const":false}},"required":["runId","state","createdAt","completedAt","expiresAt","isTest","caseId","caseTitle","language","task","provider","resultStatus","reviewRevision","latestReviewOutcome","qualityVerified"],"additionalProperties":false}},"limit":{"type":"number","const":50},"truncated":{"type":"boolean"},"retentionDays":{"type":"number","const":90}},"required":["schemaVersion","items","limit","truncated","retentionDays"],"additionalProperties":false},"BenchmarkReviewInput":{"type":"object","properties":{"requestJson":{"type":"string","minLength":2,"maxLength":8192,"description":"Complete owner review: {\"reviewId\":\"new UUID retained for retries\",\"expectedRevision\":0,\"criteria\":[{\"criterionId\":\"exact rubric ID\",\"status\":\"pass\"}],\"sourceReviewed\":true,\"note\":\"Optional explanation, supplied as a string\"}. Include every stored rubric criterion exactly once with pass/fail/uncertain. A completed nonempty output is required; truncated output cannot receive all-pass. sourceReviewed:true records the owner assertion, not independent verification. Notes are limited to 2000 Unicode characters. Reviews append with optimistic revision checks and idempotent IDs. Never include secrets or personal information."}},"required":["requestJson"],"additionalProperties":false},"RecommendationRequest":{"type":"object","properties":{"requestJson":{"type":"string","minLength":2,"maxLength":8192,"description":"Complete JSON request: {\"task\":\"web_search\",\"query\":\"Find official documentation\",\"constraints\":{\"access\":\"no_account\",\"protocol\":\"MCP\",\"maxTaskCostUsd\":0,\"maxDurationMs\":25000,\"requireMeasuredQuality\":true,\"outputLanguage\":\"tr\"},\"requirements\":[\"Only primary sources\"]}. task is required (web_search or read_page); query is 1–2000 characters, preserved in its original language. Optional constraints: access any/no_account, protocol any/MCP/REST/x402, payment any/no_payment, maxTaskCostUsd 0–1000, integer maxDurationMs 1–300000, boolean requireMeasuredQuality, BCP-47 outputLanguage of 2–63 characters. At most 8 requirements of 1–200 characters. Optional executionPolicy is {\"providerCalls\":false,\"accountConnections\":false,\"payments\":false} (default); true or unknown fields are rejected. This controls discovery actions, not whether paid services may be listed. payment:no_payment excludes paid or unresolved payment routes; no_account alone may include funded-wallet x402. Documented task/access/protocol/payment are filtered. A zero maxTaskCostUsd also excludes known paid routes; other total cost limits, free text, duration, quality and language remain unassessed. No translation, execution, credentials, sign-in or payment."}},"required":["requestJson"],"additionalProperties":false},"RecommendationResult":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"mode":{"type":"string","const":"planning_only"},"request":{"type":"object","properties":{"task":{"type":"string","enum":["web_search","read_page"]},"query":{"type":"string","minLength":1,"maxLength":2000},"requirements":{"type":"array","maxItems":8,"items":{"type":"string","minLength":1,"maxLength":200}},"executionPolicy":{"type":"object","properties":{"providerCalls":{"type":"boolean","const":false},"accountConnections":{"type":"boolean","const":false},"payments":{"type":"boolean","const":false}},"required":["providerCalls","accountConnections","payments"],"additionalProperties":false},"constraints":{"type":"object","properties":{"access":{"type":"string","enum":["any","no_account"]},"protocol":{"type":"string","enum":["any","MCP","REST","x402"]},"payment":{"type":"string","enum":["any","no_payment"]},"maxTaskCostUsd":{"type":["number","null"],"minimum":0,"maximum":1000},"maxDurationMs":{"type":["integer","null"],"minimum":1,"maximum":300000},"requireMeasuredQuality":{"type":"boolean"},"outputLanguage":{"type":["string","null"],"minLength":2,"maxLength":63}},"required":["access","protocol","payment","maxTaskCostUsd","maxDurationMs","requireMeasuredQuality","outputLanguage"],"additionalProperties":false}},"required":["task","query","requirements","executionPolicy","constraints"],"additionalProperties":false},"assessment":{"type":"object","properties":{"query":{"type":"string","const":"unassessed"},"requirements":{"type":"string","const":"unassessed"},"notes":{"type":"array","items":{"type":"string"}}},"required":["query","requirements","notes"],"additionalProperties":false},"canExecute":{"type":"boolean","const":false},"coverage":{"type":"object","properties":{"publishedServices":{"type":"integer","minimum":0,"maximum":500},"evaluatedServices":{"type":"integer","minimum":0,"maximum":500},"sourceReviewedServices":{"type":"integer","minimum":0,"maximum":500},"outsideTaskScopeServices":{"type":"integer","minimum":0,"maximum":500},"insufficientEvidenceServices":{"type":"integer","minimum":0,"maximum":500},"reviewedProfiles":{"type":"integer","minimum":0,"maximum":500},"unreviewedServices":{"type":"integer","minimum":0,"maximum":500},"invalidReviewedProfiles":{"type":"integer","minimum":0,"maximum":500},"taskReviewedServices":{"type":"integer","minimum":0,"maximum":500},"candidateServices":{"type":"integer","minimum":0,"maximum":500},"excludedServices":{"type":"integer","minimum":0,"maximum":500}},"required":["publishedServices","evaluatedServices","sourceReviewedServices","outsideTaskScopeServices","insufficientEvidenceServices","reviewedProfiles","unreviewedServices","invalidReviewedProfiles","taskReviewedServices","candidateServices","excludedServices"],"additionalProperties":false},"candidates":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"provider":{"type":"string"},"name":{"type":"string"},"serviceUrl":{"type":"string"},"fit":{"type":"string","const":"needs_review"},"reasons":{"type":"array","items":{"type":"string"}},"unknowns":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string"},"status":{"type":"string","const":"unknown"},"reason":{"type":"string"}},"required":["field","status","reason"],"additionalProperties":false}},"options":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"protocol":{"type":"string","enum":["MCP","REST"]},"protocols":{"type":"array","minItems":1,"maxItems":3,"uniqueItems":true,"items":{"type":"string","enum":["MCP","REST","x402"]}},"paymentRequired":{"type":["boolean","null"]},"transport":{"type":"string","enum":["streamable-http","sse","stdio","https","unknown"]},"endpoint":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"access":{"type":"string","enum":["documented_anonymous","documented_wallet","host_connection_required","not_established"]},"authentication":{"type":"object","properties":{"method":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"requirement":{"type":"string","enum":["required","optional","conditional","unknown"]},"instructions":{"type":"string"}},"required":["method","requirement","instructions"],"additionalProperties":false},"steps":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"sourceUrls":{"type":"array","minItems":1,"items":{"type":"string","format":"uri"}}},"required":["id","label","protocol","protocols","paymentRequired","transport","endpoint","access","authentication","steps","limitations","sourceUrls"],"additionalProperties":false}},"review":{"type":"object","properties":{"reviewedAt":{"type":"string"},"listingSnapshotMatched":{"type":"boolean","const":true},"guideSnapshotMatched":{"type":"boolean","const":true}},"required":["reviewedAt","listingSnapshotMatched","guideSnapshotMatched"],"additionalProperties":false},"sources":{"type":"array","minItems":1,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":"string"},"checkedAt":{"type":"string"}},"required":["url","title","checkedAt"],"additionalProperties":false}},"evidence":{"type":"object","properties":{"url":{"type":"string"},"recentAttempt":{"anyOf":[{"type":"null"},{"type":"object","properties":{"observedAt":{"type":"string"},"status":{"type":"string"},"adapterEndpoint":{"type":"string","format":"uri"},"fresh":{"type":"boolean"},"scope":{"type":"string"}},"required":["observedAt","status","adapterEndpoint","fresh","scope"],"additionalProperties":false}]}},"required":["url","recentAttempt"],"additionalProperties":false},"measurements":{"type":"object","properties":{"taskCostUsd":{"type":"null"},"durationMs":{"type":"null"},"qualityScore":{"type":"null"},"sampleCount":{"type":"number","const":0}},"required":["taskCostUsd","durationMs","qualityScore","sampleCount"],"additionalProperties":false},"accountStatus":{"type":"string","const":"unknown"},"quotaStatus":{"type":"string","const":"unknown"},"liveAvailability":{"type":"string","const":"not_checked"},"sponsored":{"type":"boolean","const":false}},"required":["provider","name","serviceUrl","fit","reasons","unknowns","options","review","sources","evidence","measurements","accountStatus","quotaStatus","liveAvailability","sponsored"],"additionalProperties":false}},"excluded":{"type":"array","maxItems":500,"items":{"type":"object","properties":{"provider":{"type":"string"},"name":{"type":"string"},"serviceUrl":{"type":"string"},"reasonCodes":{"type":"array","items":{"type":"string"}},"reasons":{"type":"array","items":{"type":"string"}},"sourceReview":{"anyOf":[{"type":"null"},{"type":"object","properties":{"status":{"type":"string","enum":["profile_ready","outside_task_scope","insufficient_evidence"]},"summary":{"type":"string"},"checkedAt":{"type":"string","format":"date-time"},"sources":{"type":"array","minItems":1,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":"string"}},"required":["url","title"],"additionalProperties":false}}},"required":["status","summary","checkedAt","sources"],"additionalProperties":false}]}},"required":["provider","name","serviceUrl","reasonCodes","reasons","sourceReview"],"additionalProperties":false}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","mode","request","assessment","canExecute","coverage","candidates","excluded","limitations"],"additionalProperties":false},"BenchmarkSuite":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"suiteVersion":{"type":"string","const":"2026-10-12.1"},"title":{"type":"string"},"description":{"type":"string"},"languages":{"type":"array","items":{"type":"string","enum":["en","tr","de","es"]},"minItems":4,"maxItems":4,"uniqueItems":true},"cases":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"family":{"type":"string"},"language":{"type":"string","enum":["en","tr","de","es"]},"task":{"type":"string","enum":["web_search","read_page"]},"title":{"type":"string"},"instruction":{"type":"string"},"input":{"type":"string"},"sourceUrls":{"type":"array","minItems":1,"items":{"type":"string","format":"uri"}},"rubric":{"type":"array","minItems":1,"items":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"}},"required":["id","description"],"additionalProperties":false}},"cohortKey":{"type":"string"}},"required":["id","family","language","task","title","instruction","input","sourceUrls","rubric","cohortKey"],"additionalProperties":false},"minItems":20,"maxItems":20},"evidence":{"type":"object","properties":{"liveRunCount":{"type":"number","const":0},"independentlyReviewedCount":{"type":"number","const":0},"measuredCostUsd":{"type":"null"}},"required":["liveRunCount","independentlyReviewedCount","measuredCostUsd"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","suiteVersion","title","description","languages","cases","evidence","limitations"],"additionalProperties":false},"BenchmarkPlanRequest":{"type":"object","properties":{"requestJson":{"type":"string","minLength":2,"maxLength":4096,"description":"Complete JSON planning request: {\"caseId\":\"search-payment-flow-en\",\"constraints\":{\"maxTaskCostUsd\":0,\"maxDurationMs\":25000,\"requireMeasuredQuality\":true}}. Select a caseId from get_benchmark_suite. Optional constraints are hard requirements; unknown measurements cannot establish fit. maxTaskCostUsd: 0–1000; maxDurationMs: integer 1–300000. No execution, credentials, custom URLs, payment or account checks."}},"required":["requestJson"],"additionalProperties":false},"BenchmarkPlan":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"suiteVersion":{"type":"string","const":"2026-10-12.1"},"mode":{"type":"string","const":"planning_only"},"case":{"type":"object","properties":{"id":{"type":"string"},"family":{"type":"string"},"language":{"type":"string","enum":["en","tr","de","es"]},"task":{"type":"string","enum":["web_search","read_page"]},"title":{"type":"string"},"instruction":{"type":"string"},"input":{"type":"string"},"sourceUrls":{"type":"array","minItems":1,"items":{"type":"string","format":"uri"}},"rubric":{"type":"array","minItems":1,"items":{"type":"object","properties":{"id":{"type":"string"},"description":{"type":"string"}},"required":["id","description"],"additionalProperties":false}},"cohortKey":{"type":"string"}},"required":["id","family","language","task","title","instruction","input","sourceUrls","rubric","cohortKey"],"additionalProperties":false},"constraints":{"type":"object","properties":{"maxTaskCostUsd":{"type":["number","null"],"minimum":0,"maximum":1000},"maxDurationMs":{"type":["integer","null"],"minimum":1,"maximum":300000},"requireMeasuredQuality":{"type":"boolean"}},"required":["maxTaskCostUsd","maxDurationMs","requireMeasuredQuality"],"additionalProperties":false},"canExecute":{"type":"boolean","const":false},"candidates":{"type":"array","maxItems":3,"items":{"type":"object","properties":{"provider":{"type":"string"},"name":{"type":"string"},"serviceUrl":{"type":"string"},"readiness":{"type":"string","enum":["anonymous_attempt_available","host_connection_required","unavailable"]},"reasonCode":{"type":"string"},"reasons":{"type":"array","items":{"type":"string"}},"accountStatus":{"type":"string","const":"unknown"},"quotaStatus":{"type":"string","const":"unknown"},"liveAvailability":{"type":"string","const":"not_checked"},"constraintFit":{"type":"string","enum":["not_requested","unknown","unavailable"]},"constraintChecks":{"type":"array","maxItems":3,"items":{"type":"object","properties":{"constraint":{"type":"string","enum":["maxTaskCostUsd","maxDurationMs","requireMeasuredQuality"]},"status":{"type":"string","const":"unknown"},"reason":{"type":"string"}},"required":["constraint","status","reason"],"additionalProperties":false}},"measurements":{"type":"object","properties":{"taskCostUsd":{"type":"null"},"durationMs":{"type":"null"},"qualityScore":{"type":"null"},"sampleCount":{"type":"number","const":0}},"required":["taskCostUsd","durationMs","qualityScore","sampleCount"],"additionalProperties":false},"review":{"type":"object","properties":{"reviewedAt":{"type":["string","null"]},"listingSnapshotMatched":{"type":"boolean"}},"required":["reviewedAt","listingSnapshotMatched"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"title":{"type":"string"},"checkedAt":{"type":"string"}},"required":["url","title","checkedAt"],"additionalProperties":false}},"nextSteps":{"type":"array","items":{"type":"string"}}},"required":["provider","name","serviceUrl","readiness","reasonCode","reasons","accountStatus","quotaStatus","liveAvailability","constraintFit","constraintChecks","measurements","review","sources","nextSteps"],"additionalProperties":false}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","suiteVersion","mode","case","constraints","canExecute","candidates","limitations"],"additionalProperties":false},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"}}}}},"PilotReportInput":{"type":"object","additionalProperties":false,"required":["reportId","serviceSlug","category","outcome","issue","isTest","consent"],"properties":{"reportId":{"type":"string","format":"uuid","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"},"serviceSlug":{"anyOf":[{"type":"string","minLength":2,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},{"type":"null"}]},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"outcome":{"type":"string","enum":["candidate_found","no_match","connection_succeeded","connection_failed","task_succeeded","task_failed"]},"issue":{"type":"string","enum":["none","authentication","setup","pricing","missing_capability","unavailable","other"]},"isTest":{"type":"boolean"},"consent":{"type":"boolean","const":true}},"allOf":[{"if":{"properties":{"outcome":{"const":"no_match"}}},"then":{"properties":{"serviceSlug":{"type":"null"}}},"else":{"properties":{"serviceSlug":{"type":"string"}}}}]},"PilotReportResponse":{"type":"object","additionalProperties":false,"required":["report","duplicate"],"properties":{"duplicate":{"type":"boolean"},"report":{"type":"object","additionalProperties":false,"required":["reportId","serviceSlug","category","outcome","issue","isTest","createdAt"],"properties":{"reportId":{"type":"string","format":"uuid","pattern":"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"},"serviceSlug":{"anyOf":[{"type":"string","minLength":2,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},{"type":"null"}]},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"outcome":{"type":"string","enum":["candidate_found","no_match","connection_succeeded","connection_failed","task_succeeded","task_failed"]},"issue":{"type":"string","enum":["none","authentication","setup","pricing","missing_capability","unavailable","other"]},"isTest":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}}}},"PilotAdminSummary":{"type":"object","additionalProperties":false,"required":["window","disclaimer","totals","byOutcome","byIssue","byService","recentReports"],"properties":{"window":{"type":"object","additionalProperties":false,"required":["days","from","through","retentionDays"],"properties":{"days":{"type":"integer","const":30},"from":{"type":"string","format":"date-time"},"through":{"type":"string","format":"date-time"},"retentionDays":{"type":"integer","const":90}}},"disclaimer":{"type":"string"},"totals":{"type":"object","additionalProperties":false,"required":["reports","participants","returningParticipants","returningAcrossWeeks","testReports"],"properties":{"reports":{"type":"integer","minimum":0},"participants":{"type":"integer","minimum":0},"returningParticipants":{"type":"integer","minimum":0},"returningAcrossWeeks":{"type":"integer","minimum":0},"testReports":{"type":"integer","minimum":0}}},"byOutcome":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["outcome","count"],"properties":{"outcome":{"type":"string","enum":["candidate_found","no_match","connection_succeeded","connection_failed","task_succeeded","task_failed"]},"count":{"type":"integer","minimum":0}}}},"byIssue":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["issue","count"],"properties":{"issue":{"type":"string","enum":["none","authentication","setup","pricing","missing_capability","unavailable","other"]},"count":{"type":"integer","minimum":0}}}},"byService":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["serviceSlug","category","count"],"properties":{"serviceSlug":{"anyOf":[{"type":"string","minLength":2,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},{"type":"null"}]},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"count":{"type":"integer","minimum":0}}}},"recentReports":{"type":"array","maxItems":20,"items":{"type":"object","additionalProperties":false,"required":["serviceSlug","category","outcome","issue","isTest","createdAt"],"properties":{"serviceSlug":{"anyOf":[{"type":"string","minLength":2,"maxLength":100,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"},{"type":"null"}]},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"outcome":{"type":"string","enum":["candidate_found","no_match","connection_succeeded","connection_failed","task_succeeded","task_failed"]},"issue":{"type":"string","enum":["none","authentication","setup","pricing","missing_capability","unavailable","other"]},"isTest":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"}}}}}},"ConnectionHandoff":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"provider":{"type":"string","enum":["exa","jina-ai","browserless"]},"providerName":{"type":"string"},"status":{"type":"string","const":"host_connection_required"},"availability":{"type":"string","enum":["documented","unavailable"]},"reasonCode":{"type":"string","enum":["HOST_SETUP_DOCUMENTED","PUBLISHED_SERVICE_UNAVAILABLE","REVIEWED_CONNECTION_UNAVAILABLE"]},"summary":{"type":"string"},"executionLocation":{"type":"string","const":"agent_host"},"credentialsHeldBy":{"type":"string","const":"agent_host"},"canExecuteInRelay":{"type":"boolean","const":false},"account":{"type":"object","properties":{"status":{"type":"string","const":"unknown"},"checkedByRelay":{"type":"boolean","const":false}},"required":["status","checkedByRelay"],"additionalProperties":false},"payment":{"type":"object","properties":{"authorizedByHandoff":{"type":"boolean","const":false},"budgetUsd":{"type":"null"},"providerCostUsd":{"type":"null"},"requiresUserAuthorization":{"type":"boolean","const":true},"requiresHostEnforcement":{"type":"boolean","const":true}},"required":["authorizedByHandoff","budgetUsd","providerCostUsd","requiresUserAuthorization","requiresHostEnforcement"],"additionalProperties":false},"review":{"type":"object","properties":{"reviewedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}]},"listingSnapshotMatched":{"type":"boolean"},"guideSnapshotMatched":{"type":"boolean"}},"required":["reviewedAt","listingSnapshotMatched","guideSnapshotMatched"],"additionalProperties":false},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"checkedAt":{"type":"string","format":"date"}},"required":["id","url","title","checkedAt"],"additionalProperties":false}},"options":{"type":"array","maxItems":1,"items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"protocol":{"type":"string","enum":["MCP","REST"]},"transport":{"type":"string","enum":["streamable-http","https"]},"endpoint":{"type":"string","format":"uri"},"authentication":{"type":"object","properties":{"method":{"type":"string","enum":["oauth","api-key"]},"handledBy":{"type":"string","const":"agent_host"},"instructions":{"type":"string"}},"required":["method","handledBy","instructions"],"additionalProperties":false},"configuration":{"anyOf":[{"type":"object","properties":{"format":{"type":"string","const":"mcpServers"},"json":{"type":"string"}},"required":["format","json"],"additionalProperties":false},{"type":"null"}]},"documentationUrl":{"type":"string","format":"uri"},"steps":{"type":"array","items":{"type":"string"}},"sourceIds":{"type":"array","items":{"type":"string"}}},"required":["id","label","protocol","transport","endpoint","authentication","configuration","documentationUrl","steps","sourceIds"],"additionalProperties":false}},"hostRequirements":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","provider","providerName","status","availability","reasonCode","summary","executionLocation","credentialsHeldBy","canExecuteInRelay","account","payment","review","sources","options","hostRequirements","limitations"],"additionalProperties":false},"TaskRequest":{"type":"object","properties":{"requestJson":{"type":"string","minLength":2,"maxLength":4096,"description":"Complete JSON request: {\"task\":\"web_search\",\"input\":\"public research query\",\"provider\":\"auto\",\"maxSpendUsd\":0}. Supported tasks: web_search, read_page, browser_screenshot. Provider is optional; only the fixed task provider is supported. No credentials or private input. read_page is limited to approved public documentation URLs without query strings. browser_screenshot returns host connection requirements and does not run."}},"required":["requestJson"],"additionalProperties":false},"TaskPlan":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"task":{"type":"string","enum":["web_search","read_page","browser_screenshot"]},"input":{"type":"string"},"provider":{"type":"string","enum":["exa","jina-ai","browserless"]},"availability":{"type":"string","enum":["ready","host_connection_required","unavailable"]},"canExecute":{"type":"boolean"},"reasonCode":{"type":"string"},"summary":{"type":"string"},"connection":{"type":"object","properties":{"serviceUrl":{"type":"string"},"documentationUrl":{"type":"string"},"endpoint":{"type":"string"},"authentication":{"type":"string","enum":["keyless","host_managed"]},"hostConnectionChecked":{"type":"boolean","const":false}},"required":["serviceUrl","documentationUrl","endpoint","authentication","hostConnectionChecked"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"maxSpendUsd":{"type":"number","const":0},"allowedReadOrigins":{"type":"array","items":{"type":"string"}},"allowedReadTargets":{"type":"array","items":{"type":"object","properties":{"origin":{"type":"string"},"pathPrefix":{"type":"string"},"subpaths":{"type":"boolean"}},"required":["origin","pathPrefix","subpaths"],"additionalProperties":false}},"allowQueries":{"type":"boolean","const":false},"maxInputChars":{"type":"number","const":1000},"timeoutMs":{"type":"number","const":25000},"maxResponseBytes":{"type":"number","const":262144},"maxOutputChars":{"type":"number","const":16000}},"required":["maxSpendUsd","allowedReadOrigins","allowedReadTargets","allowQueries","maxInputChars","timeoutMs","maxResponseBytes","maxOutputChars"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","task","input","provider","availability","canExecute","reasonCode","summary","connection","restrictions","limitations"],"additionalProperties":false},"TaskResult":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"task":{"type":"string","enum":["web_search","read_page","browser_screenshot"]},"provider":{"type":"string","enum":["exa","jina-ai","browserless"]},"status":{"type":"string","enum":["completed","no_results","connection_required","payment_required","rate_limited","failed"]},"reasonCode":{"type":"string"},"message":{"type":"string"},"output":{"anyOf":[{"type":"object","properties":{"text":{"type":"string"},"truncated":{"type":"boolean"}},"required":["text","truncated"],"additionalProperties":false},{"type":"null"}]},"startedAt":{"type":"string"},"completedAt":{"type":"string"},"durationMs":{"type":"number","minimum":0},"retryAfterSeconds":{"type":["number","null"],"minimum":0,"maximum":86400},"recovery":{"anyOf":[{"type":"object","properties":{"mode":{"type":"string","const":"guidance_only"},"automaticRetry":{"type":"boolean","const":false},"automaticFallback":{"type":"boolean","const":false},"summary":{"type":"string"},"sameRouteRetry":{"type":"object","properties":{"allowed":{"type":"boolean"},"requiresExplicitRequest":{"type":"boolean","const":true},"minimumDelaySeconds":{"type":["number","null"],"minimum":0,"maximum":86400},"availabilityGuaranteed":{"type":"boolean","const":false}},"required":["allowed","requiresExplicitRequest","minimumDelaySeconds","availabilityGuaranteed"],"additionalProperties":false},"alternatives":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["inspect_source","review_host_connection","review_client_execution","stop"]},"label":{"type":"string"},"description":{"type":"string"},"url":{"type":["string","null"]},"requiresAccount":{"type":"boolean"},"requiresSpendingReview":{"type":"boolean"}},"required":["action","label","description","url","requiresAccount","requiresSpendingReview"],"additionalProperties":false}}},"required":["mode","automaticRetry","automaticFallback","summary","sameRouteRetry","alternatives"],"additionalProperties":false},{"type":"null"}]},"validation":{"type":"object","properties":{"responseShapeChecked":{"type":"boolean"},"qualityVerified":{"type":"boolean","const":false}},"required":["responseShapeChecked","qualityVerified"],"additionalProperties":false},"cost":{"type":"object","properties":{"relayChargeUsd":{"type":"number","const":0},"paymentSentUsd":{"type":"number","const":0},"providerCostUsd":{"type":"null"}},"required":["relayChargeUsd","paymentSentUsd","providerCostUsd"],"additionalProperties":false},"plan":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"task":{"type":"string","enum":["web_search","read_page","browser_screenshot"]},"input":{"type":"string"},"provider":{"type":"string","enum":["exa","jina-ai","browserless"]},"availability":{"type":"string","enum":["ready","host_connection_required","unavailable"]},"canExecute":{"type":"boolean"},"reasonCode":{"type":"string"},"summary":{"type":"string"},"connection":{"type":"object","properties":{"serviceUrl":{"type":"string"},"documentationUrl":{"type":"string"},"endpoint":{"type":"string"},"authentication":{"type":"string","enum":["keyless","host_managed"]},"hostConnectionChecked":{"type":"boolean","const":false}},"required":["serviceUrl","documentationUrl","endpoint","authentication","hostConnectionChecked"],"additionalProperties":false},"restrictions":{"type":"object","properties":{"maxSpendUsd":{"type":"number","const":0},"allowedReadOrigins":{"type":"array","items":{"type":"string"}},"allowedReadTargets":{"type":"array","items":{"type":"object","properties":{"origin":{"type":"string"},"pathPrefix":{"type":"string"},"subpaths":{"type":"boolean"}},"required":["origin","pathPrefix","subpaths"],"additionalProperties":false}},"allowQueries":{"type":"boolean","const":false},"maxInputChars":{"type":"number","const":1000},"timeoutMs":{"type":"number","const":25000},"maxResponseBytes":{"type":"number","const":262144},"maxOutputChars":{"type":"number","const":16000}},"required":["maxSpendUsd","allowedReadOrigins","allowedReadTargets","allowQueries","maxInputChars","timeoutMs","maxResponseBytes","maxOutputChars"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}}},"required":["schemaVersion","task","input","provider","availability","canExecute","reasonCode","summary","connection","restrictions","limitations"],"additionalProperties":false},"diagnostics":{"type":"object","properties":{"stage":{"type":"string","enum":["initialize","initialized","list_tools","call_tool","read_page"]},"httpStatus":{"type":"integer","minimum":100,"maximum":599},"responseKind":{"type":"string","enum":["http","cloudflare"]},"networkErrorCode":{"type":["integer","null"],"minimum":1000,"maximum":1999},"edgeEvidence":{"type":"object","properties":{"challenge":{"type":"boolean"},"errorType":{"type":["integer","null"],"minimum":100,"maximum":99999},"rayId":{"type":["string","null"],"maxLength":36},"bodyKind":{"type":"string","enum":["html","json","text","other"]},"pageKind":{"type":"string","enum":["challenge","cloudflare_block","unknown"]}},"required":["challenge","errorType","rayId","bodyKind","pageKind"],"additionalProperties":false}},"required":["stage","httpStatus","responseKind","networkErrorCode"],"additionalProperties":false}},"required":["schemaVersion","task","provider","status","reasonCode","message","output","startedAt","completedAt","durationMs","retryAfterSeconds","validation","cost","plan"],"additionalProperties":false},"ReviewInput":{"type":"object","required":["action","expectedStatus","note"],"additionalProperties":false,"properties":{"action":{"type":"string","enum":["approve","reject"]},"expectedStatus":{"const":"pending"},"note":{"type":"string","minLength":3,"maxLength":1000},"service":{"$ref":"#/components/schemas/Service"}},"allOf":[{"if":{"properties":{"action":{"const":"approve"}}},"then":{"required":["service"]}}]},"ReviewItem":{"type":"object","properties":{"kind":{"type":"string","enum":["submission","discovery"]},"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"sourceUrl":{"type":"string"},"sourceType":{"type":"string"},"reviewedAt":{"type":["string","null"]},"reviewNote":{"type":["string","null"]},"publishedServiceId":{"type":["string","null"]},"service":{"$ref":"#/components/schemas/Service"}}},"SubmissionInput":{"type":"object","required":["name","url","description","category"],"properties":{"name":{"type":"string","minLength":2,"maxLength":100},"url":{"type":"string","format":"uri","maxLength":2048},"description":{"type":"string","minLength":20,"maxLength":2000},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"contactEmail":{"type":"string","format":"email","maxLength":254}}},"Service":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"website":{"type":"string"},"docsUrl":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"tags":{"type":"array","items":{"type":"string"}},"capabilities":{"type":"array","items":{"type":"string"}},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"summary":{"type":"string"},"url":{"type":["string","null"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","summary","url","checkedAt"],"additionalProperties":false},"endpoint":{"type":["string","null"]},"registryName":{"type":["string","null"]},"sourceUrl":{"type":"string"},"sourceType":{"type":"string","enum":["registry","provider"]},"sourceCheckedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]},"notes":{"type":"string"},"featured":{"type":"boolean"},"color":{"type":"string"}},"required":["id","slug","name","provider","tagline","description","website","docsUrl","category","tags","capabilities","protocols","auth","pricing","endpoint","registryName","sourceUrl","sourceType","sourceCheckedAt","verification","notes","featured","color"],"additionalProperties":false},"CompactService":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","checkedAt"],"additionalProperties":false},"docsUrl":{"type":"string"},"source":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string","enum":["registry","provider"]},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]}},"required":["url","type","checkedAt","verification"],"additionalProperties":false},"matchReasons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["keyword","filter","catalogue"]},"field":{"type":"string","enum":["name_provider","capabilities","description","category","protocol","pricing","catalogue"]},"term":{"type":["string","null"]},"matchedTerm":{"type":["string","null"]}},"required":["kind","field","term","matchedTerm"],"additionalProperties":false},"minItems":1}},"required":["slug","name","provider","tagline","category","protocols","auth","pricing","docsUrl","source","matchReasons"],"additionalProperties":false},"SearchRequest":{"type":"object","properties":{"requestJson":{"type":"string","minLength":2,"maxLength":8192,"description":"Preferred: serialize the COMPLETE search request into this one JSON string (at most 8192 UTF-16 code units); never mix with top-level arguments. Fields: query, queryEnglish, category, protocol, pricing, limit, view, originalRequest, requirements, executionPolicy. query/queryEnglish each max200 after trimming. For 'find a service, but do not pay/connect/run', preserve the complete wording in originalRequest, use focused service terms in query, retain service conditions in requirements/filters, and use executionPolicy with providerCalls:false,accountConnections:false,payments:false. Requirements/decomposition stay unassessed. Do not equate payment prohibition now with free-service-only preference. No unknown/duplicate keys or truncation."}},"required":["requestJson"],"additionalProperties":false},"SearchDescription":{"type":"object","properties":{"discovery":{"type":"object","properties":{"originalRequest":{"type":["string","null"],"minLength":1,"maxLength":2000},"requirements":{"type":"array","maxItems":8,"items":{"type":"string","minLength":1,"maxLength":200}},"executionPolicy":{"type":"object","properties":{"providerCalls":{"type":"boolean","const":false},"accountConnections":{"type":"boolean","const":false},"payments":{"type":"boolean","const":false}},"required":["providerCalls","accountConnections","payments"],"additionalProperties":false},"decomposition":{"type":"string","enum":["caller_supplied","not_supplied"]},"assessment":{"type":"string","const":"unassessed"},"resultsAre":{"type":"string","const":"metadata_candidates"}},"required":["originalRequest","requirements","executionPolicy","decomposition","assessment","resultsAre"],"additionalProperties":false},"originalQuery":{"type":"string"},"effectiveQuery":{"type":"string"},"mode":{"type":"string","enum":["browse","keywords","agent-translation"]},"reasonCodes":{"type":"array","items":{"type":"string","enum":["QUERY_TOO_LONG","NO_SEARCHABLE_TERMS","UNSUPPORTED_CONDITIONS","NO_CATALOGUE_MATCH"]},"maxItems":1,"description":"Empty when matches exist. Otherwise identifies the first blocking cause: an overlong query, no searchable terms, unsupported exclusions/alternatives/numerical comparisons, or no match in the current published catalogue. It does not establish that no suitable provider exists elsewhere. REST/MCP reject overlong requests before returning search results."},"terms":{"type":"array","items":{"type":"string"}},"appliedFilters":{"type":"object","properties":{"category":{"anyOf":[{"type":"string","enum":["search","extraction","data","browser","documents"]},{"type":"null"}]},"protocol":{"anyOf":[{"type":"string","enum":["MCP","REST","x402"]},{"type":"null"}]},"pricing":{"anyOf":[{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},{"type":"null"}]}},"required":["category","protocol","pricing"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"string"}}},"required":["discovery","originalQuery","effectiveQuery","mode","reasonCodes","terms","appliedFilters","warnings","suggestions"],"additionalProperties":false},"SearchResult":{"type":"object","properties":{"services":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","checkedAt"],"additionalProperties":false},"docsUrl":{"type":"string"},"source":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string","enum":["registry","provider"]},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]}},"required":["url","type","checkedAt","verification"],"additionalProperties":false},"matchReasons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["keyword","filter","catalogue"]},"field":{"type":"string","enum":["name_provider","capabilities","description","category","protocol","pricing","catalogue"]},"term":{"type":["string","null"]},"matchedTerm":{"type":["string","null"]}},"required":["kind","field","term","matchedTerm"],"additionalProperties":false},"minItems":1}},"required":["slug","name","provider","tagline","category","protocols","auth","pricing","docsUrl","source","matchReasons"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"website":{"type":"string"},"docsUrl":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"tags":{"type":"array","items":{"type":"string"}},"capabilities":{"type":"array","items":{"type":"string"}},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"summary":{"type":"string"},"url":{"type":["string","null"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","summary","url","checkedAt"],"additionalProperties":false},"endpoint":{"type":["string","null"]},"registryName":{"type":["string","null"]},"sourceUrl":{"type":"string"},"sourceType":{"type":"string","enum":["registry","provider"]},"sourceCheckedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]},"notes":{"type":"string"},"featured":{"type":"boolean"},"color":{"type":"string"}},"required":["id","slug","name","provider","tagline","description","website","docsUrl","category","tags","capabilities","protocols","auth","pricing","endpoint","registryName","sourceUrl","sourceType","sourceCheckedAt","verification","notes","featured","color"],"additionalProperties":false}]},"maxItems":100},"total":{"type":"integer","minimum":0},"returned":{"type":"integer","minimum":0,"maximum":100},"generatedAt":{"type":"string","format":"date-time"},"view":{"type":"string","enum":["compact","full"]},"search":{"type":"object","properties":{"discovery":{"type":"object","properties":{"originalRequest":{"type":["string","null"],"minLength":1,"maxLength":2000},"requirements":{"type":"array","maxItems":8,"items":{"type":"string","minLength":1,"maxLength":200}},"executionPolicy":{"type":"object","properties":{"providerCalls":{"type":"boolean","const":false},"accountConnections":{"type":"boolean","const":false},"payments":{"type":"boolean","const":false}},"required":["providerCalls","accountConnections","payments"],"additionalProperties":false},"decomposition":{"type":"string","enum":["caller_supplied","not_supplied"]},"assessment":{"type":"string","const":"unassessed"},"resultsAre":{"type":"string","const":"metadata_candidates"}},"required":["originalRequest","requirements","executionPolicy","decomposition","assessment","resultsAre"],"additionalProperties":false},"originalQuery":{"type":"string"},"effectiveQuery":{"type":"string"},"mode":{"type":"string","enum":["browse","keywords","agent-translation"]},"reasonCodes":{"type":"array","items":{"type":"string","enum":["QUERY_TOO_LONG","NO_SEARCHABLE_TERMS","UNSUPPORTED_CONDITIONS","NO_CATALOGUE_MATCH"]},"maxItems":1,"description":"Empty when matches exist. Otherwise identifies the first blocking cause: an overlong query, no searchable terms, unsupported exclusions/alternatives/numerical comparisons, or no match in the current published catalogue. It does not establish that no suitable provider exists elsewhere. REST/MCP reject overlong requests before returning search results."},"terms":{"type":"array","items":{"type":"string"}},"appliedFilters":{"type":"object","properties":{"category":{"anyOf":[{"type":"string","enum":["search","extraction","data","browser","documents"]},{"type":"null"}]},"protocol":{"anyOf":[{"type":"string","enum":["MCP","REST","x402"]},{"type":"null"}]},"pricing":{"anyOf":[{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},{"type":"null"}]}},"required":["category","protocol","pricing"],"additionalProperties":false},"warnings":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"string"}}},"required":["discovery","originalQuery","effectiveQuery","mode","reasonCodes","terms","appliedFilters","warnings","suggestions"],"additionalProperties":false}},"required":["services","total","returned","generatedAt","view","search"],"additionalProperties":false,"allOf":[{"if":{"properties":{"view":{"const":"compact"}}},"then":{"properties":{"services":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","checkedAt"],"additionalProperties":false},"docsUrl":{"type":"string"},"source":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string","enum":["registry","provider"]},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]}},"required":["url","type","checkedAt","verification"],"additionalProperties":false},"matchReasons":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["keyword","filter","catalogue"]},"field":{"type":"string","enum":["name_provider","capabilities","description","category","protocol","pricing","catalogue"]},"term":{"type":["string","null"]},"matchedTerm":{"type":["string","null"]}},"required":["kind","field","term","matchedTerm"],"additionalProperties":false},"minItems":1}},"required":["slug","name","provider","tagline","category","protocols","auth","pricing","docsUrl","source","matchReasons"],"additionalProperties":false}}}},"else":{"properties":{"services":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"provider":{"type":"string"},"tagline":{"type":"string"},"description":{"type":"string"},"website":{"type":"string"},"docsUrl":{"type":"string"},"category":{"type":"string","enum":["search","extraction","data","browser","documents"]},"tags":{"type":"array","items":{"type":"string"}},"capabilities":{"type":"array","items":{"type":"string"}},"protocols":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"auth":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"pricing":{"type":"object","properties":{"model":{"type":"string","enum":["free","freemium","usage-based","subscription","unknown"]},"summary":{"type":"string"},"url":{"type":["string","null"]},"checkedAt":{"anyOf":[{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},{"type":"null"}]}},"required":["model","summary","url","checkedAt"],"additionalProperties":false},"endpoint":{"type":["string","null"]},"registryName":{"type":["string","null"]},"sourceUrl":{"type":"string"},"sourceType":{"type":"string","enum":["registry","provider"]},"sourceCheckedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]},"notes":{"type":"string"},"featured":{"type":"boolean"},"color":{"type":"string"}},"required":["id","slug","name","provider","tagline","description","website","docsUrl","category","tags","capabilities","protocols","auth","pricing","endpoint","registryName","sourceUrl","sourceType","sourceCheckedAt","verification","notes","featured","color"],"additionalProperties":false}}}}}]},"ConnectionResult":{"type":"object","properties":{"connection":{"type":"object","properties":{"schemaVersion":{"type":"string","const":"1"},"service":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"}},"required":["slug","name"],"additionalProperties":false},"declaredInterfaces":{"type":"array","items":{"type":"string","enum":["MCP","REST","x402"]}},"endpoint":{"type":["string","null"]},"deployment":{"type":"object","properties":{"kind":{"type":"string","enum":["remote","unknown"]},"transport":{"type":"string","enum":["streamable-http","sse","unknown"]},"evidence":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["url","checkedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["kind","transport","evidence"],"additionalProperties":false},"packages":{"type":"array","items":{"type":"object","properties":{"registryType":{"type":"string"},"identifier":{"type":"string"},"version":{"type":["string","null"]},"transport":{"type":"string","enum":["stdio","unknown"]},"evidence":{"type":"object","properties":{"url":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["url","checkedAt"],"additionalProperties":false}},"required":["registryType","identifier","version","transport","evidence"],"additionalProperties":false}},"authentication":{"type":"object","properties":{"method":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"],"description":"Recorded authentication method. It may be optional or specific to an endpoint, operation or plan; it is not a universal requirement."},"requirements":{"type":"array","items":{"type":"string"},"description":"Documentation checks to resolve authentication needs for the selected connection. These entries do not assert that credentials or OAuth are mandatory."},"notes":{"type":"string"},"evidence":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]}},"required":["url","checkedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["method","requirements","notes","evidence"],"additionalProperties":false},"documentationUrl":{"type":"string"},"source":{"type":"object","properties":{"url":{"type":"string"},"type":{"type":"string","enum":["registry","provider"]},"checkedAt":{"anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"}]},"verification":{"type":"string","enum":["listed","documented","connection-tested"]}},"required":["url","type","checkedAt","verification"],"additionalProperties":false},"providerToolSchemas":{"type":"null"},"gaps":{"type":"array","items":{"type":"string"}},"nextSteps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string"},"url":{"type":"string"}},"required":["action","url"],"additionalProperties":false}},"setupGuide":{"anyOf":[{"type":"object","properties":{"slug":{"type":"string"},"reviewedAt":{"type":"string","format":"date-time"},"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string","format":"uri"},"title":{"type":"string"},"checkedAt":{"type":"string","format":"date-time"}},"required":["id","url","title","checkedAt"],"additionalProperties":false},"minItems":1},"options":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"protocol":{"type":"string","enum":["MCP","REST"]},"transport":{"type":"string","enum":["streamable-http","sse","stdio","https","unknown"]},"endpoint":{"type":["string","null"]},"authentication":{"type":"object","properties":{"method":{"type":"string","enum":["api-key","oauth","wallet-payment","none","unknown"]},"requirement":{"type":"string","enum":["required","optional","conditional","unknown"]},"placement":{"type":"string"},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["method","requirement","placement","sourceIds"],"additionalProperties":false},"steps":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["text","sourceIds"],"additionalProperties":false},"minItems":1},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["id","label","protocol","transport","endpoint","authentication","steps","sourceIds"],"additionalProperties":false},"minItems":1},"pricing":{"type":"object","properties":{"summary":{"type":"string"},"freeAccess":{"type":"string"},"limits":{"type":"array","items":{"type":"string"}},"sourceIds":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["summary","freeAccess","limits","sourceIds"],"additionalProperties":false},"limitations":{"type":"array","items":{"type":"string"}}},"required":["slug","reviewedAt","sources","options","pricing","limitations"],"additionalProperties":false},{"type":"null"}]},"testing":{"type":"object","properties":{"connectionTestedByRelay":{"type":"boolean","const":false},"taskTestedByRelay":{"type":"boolean","const":false}},"required":["connectionTestedByRelay","taskTestedByRelay"],"additionalProperties":false}},"required":["schemaVersion","service","declaredInterfaces","endpoint","deployment","packages","authentication","documentationUrl","source","providerToolSchemas","gaps","nextSteps","setupGuide","testing"],"additionalProperties":false}},"required":["connection"],"additionalProperties":false},"AdminService":{"type":"object","required":["service","origin","status","revision","updatedAt","lastNote"],"properties":{"service":{"$ref":"#/components/schemas/Service"},"origin":{"type":"string","enum":["seed","review"]},"status":{"type":"string","enum":["published","unpublished"]},"revision":{"type":"integer","minimum":0},"updatedAt":{"type":"string","format":"date-time"},"lastNote":{"type":["string","null"]}}},"ServiceHistoryEntry":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string","enum":["edit","unpublish","restore"]},"revision":{"type":"integer","minimum":1},"note":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"previousStatus":{"type":"string","enum":["published","unpublished"]},"status":{"type":"string","enum":["published","unpublished"]},"changedFields":{"type":"array","items":{"type":"string"}}}},"LifecycleInput":{"type":"object","additionalProperties":false,"required":["action","expectedRevision","note"],"properties":{"action":{"type":"string","enum":["edit","unpublish","restore"]},"expectedRevision":{"type":"integer","minimum":0},"note":{"type":"string","minLength":3,"maxLength":1000},"service":{"$ref":"#/components/schemas/Service"}},"allOf":[{"if":{"properties":{"action":{"const":"edit"}}},"then":{"required":["service"]},"else":{"not":{"required":["service"]}}}]}}}}