{"base_readiness_score":43,"commercial_next_step":{"billing_boundary":"Scope and deliverables are confirmed before any invoice; no wallet payload, subscription, SLA, or deployment is created by this handoff.","charged_now":false,"free_first":{"charged_now":false,"id":"free_scope","label":"Request a free scope decision","url":"https://ontarioprotocol.com/pricing?offer=free_scope&report_id=vrf_e8725433a8e2c13f#scope"},"human_required":true,"qualified_offers":[{"billing":"outcome_based_invoice_after_public_evidence","id":"catalog_publish","name":"Founding Agent Catalog Publish Pilot","price_interval":null,"price_usd":49,"scope_request_url":"https://ontarioprotocol.com/pricing?offer=catalog_publish&report_id=vrf_e8725433a8e2c13f#scope","status":"first_10_qualified_providers"},{"billing":"one_time_invoice_after_scope","id":"launch_review","name":"MCP + x402 Agent Catalog Launch Pack","price_interval":null,"price_usd":199,"scope_request_url":"https://ontarioprotocol.com/pricing?offer=launch_review&report_id=vrf_e8725433a8e2c13f#scope","status":"qualified_fixed_scope"},{"billing":"one_time_invoice_after_scope","id":"buyer_intent_rewrite","name":"x402 Buyer Intent Metadata Rewrite","price_interval":null,"price_usd":49,"scope_request_url":"https://ontarioprotocol.com/pricing?offer=buyer_intent_rewrite&report_id=vrf_e8725433a8e2c13f#scope","status":"qualified_fixed_scope"},{"billing":"one_time_invoice_after_scope","id":"firewall_implementation","name":"Payment Firewall Implementation","price_interval":null,"price_usd":499,"scope_request_url":"https://ontarioprotocol.com/pricing?offer=firewall_implementation&report_id=vrf_e8725433a8e2c13f#scope","status":"qualified_fixed_scope"},{"billing":"pilot_invoice_after_qualification","id":"readiness_watch","name":"Readiness Watch pilot","price_interval":"month","price_usd":99,"scope_request_url":"https://ontarioprotocol.com/pricing?offer=readiness_watch&report_id=vrf_e8725433a8e2c13f#scope","status":"pilot_interest"}],"recommended_offer":{"billing":"one_time_invoice_after_scope","id":"launch_review","name":"MCP + x402 Agent Catalog Launch Pack","price_interval":null,"price_usd":199,"scope_request_url":"https://ontarioprotocol.com/pricing?offer=launch_review&report_id=vrf_e8725433a8e2c13f#scope","status":"qualified_fixed_scope"},"required_inputs":["contact_email","endpoint","requested_offer"],"schema":"ontario.report_commercial_next_step.v1","status":"scope_first","trust_boundary":"This commercial handoff is not part of the signed readiness evidence. It does not guarantee safety, traffic, ranking, listing acceptance, revenue, or future endpoint behavior."},"duration_ms":4804,"evidence":{"homepage":{"reachable":true,"schema_org_present":false,"status_code":200},"openapi":{"body":{"info":{"description":"Studio sells per-call text and link services, priced in USDC on base and payable over x402 or by direct USDC transfer. The paid endpoints are the POST /jobs/<offer-id> routes; everything else is free.","title":"Studio \u2014 paid API","version":"1.0.0","x-guidance":"To buy work, POST a JSON body to a /jobs/<offer-id> route; each route's fixed USD price is in its x-payment-info. A request without payment returns 402 carrying the exact terms: sign an EIP-712 USDC TransferWithAuthorization and retry with the X-Payment header (x402), or transfer USDC directly and retry with the transaction hash in the X-Payment-Tx header. The 200 reply carries the delivered work. Routes without x-payment-info are free."},"openapi":"3.1.0","paths":{"/":{"get":{"operationId":"landingPage","responses":{"200":{"description":"Landing page (HTML)."}},"security":[],"summary":"Landing page: what is for sale and how to pay."}},"/.well-known/agent-card.json":{"get":{"operationId":"agentCard","responses":{"200":{"description":"Agent card (JSON)."}},"security":[],"summary":"ERC-8004 agent card with the offer catalog and both payment rails."}},"/docs":{"get":{"operationId":"payingGuide","responses":{"200":{"description":"Paying guide (HTML)."}},"security":[],"summary":"How to pay, step by step: both rails, the EIP-712 domain, every rejection code."}},"/docs.md":{"get":{"operationId":"payingGuideMarkdown","responses":{"200":{"description":"Paying guide (Markdown)."}},"security":[],"summary":"The same paying guide as Markdown."}},"/health":{"get":{"operationId":"health","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"status":{"enum":["ok"],"type":"string"}},"required":["status"],"type":"object"}}},"description":"The server is up."}},"security":[],"summary":"Liveness probe."}},"/jobs/classify":{"post":{"description":"Choose one of your labels for a piece of text, with a confidence and a one-line reason.","operationId":"buyClassify","requestBody":{"content":{"application/json":{"schema":{"properties":{"labels":{"description":"The labels to choose exactly one of.","items":{"maxLength":60,"type":"string"},"maxItems":32,"type":"array"},"text":{"description":"The text to work on.","maxLength":16000,"minLength":1,"type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"invoiceId":{"type":"string"},"offerId":{"type":"string"},"output":{"properties":{"inputThreatLevel":{"description":"How adversarial the buyer's input looked to the injection screen.","type":"string"},"model":{"description":"Id of the model that produced the result.","type":"string"},"offerId":{"type":"string"},"result":{"description":"The completed work. For tasks that return structured data (extract, classify) this is a JSON document encoded as a string.","type":"string"}},"required":["offerId","result","model","inputThreatLevel"],"type":"object"},"status":{"enum":["delivered","settled"],"type":"string"}},"required":["invoiceId","offerId","status","output"],"type":"object"}}},"description":"Work delivered."},"400":{"description":"Bad Request \u2014 the body failed validation. Payment was not taken; fix the input and retry with the same authorization."},"402":{"description":"Payment Required"}},"security":[],"summary":"Classify text","x-payment-info":{"price":{"amount":"0.05","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/jobs/extract":{"post":{"description":"Pull the fields you name out of unstructured text and return them as JSON.","operationId":"buyExtract","requestBody":{"content":{"application/json":{"schema":{"properties":{"fields":{"description":"Names of the fields to extract from the text.","items":{"maxLength":60,"type":"string"},"maxItems":32,"type":"array"},"text":{"description":"The text to work on.","maxLength":24000,"minLength":1,"type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"invoiceId":{"type":"string"},"offerId":{"type":"string"},"output":{"properties":{"inputThreatLevel":{"description":"How adversarial the buyer's input looked to the injection screen.","type":"string"},"model":{"description":"Id of the model that produced the result.","type":"string"},"offerId":{"type":"string"},"result":{"description":"The completed work. For tasks that return structured data (extract, classify) this is a JSON document encoded as a string.","type":"string"}},"required":["offerId","result","model","inputThreatLevel"],"type":"object"},"status":{"enum":["delivered","settled"],"type":"string"}},"required":["invoiceId","offerId","status","output"],"type":"object"}}},"description":"Work delivered."},"400":{"description":"Bad Request \u2014 the body failed validation. Payment was not taken; fix the input and retry with the same authorization."},"402":{"description":"Payment Required"}},"security":[],"summary":"Extract structured data","x-payment-info":{"price":{"amount":"0.15","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/jobs/fetch-page":{"post":{"description":"Fetch a public web page and return its text (markup, scripts and styles stripped) or its raw HTML. Redirects are followed; loopback, private and link-local targets are refused at every hop.","operationId":"buyFetchPage","requestBody":{"content":{"application/json":{"schema":{"properties":{"format":{"default":"text","description":"\"text\" returns extracted page text; \"html\" returns the raw body.","enum":["text","html"],"type":"string"},"maxChars":{"default":20000,"description":"Content length cap. Default 20000, hard ceiling 50000.","maximum":50000,"minimum":1,"type":"integer"},"url":{"description":"Page to fetch. Public http(s) only \u2014 loopback, private and link-local hosts are refused, before and after every redirect.","format":"uri","type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"invoiceId":{"type":"string"},"offerId":{"type":"string"},"output":{"properties":{"contentType":{"description":"MIME type of the final response.","type":"string"},"fetchedAt":{"format":"date-time","type":"string"},"finalUrl":{"description":"URL after redirects.","format":"uri","type":"string"},"html":{"description":"Raw body. Present when format is \"html\".","type":"string"},"status":{"description":"Final HTTP status.","type":"integer"},"text":{"description":"Extracted text. Present when format is \"text\".","type":"string"},"title":{"description":"Page <title> for HTML, else null.","type":["string","null"]},"truncated":{"type":"boolean"},"url":{"description":"Requested URL, normalised.","format":"uri","type":"string"}},"required":["url","finalUrl","status","title","contentType","truncated","fetchedAt"],"type":"object"},"status":{"enum":["delivered","settled"],"type":"string"}},"required":["invoiceId","offerId","status","output"],"type":"object"}}},"description":"Work delivered."},"400":{"description":"Bad Request \u2014 the body failed validation. Payment was not taken; fix the input and retry with the same authorization."},"402":{"description":"Payment Required"}},"security":[],"summary":"Web page fetch","x-payment-info":{"price":{"amount":"0.10","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/jobs/gas-price":{"post":{"description":"Current gas price and latest base fee for Base or Ethereum L1, read fresh from the chain at call time \u2014 never cached. Returns wei and gwei figures plus the chain id, so the answer is unambiguous.","operationId":"buyGasPrice","requestBody":{"content":{"application/json":{"schema":{"properties":{"chain":{"default":"base","description":"Chain to quote. Defaults to \"base\".","enum":["base","ethereum"],"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"invoiceId":{"type":"string"},"offerId":{"type":"string"},"output":{"properties":{"baseFeeGwei":{"description":"Latest block base fee in gwei, null on pre-EIP-1559 chains.","type":["number","null"]},"chain":{"enum":["base","ethereum"],"type":"string"},"chainId":{"description":"EIP-155 chain id.","type":"integer"},"fetchedAt":{"format":"date-time","type":"string"},"gasPriceGwei":{"description":"Gas price in gwei.","type":"number"},"gasPriceWei":{"description":"eth_gasPrice, wei, decimal string.","type":"string"}},"required":["chain","chainId","gasPriceWei","gasPriceGwei","baseFeeGwei","fetchedAt"],"type":"object"},"status":{"enum":["delivered","settled"],"type":"string"}},"required":["invoiceId","offerId","status","output"],"type":"object"}}},"description":"Work delivered."},"400":{"description":"Bad Request \u2014 the body failed validation. Payment was not taken; fix the input and retry with the same authorization."},"402":{"description":"Payment Required"}},"security":[],"summary":"Gas price oracle","x-payment-info":{"price":{"amount":"0.02","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/jobs/shorten":{"post":{"description":"Mint a permanent short link to any public http(s) URL, optionally with a custom alias. Redirects and click stats are free and unmetered forever.","operationId":"buyShorten","requestBody":{"content":{"application/json":{"schema":{"properties":{"alias":{"description":"Optional custom code. Never overwrites an existing link; a taken alias is rejected before payment.","maxLength":32,"minLength":3,"pattern":"^[A-Za-z0-9_-]+$","type":"string"},"url":{"description":"Destination for the short link. Public http(s) only \u2014 loopback, private and link-local hosts are refused.","format":"uri","maxLength":2048,"type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"invoiceId":{"type":"string"},"offerId":{"type":"string"},"output":{"properties":{"code":{"description":"The stored code, case preserved.","type":"string"},"shortUrl":{"description":"Fully qualified link to publish.","format":"uri","type":"string"},"targetUrl":{"description":"Destination, normalised.","format":"uri","type":"string"}},"required":["code","shortUrl","targetUrl"],"type":"object"},"status":{"enum":["delivered","settled"],"type":"string"}},"required":["invoiceId","offerId","status","output"],"type":"object"}}},"description":"Work delivered."},"400":{"description":"Bad Request \u2014 the body failed validation. Payment was not taken; fix the input and retry with the same authorization."},"402":{"description":"Payment Required"}},"security":[],"summary":"Short link","x-payment-info":{"price":{"amount":"0.05","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/jobs/summarize":{"post":{"description":"A faithful summary of your text in at most five sentences.","operationId":"buySummarize","requestBody":{"content":{"application/json":{"schema":{"properties":{"text":{"description":"The text to work on.","maxLength":24000,"minLength":1,"type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"invoiceId":{"type":"string"},"offerId":{"type":"string"},"output":{"properties":{"inputThreatLevel":{"description":"How adversarial the buyer's input looked to the injection screen.","type":"string"},"model":{"description":"Id of the model that produced the result.","type":"string"},"offerId":{"type":"string"},"result":{"description":"The completed work. For tasks that return structured data (extract, classify) this is a JSON document encoded as a string.","type":"string"}},"required":["offerId","result","model","inputThreatLevel"],"type":"object"},"status":{"enum":["delivered","settled"],"type":"string"}},"required":["invoiceId","offerId","status","output"],"type":"object"}}},"description":"Work delivered."},"400":{"description":"Bad Request \u2014 the body failed validation. Payment was not taken; fix the input and retry with the same authorization."},"402":{"description":"Payment Required"}},"security":[],"summary":"Summarize a document","x-payment-info":{"price":{"amount":"0.10","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/jobs/{id}":{"get":{"operationId":"jobTerms","parameters":[{"description":"Offer id, as listed by GET /offers.","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The offer's terms (JSON)."},"404":{"description":"Unknown or disabled offer."}},"security":[],"summary":"An offer's terms: price, deadline and the payment requirement a 402 would carry."}},"/links/{code}/stats":{"get":{"operationId":"shortLinkStats","parameters":[{"in":"path","name":"code","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"The link's click statistics (JSON)."},"404":{"description":"No live link with this code."}},"security":[],"summary":"Click count for a short link. Free."}},"/offers":{"get":{"operationId":"listOffers","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"offers":{"items":{"properties":{"description":{"type":"string"},"id":{"type":"string"},"priceCents":{"type":"integer"},"title":{"type":"string"}},"required":["id","title","description","priceCents"],"type":"object"},"type":"array"}},"required":["offers"],"type":"object"}}},"description":"The enabled offers."}},"security":[],"summary":"The public catalog: id, title, description and price per offer."}},"/openapi.json":{"get":{"operationId":"openApiDocument","responses":{"200":{"description":"OpenAPI document (JSON)."}},"security":[],"summary":"This document."}},"/{code}":{"get":{"operationId":"followShortLink","parameters":[{"in":"path","name":"code","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to the link's destination."},"404":{"description":"No live link with this code."},"410":{"description":"The link existed but was revoked."}},"security":[],"summary":"Follow a paid short link. Free forever \u2014 the buyer paid once to mint it."}}}},"reachable":true,"url":"https://short.desknav.ai/openapi.json","valid_json":true,"version":"3.1.0","well_formed":true},"robots":{"excerpt":"User-agent: *\nAllow: /\n\nSitemap: https://short.desknav.ai/sitemap.xml\n","reachable":true,"status_code":200},"target":{"method":"GET","payment_challenge":false,"payment_headers":{},"reachable":true,"status_code":200},"x402_manifest":{"reachable":false,"service_count":0,"status_code":404,"well_formed":false}},"grade":"needs_work","integrity":{"algorithm":"Ed25519","canonical_sha256":"c3fb2498f22aaee912edfc9ac4bf5e0bbd108b42f15b5a5ee4f77dc1b7edf1b0","canonicalization":"json-sort-keys-no-integrity-v1","key_id":"ed25519:67e5239d2bfa367d","public_key":"t3nUNaV3/SIMUb0XIBCazNFdToM3hHEQHReQ71v40wU=","signature":"6EQ3mPRbXE/cqybmfyBUmoZjE6FByBiaD67hJjo/eugNZTVd1hM5V9kRnK4Ql9/wVJbAe/Ns1j5ZqdJh4VdzAg==","signed_by":"ontario-protocol"},"max_score":100,"normalized_base":"https://short.desknav.ai","provider_listing_next_step":{"endpoint":"https://short.desknav.ai/.well-known/agent-card.json","free_validation":{"charged_now":false,"method":"POST","stores_listing":false,"url":"https://ontarioprotocol.com/api/x402/list-service/validate"},"grade":"needs_work","publication":{"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","listing_page":"https://ontarioprotocol.com/listings?report_id=vrf_e8725433a8e2c13f&endpoint=https%3A%2F%2Fshort.desknav.ai%2F.well-known%2Fagent-card.json#submit-service","method":"POST","network":"eip155:8453","price_usdc":"0.50","url":"https://ontarioprotocol.com/api/x402/list-service","value":"One canonical provider profile, machine-readable JSON twin, badge, live readiness evidence, 30 days of included automatic freshness maintenance, and conditional fresh ready-grade eligibility in strict discovery and Ontario's task-to-tool buyer search."},"ready_for_listing_preflight":false,"recommended_action":{"id":"remediate_before_publication","label":"Fix readiness warnings and re-run the free verifier","payment_recommended_now":false,"reason":"This report is not ready-grade. Do not buy publication expecting it to override readiness or strict-discovery eligibility.","url":"https://ontarioprotocol.com/verify"},"report_id":"vrf_e8725433a8e2c13f","schema":"ontario.provider_listing_next_step.v1","sequence":["Fix readiness warnings until a fresh report is ready-grade.","Validate the complete provider listing payload without payment.","Probe the publication endpoint and inspect its HTTP 402 challenge.","Pay only if the fixed 0.50 USDC price, Base network, USDC asset, and publication purpose match policy."],"signed_evidence_boundary":"This commercial handoff is added after report signing and is not part of the signed readiness evidence.","status":"fix_before_listing","trust_boundary":"Publication processing does not buy a readiness grade, ranking, traffic, leads, purchases, safety, listing acceptance, or future availability."},"readiness_score":43,"recommendations":[{"detail":"Expose a manifest with service metadata so agents and catalogs can discover paid endpoints.","docs_url":"https://ontarioprotocol.com/.well-known/x402.json","id":"x402_missing","title":"Publish /.well-known/x402.json"},{"detail":"A paid endpoint should reply with HTTP 402 and a payment requirements header when called without payment.","docs_url":"https://ontarioprotocol.com/docs","id":"payment_challenge_missing","title":"Expose a real HTTP 402 payment challenge"},{"detail":"Name, description, category, tags, owner URL, and contact fields make services usable in agent marketplaces.","docs_url":"https://ontarioprotocol.com/listings","id":"bazaar_metadata_missing","title":"Add listing metadata for Bazaar-style catalogs"}],"report_id":"vrf_e8725433a8e2c13f","report_url":"https://ontarioprotocol.com/verify/report/vrf_e8725433a8e2c13f","signals":{"accepts_entries":true,"bazaar_metadata":false,"endpoint_reachable":true,"facilitator_metadata":true,"homepage_reachable":true,"https":true,"manifest_fresh":true,"network_consistent":true,"openapi_schema":true,"payment_challenge":false,"price_format_valid":true,"robots_present":true,"schema_org_present":false,"x402_manifest_present":false,"x402_manifest_well_formed":false},"status":"ok","submitted_url":"https://short.desknav.ai/.well-known/agent-card.json","target_url":"https://short.desknav.ai/.well-known/agent-card.json","verified_at":"2026-09-01T13:11:42.525668+00:00","verifier":"ontario.x402-readiness.v1","warning_penalty":0,"warnings":[]}
