Scro Orphan Desk · OpenAPI Overlay 1.0.0
API Evangelist enhancement overlay for the Scro Orphan Desk Intent Echo API
9 actions
9 updates
documentation
extends
openapi/_original/dualregistry-dev-openapi.json
Generated by API Evangelist
Written by API Evangelist tooling for Scro Orphan Desk's API. It is a proposal applied on top of the contract, not a document Scro Orphan Desk publishes.
What the actions change
tagsoperationIdx-accessx-observedx-request-body-documentedx-apievangelistx-discoveryx-documented-paths-not-in-spec
Targets 9
$.info
$.paths['/index.json'].get
$.paths['/stats.json'].get
$.paths['/api/echo'].get
$.paths['/api/quote_fee'].post
$.paths['/api/settle_fee'].post
$.paths['/api/orphandust/buy'].get
$.paths['/api/orphandust/buy'].post
$
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancement overlay for the Scro Orphan Desk Intent Echo API
version: 1.0.0
extends: openapi/_original/dualregistry-dev-openapi.json
x-generated: '2026-09-19'
x-method: generated
x-source: openapi/_original/dualregistry-dev-openapi.json
x-rationale: >-
The spec served at https://dualregistry.dev/openapi.json is real OpenAPI 3.0.3 and the provider
calls it a "minimal OpenAPI stub" in ai-plugin.json. It declares 7 operations over 6 paths with
summaries and bare response descriptions, and nothing else: no operationIds, no tags, no
parameters, no request bodies, no schemas, no securitySchemes, and GET /api/orphandust/buy has
no responses object at all (invalid against 3.0.3, which requires one). This overlay records
the enhancements API Evangelist applied in openapi/dualregistry-dev-openapi.yml — operationIds,
tags, the observed 402 on the response-less operation — and adds, as x- extensions, what the
provider publishes ELSEWHERE about these operations: the payment-proof headers and query
parameters (llms.txt, the 402 body, vercel.json), the x402 discovery document, the fee-quote
JSON Schema, the rate limits, and the documented paths the stub omits. Apply with any Overlay
1.0.0 processor against openapi/_original/dualregistry-dev-openapi.json.
x-not-done: >-
No path is added (the documented /api/counter_fee, /api/fee_quote, /api/feedback,
/api/orphandust/unlock, /*.echo.json, /preview/{id} and the static catalogs are LISTED in an
x- extension, not modelled as operations), no request or response schema is invented, no
example payload is fabricated (observed responses are in examples/), and no security scheme is
added — the API has no authentication; x402 is not an OpenAPI security scheme type.
actions:
- target: $.info
update:
x-apievangelist:
profile: https://github.com/api-evangelist/dualregistry-dev
enriched: '2026-09-19'
contract_status: 'provider-described stub; fuller surface documented in llms.txt'
x-discovery:
llms_txt: https://dualregistry.dev/llms.txt
agent_card: https://dualregistry.dev/.well-known/agent-card.json
ai_plugin: https://dualregistry.dev/.well-known/ai-plugin.json
x402: https://dualregistry.dev/.well-known/x402
tool_manifest: https://dualregistry.dev/mcp.json
agent_guide: https://dualregistry.dev/AGENT.md
fee_quote_schema: https://dualregistry.dev/fee_quote.schema.json
x-documented-paths-not-in-spec:
- 'POST /api/counter_fee (alias of quote_fee)'
- 'POST /api/fee_quote (alias of quote_fee)'
- 'POST /api/feedback (GET answers a self-description)'
- 'POST /api/orphandust/unlock'
- 'GET /*.echo.json and GET /preview/{echo_id} (rewritten to /api/echo)'
- 'GET /fill_hint.json, /PROMO.json, /fee_promo.json, /ORPHANDUST.json, /PRODUCT.json, /SPOTLIGHT.json, /DIRECTORY.json, /MIRROR.json, /ACROSS.json, /WELLKNOWN.json (static catalogs)'
x-rate-limits:
quote_endpoints: '10 requests / 10 minutes per IP+User-Agent hash; 429 with Retry-After and body reason rate_limited (source: llms.txt "~10/10min", api/_lib/rate_limit.js and negotiate.js in orphan-desk-source)'
feedback: '5 / 10 minutes per IP+UA; 429 with Retry-After (GET /api/feedback self-description; api/feedback.js)'
- target: $.paths['/index.json'].get
update:
operationId: listEchoes
tags: [Echoes]
x-access: free
x-response-note: 'JSON {desk, audience, schema_version, updated_at, receive_wallet, count_open, count_by_chain, stats_url, agent_card_url, echoes[], note}; echoes[].fill_hint.legs_locked is true on the free catalog.'
- target: $.paths['/stats.json'].get
update:
operationId: getStats
tags: [Stats]
x-access: free
- target: $.paths['/api/echo'].get
update:
operationId: redeemEcho
tags: [Echoes]
x-access: x402-paywalled
x-query-parameters-documented: [echo_id, preview, credit_token, tx_hash, chain, asset, amount]
x-payment-proof-headers: [X-PAYMENT-TX, X-PAYMENT-CHAIN, X-PAYMENT-ASSET, X-PAYMENT-AMOUNT, X-PAYMENT-PAYER, X-QUOTE-ID, X-CREDIT-TOKEN]
x-402-headers-observed: ['PAYMENT-REQUIRED (base64 x402 v1 accepts[])', x-payment-required, x402-asset, x402-network, x402-pay-to, x402-price]
x-observed: 'GET without echo_id -> 404 {status: reject, reason: echo_not_found}; with an open echo_id -> 402 x402 invoice; with &preview=1 -> 200 echo_preview (2026-09-19)'
- target: $.paths['/api/quote_fee'].post
update:
operationId: quoteFee
tags: [Fees]
x-request-schema: https://dualregistry.dev/fee_quote.schema.json#/oneOf/0
x-response-schema: https://dualregistry.dev/fee_quote.schema.json#/oneOf/1
x-aliases: ['/api/counter_fee', '/api/fee_quote']
x-observed: 'GET -> 405 {status: reject, reason: method_not_allowed, note: "POST JSON {echo_id, bid_bps, firm?, bond_tx_hash?, bid_usdc?, agent_id?, x402_payment_intent?}"}'
x-documented-outcomes: 'exploratory (firm false/omitted) -> 200 indicative; firm and bid_bps >= ask -> 402 accept invoice with quote_id; floor <= bid < ask -> 200 counter; bid < floor -> 422'
- target: $.paths['/api/settle_fee'].post
update:
operationId: settleFee
tags: [Fees]
x-request-body-documented: '{quote_id|echo_id, tx_hash, chain, amount_usdc|amount, asset?: USDC|USDT, payer?}'
x-observed: 'GET -> 405 with the body shape in the note'
- target: $.paths['/api/orphandust/buy'].get
update:
operationId: getOrphanDustInvoice
tags: [OrphanDust]
responses:
'402':
description: 'x402 payment required — observed live 2026-09-19 (the served spec declares no responses on this operation)'
- target: $.paths['/api/orphandust/buy'].post
update:
operationId: buyOrphanDustCredits
tags: [OrphanDust]
x-x402-resource: 'declared in https://dualregistry.dev/.well-known/x402 resources[0] (priceUsd 0.50, USDC on eip155:8453)'
x-request-body-documented: '{sku: od_unlock_050 | od_credits_1 | od_credits_2 | od_credits_3}; after paying, retry with X-PAYMENT-TX + X-PAYMENT-CHAIN'
- target: $
update:
tags:
- {name: Echoes, description: 'Open Intent Echoes — free catalog, x402-paywalled per-echo redeem'}
- {name: Stats, description: Pheromone stats}
- {name: Fees, description: OBO fee quote and settlement}
- {name: OrphanDust, description: 'Flat-priced unlock credits (x402)'}