{"base_readiness_score":58,"commercial_next_step":{"billing_boundary":"No contact form, scope call, invoice, subscription, wallet signature, or payment is created by this handoff. Free routing never authorizes spending.","charged_now":false,"free_first":{"body_template":{"free_preflight_complete":false,"task":"<your public task>","wallet_enabled":false},"charged_now":false,"id":"ontario_purchase_router","label":"Match your task to a free or paid capability","method":"POST","url":"https://ontarioprotocol.com/api/agent/tool-quote"},"human_required":false,"next_steps":["Use the existing report evidence and remediation first; report access is free.","If another capability is needed, supply an explicit public task to the free router.","Do not pay solely because a report is ready, incomplete, or failed.","Only consider payment after free validation, task fit, an explicit budget and local wallet policy allow it."],"payment_recommended_now":false,"qualified_offers":[],"recommended_offer":null,"report_url":"https://ontarioprotocol.com/api/verify/reports/vrf_bddafdd6ba59ed44","required_inputs":["task"],"schema":"ontario.report_commercial_next_step.v1","status":"task_required_no_paid_recommendation","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":1201,"evidence":{"homepage":{"reachable":true,"schema_org_present":false,"status_code":200},"openapi":{"body":{"components":{"schemas":{"Error":{"properties":{"error":{"type":"string"}},"required":["error"],"type":"object"},"PaymentRequired":{"description":"x402 PaymentRequired challenge","properties":{"accepts":{"items":{"properties":{"amount":{"description":"Token atomic units (USDC 6 decimals)","type":"string"},"asset":{"type":"string"},"description":{"type":"string"},"extra":{"type":"object"},"maxAmountRequired":{"description":"Token atomic units (legacy v1 field)","type":"string"},"maxTimeoutSeconds":{"type":"integer"},"mimeType":{"type":"string"},"network":{"example":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","type":"string"},"payTo":{"type":"string"},"resource":{"format":"uri","type":"string"},"scheme":{"example":"exact","type":"string"}},"required":["scheme","network","payTo","asset"],"type":"object"},"type":"array"},"error":{"type":"string"},"extensions":{"type":"object"},"resource":{"type":"object"},"x402Version":{"type":"integer"}},"required":["x402Version","accepts"],"type":"object"}}},"externalDocs":{"url":"https://bilbop.org"},"info":{"contact":{"name":"Bilbop","url":"https://bilbop.org"},"description":"Pay-per-call APIs for AI agents over x402: text summarization, Solana token market briefs, Solana mint on-chain info, human brand feedback (WURK) and self-hosted Piper text-to-speech. Payment in USDC on Solana (x402 'exact' scheme, PayAI facilitator). No API keys or accounts.","title":"Bilbop x402 API","version":"1.0.0","x-guidance":"All paid endpoints are POST with a JSON body. Call without payment to receive an HTTP 402 x402 challenge (JSON body + PAYMENT-REQUIRED header) listing price, asset (USDC mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v), network (solana / solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp) and payTo; sign the payment with an x402 client and retry with the X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) header. POST /v1/summarize {text} returns {summary} ($0.01). POST /v1/sol-token-brief {mint} returns price/mcap/liquidity/volume and a one-line brief ($0.01). POST /v1/sol-mint-info {mint} returns supply, decimals and mint/freeze authorities ($0.01). POST /brand-feedback {brand, question, n?} returns real human replies via WURK, can take minutes ($0.50). POST /v1/tts {text, voice_id?} returns raw audio/wav bytes, max 2500 chars ($0.025). Free: GET /health, GET /piper/v1/voices, GET /.well-known/x402."},"openapi":"3.1.0","paths":{"/brand-feedback":{"post":{"description":"Routes a short question about a brand or product to real human respondents via the WURK human-task marketplace and returns their replies with a sentiment aggregate. Replies can take minutes. 0.50 USDC per call.","operationId":"brandFeedback","requestBody":{"content":{"application/json":{"schema":{"example":{"brand":"Acme","n":1,"question":"Would you buy again?"},"properties":{"brand":{"description":"Brand or product name","example":"Acme","minLength":1,"type":"string"},"n":{"default":5,"description":"Number of human respondents (default 5)","example":1,"maximum":50,"minimum":1,"type":"integer"},"question":{"description":"Question to ask human respondents","example":"Would you buy again?","minLength":1,"type":"string"}},"required":["brand","question"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"example":{"aggregate":{"negative":0,"neutral":0,"positive":1,"summary":"1/1 positive."},"brand":"Acme","mock":false,"n":1,"question":"Would you buy again?","responses":[{"sentiment":"positive","text":"Yes, the quality was good for the price."}]},"properties":{"aggregate":{"properties":{"negative":{"type":"integer"},"neutral":{"type":"integer"},"positive":{"type":"integer"},"summary":{"type":"string"}},"type":"object"},"brand":{"type":"string"},"mock":{"type":"boolean"},"n":{"type":"integer"},"question":{"type":"string"},"responses":{"items":{"properties":{"sentiment":{"enum":["positive","neutral","negative"],"type":"string"},"text":{"type":"string"}},"type":"object"},"type":"array"}},"required":["brand","responses"],"type":"object"}}},"description":"Human replies"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid request body (paid requests are validated before settlement)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}},"description":"Payment Required. x402 challenge in the JSON body and the base64 PAYMENT-REQUIRED header. Retry with an X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) header.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 PaymentRequired object (same as the body)","schema":{"type":"string"}}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Upstream failure"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Origin temporarily unavailable (tunnel rotating); retry after Retry-After seconds"}},"summary":"Ask real humans a question about a brand or product","tags":["Humans"],"x-payment-info":{"price":{"amount":"0.50","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/v1/sol-mint-info":{"post":{"description":"Supply, decimals, mint authority, freeze authority, token program and initialized flag for a Solana SPL token mint. Use to check whether a token can still be minted or frozen. 0.01 USDC per call.","operationId":"solMintInfo","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"example":{"mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"},"properties":{"mint":{"description":"Base58 Solana SPL token mint address (32-44 chars)","example":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","maxLength":44,"minLength":32,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","type":"string"}},"required":["mint"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"example":{"decimals":6,"freezeAuthority":"7dGbd2QZcCKcTndnHcTL8q7SMVXAkp688NTQYwrRCrar","initialized":true,"mint":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","mintAuthority":"BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","sources":["bentlawgic-token-basic"],"supply":"9000000000.000000","tokenProgram":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},"properties":{"decimals":{"type":"integer"},"freezeAuthority":{"type":["string","null"]},"initialized":{"type":"boolean"},"mint":{"type":"string"},"mintAuthority":{"type":["string","null"]},"network":{"type":"string"},"sources":{"items":{"type":"string"},"type":"array"},"supply":{"type":"string"},"tokenProgram":{"type":"string"}},"required":["mint","decimals","supply"],"type":"object"}}},"description":"Mint info"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid request body (paid requests are validated before settlement)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}},"description":"Payment Required. x402 challenge in the JSON body and the base64 PAYMENT-REQUIRED header. Retry with an X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) header.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 PaymentRequired object (same as the body)","schema":{"type":"string"}}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Upstream failure"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Origin temporarily unavailable (tunnel rotating); retry after Retry-After seconds"}},"summary":"On-chain facts for a Solana SPL token mint","tags":["Solana"],"x-payment-info":{"price":{"amount":"0.01","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/v1/sol-token-brief":{"post":{"description":"Price, market cap, FDV, liquidity, 24h volume, holders and a one-line brief for a Solana SPL token, aggregated from Jupiter, GeckoTerminal and Dexscreener. 0.01 USDC per call.","operationId":"solTokenBrief","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"example":{"mint":"So11111111111111111111111111111111111111112"},"properties":{"mint":{"description":"Base58 Solana SPL token mint address (32-44 chars)","example":"So11111111111111111111111111111111111111112","maxLength":44,"minLength":32,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$","type":"string"}},"required":["mint"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"example":{"asOf":"2026-09-28T14:00:00.000Z","brief":"SOL (So11\u20261112) \u00b7 price $150.12 \u00b7 mcap $80B \u00b7 liq $250M \u00b7 vol24h $1.5B. Sources: jupiter, dexscreener. Not financial advice.","liquidityUsd":250000000,"mcapUsd":80000000000,"mint":"So11111111111111111111111111111111111111112","priceUsd":150.12,"sources":["jupiter","geckoterminal","dexscreener"],"symbol":"SOL","volume24hUsd":1500000000},"properties":{"asOf":{"format":"date-time","type":"string"},"brief":{"type":"string"},"disclaimer":{"type":"string"},"fdvUsd":{"type":["number","null"]},"holders":{"type":["number","null"]},"liquidityUsd":{"type":["number","null"]},"mcapUsd":{"type":["number","null"]},"mint":{"type":"string"},"name":{"type":"string"},"organicScore":{"type":["number","null"]},"priceUsd":{"type":["number","null"]},"sources":{"items":{"type":"string"},"type":"array"},"symbol":{"type":"string"},"volume24hUsd":{"type":["number","null"]}},"required":["mint","brief","sources","asOf"],"type":"object"}}},"description":"Token brief"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid request body (paid requests are validated before settlement)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}},"description":"Payment Required. x402 challenge in the JSON body and the base64 PAYMENT-REQUIRED header. Retry with an X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) header.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 PaymentRequired object (same as the body)","schema":{"type":"string"}}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Upstream failure"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Origin temporarily unavailable (tunnel rotating); retry after Retry-After seconds"}},"summary":"Solana SPL token market snapshot and one-line brief","tags":["Solana"],"x-payment-info":{"price":{"amount":"0.01","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/v1/summarize":{"post":{"description":"Summarize a block of text into 1-3 concise sentences. Use when an agent needs a short digest of an article, doc, or chat log. 0.01 USDC per call on Solana.","operationId":"summarize","requestBody":{"content":{"application/json":{"schema":{"example":{"text":"Summarize this paragraph for an agent."},"properties":{"text":{"description":"Text to summarize","example":"Summarize this paragraph for an agent.","minLength":1,"type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"example":{"mock":false,"summary":"A one to three sentence digest of the input text."},"properties":{"mock":{"type":"boolean"},"summary":{"type":"string"}},"required":["summary"],"type":"object"}}},"description":"Summary"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid request body (paid requests are validated before settlement)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}},"description":"Payment Required. x402 challenge in the JSON body and the base64 PAYMENT-REQUIRED header. Retry with an X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) header.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 PaymentRequired object (same as the body)","schema":{"type":"string"}}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Upstream failure"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Origin temporarily unavailable (tunnel rotating); retry after Retry-After seconds"}},"summary":"Summarize text into 1-3 concise sentences","tags":["Text"],"x-payment-info":{"price":{"amount":"0.01","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}},"/v1/tts":{"post":{"description":"Turn up to 2500 characters of English text into a natural voice WAV file using self-hosted open-source Piper voices. Response body is raw audio/wav bytes (mono, 22.05 kHz). 0.025 USDC per call.","operationId":"textToSpeech","requestBody":{"content":{"application/json":{"schema":{"example":{"text":"Hello from Piper","voice_id":"en_US-lessac-medium"},"properties":{"text":{"description":"Text to speak (max 2500 chars)","example":"Hello from Piper","maxLength":2500,"minLength":1,"type":"string"},"voice_id":{"default":"en_US-lessac-medium","description":"Optional Piper voice id (GET /piper/v1/voices)","example":"en_US-lessac-medium","type":"string"}},"required":["text"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"audio/wav":{"schema":{"contentMediaType":"audio/wav","format":"binary","type":"string"}}},"description":"Raw WAV audio bytes","headers":{"X-TTS-Format":{"schema":{"type":"string"}},"X-TTS-Voice-Id":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Invalid request body (paid requests are validated before settlement)"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}},"description":"Payment Required. x402 challenge in the JSON body and the base64 PAYMENT-REQUIRED header. Retry with an X-PAYMENT (v1) or PAYMENT-SIGNATURE (v2) header.","headers":{"PAYMENT-REQUIRED":{"description":"Base64-encoded x402 PaymentRequired object (same as the body)","schema":{"type":"string"}}}},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Upstream failure"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"Origin temporarily unavailable (tunnel rotating); retry after Retry-After seconds"}},"summary":"Text-to-speech (self-hosted Piper), returns WAV audio","tags":["Audio"],"x-payment-info":{"price":{"amount":"0.025","currency":"USD","mode":"fixed"},"protocols":[{"x402":{}}]}}}},"servers":[{"url":"https://api.bilbop.org"}],"tags":[{"description":"Text processing","name":"Text"},{"description":"Solana token data","name":"Solana"},{"description":"Human-in-the-loop tasks","name":"Humans"},{"description":"Speech synthesis","name":"Audio"}]},"reachable":true,"url":"https://api.bilbop.org/openapi.json","valid_json":true,"version":"3.1.0","well_formed":true},"robots":{"excerpt":"# As a condition of accessing this website, you agree to abide by the following\n# content signals:\n\n# (a)  If a content-signal = yes, you may collect content for the corresponding\n#      use.\n# (b)  If a content-signal = no, you may not collect content for the\n#      corresponding use.\n# (c)  If the website operator does not include a content signal for a\n#      corresponding use, the website operator neither grants nor restricts\n#      permission via content signal with respect to the corresponding use.\n\n# The content signals and their meanings are:\n\n# search:   building a search index and providing search results (e.g., returning\n#           hyperlinks and short excerpts from your website's contents). Search does not\n#           include providing AI-generated search summaries.\n# ai-input: inputting content into one or more AI models (e.g., retrieval\n#           augmented generation, grounding, or other real-time taking of content for\n#           generative AI search answers).\n# ai-tr","reachable":true,"status_code":200},"target":{"method":"GET","payment_challenge":false,"payment_headers":{},"reachable":true,"status_code":404},"x402_manifest":{"bazaar_metadata":false,"body":{"instructions":"Bilbop seller \u2014 POST /v1/summarize {text}, POST /v1/sol-token-brief {mint} (public aggregators), or POST /v1/sol-mint-info {mint} (on-chain mint info). Solana USDC x402 exact via PayAI. Call without payment for 402 descriptor.\n\nBilbop brand feedback \u2014 POST /brand-feedback with JSON { brand, question, n? }. Solana USDC x402 exact. Call without payment for 402 descriptor.\n\nOSS Piper TTS \u2014 POST /v1/tts {text, voice_id?}. Solana USDC x402 exact via PayAI. Call without payment for 402 descriptor. Self-hosted only (no ElevenLabs).\n\nOpenAPI (schemas + prices): /openapi.json. Prices: /v1/summarize, /v1/sol-token-brief, /v1/sol-mint-info 0.01 USDC; /brand-feedback 0.50 USDC; /v1/tts 0.025 USDC.","resources":["https://api.bilbop.org/v1/summarize","https://api.bilbop.org/v1/sol-token-brief","https://api.bilbop.org/v1/sol-mint-info","https://api.bilbop.org/brand-feedback","https://api.bilbop.org/v1/tts"],"version":1},"reachable":true,"service_count":0,"status_code":200,"valid_json":true,"well_formed":false}},"grade":"needs_work","integrity":{"algorithm":"Ed25519","canonical_sha256":"425a2f464a12ce735509e75b54891e03e4f010780ab54411cb87a807da9091be","canonicalization":"json-sort-keys-no-integrity-v1","key_id":"ed25519:67e5239d2bfa367d","public_key":"t3nUNaV3/SIMUb0XIBCazNFdToM3hHEQHReQ71v40wU=","signature":"P46NNXWmVZmWYPxmx26sbDFo1EuyhFSRzJdwLOfgNRnSpsvj/ZjKcxtNSCruWqmkFVEhMxiMyt2qOEDH/MrEBA==","signed_by":"ontario-protocol"},"max_score":100,"normalized_base":"https://api.bilbop.org","provider_listing_next_step":{"endpoint":"https://api.bilbop.org/v1/summarize","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_bddafdd6ba59ed44&endpoint=https%3A%2F%2Fapi.bilbop.org%2Fv1%2Fsummarize#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_bddafdd6ba59ed44","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":50,"recommendations":[{"detail":"The manifest should be JSON and include a services array with endpoint, method, price, network, and asset metadata.","docs_url":"https://ontarioprotocol.com/.well-known/x402.json","id":"x402_malformed","title":"Fix the x402 manifest shape"},{"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_bddafdd6ba59ed44","report_url":"https://ontarioprotocol.com/verify/report/vrf_bddafdd6ba59ed44","signals":{"accepts_entries":true,"bazaar_metadata":false,"endpoint_reachable":true,"facilitator_metadata":false,"homepage_reachable":true,"https":true,"manifest_fresh":false,"network_consistent":true,"openapi_schema":true,"payment_challenge":false,"price_format_valid":true,"robots_present":true,"schema_org_present":false,"x402_manifest_present":true,"x402_manifest_well_formed":false},"status":"ok","submitted_url":"https://api.bilbop.org/v1/summarize","target_url":"https://api.bilbop.org/v1/summarize","verified_at":"2026-10-01T14:41:27.735830+00:00","verifier":"ontario.x402-readiness.v1","warning_penalty":8,"warnings":[{"detail":"Expose facilitator details plus asset, payTo, scheme, timeout, and resource fields so clients can verify and settle payments deterministically.","docs_url":"https://ontarioprotocol.com/docs#facilitator","evidence":{"issues":["manifest.facilitator or service.facilitator is missing"]},"id":"facilitator_metadata_gap","severity":"warning","title":"Publish facilitator and settlement metadata"},{"detail":"A stale or missing manifest timestamp makes agents doubt whether prices, networks, and facilitator metadata still describe the live endpoint.","docs_url":"https://ontarioprotocol.com/.well-known/x402.json","evidence":{"issue":"manifest has no generated_at, updated_at, last_updated, or dateModified timestamp"},"id":"manifest_stale","severity":"warning","title":"Refresh the x402 manifest timestamp"}]}
