{"name":"io.github.0rkz/byte-protocol","slug":"0rkz-byte-protocol","title":null,"description":"PayPerByte — per-byte data for AI agents: x402 USDC on Base, EIP-712-attested. No token.","url":"https://mcp.market/server/0rkz-byte-protocol","rating":null,"grade":"B","score":84,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":36,"stars":1,"forks":0,"downloads_week":483,"last_push_at":"2026-09-13T06:02:25.000Z","license":"MIT"},"uptime":{"percent":100,"checks":6,"ok":6,"last_checked_at":"2026-09-20T21:25:32.479Z","last_ok_at":"2026-09-20T21:25:32.479Z","latency_ms":754},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/0rkz/byte-mcp-server","website":null,"version":"0.13.0","remotes":[{"type":"streamable-http","url":"https://mcp.payperbyte.io/mcp"}],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"byte-mcp-server","version":"0.13.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Ethereum private key for write/buy tools (subscribe, unsubscribe, publish, buy_data). buy_data spends real Base-mainnet USDC — use a dedicated wallet. Not required for read-only tools.","format":"string","isSecret":true,"name":"PRIVATE_KEY"},{"description":"RPC for the on-chain library + EIP-712 attestation layer (Arbitrum Sepolia, eip155:421614). The x402 buy rail settles USDC on Base mainnet and needs no RPC here. Defaults to Arbitrum Sepolia public RPC.","format":"string","name":"RPC_URL"},{"description":"Gateway attester address byte_buy_data pins receipts against. Defaults to the current PayPerByte gateway attester (rotated 2026-08-19; previous default 0x77c86a...C472 is retired). Override only if the gateway discloses a rotation you need ahead of a package update - see /.well-known/agent.json receipt.attester and receipt.retiredAttesters.","format":"string","name":"BYTE_GATEWAY_ATTESTER"}]}],"tools":[{"name":"byte_buy_data","description":"Buy a single data packet from any PayPerByte feed via the x402 payment gateway. No subscription, no allowance, no prior on-chain setup — pay-per-call USDC settlement. The MCP server signs an EIP-3009 transferWithAuthorization on behalf of the wallet whose PRIVATE_KEY is configured, the x402 facilitator submits the tx, and the data comes back inline with the on-chain settlement tx hash. Use byte_subscribe instead if you want a continuous stream of broadcasts from a publisher. The catalog of available feed slugs lives at https://x402.payperbyte.io/feeds (free GET). GET data feeds (weather, earthquakes, …) need only `feed`; the 10 POST oracles — runtime-eol, threat-intel, address-reputation, pkg-verdict, sanctions-screen, reasoning-verdict, merchant-screen, positioning-snapshot, cctp-attestation-latency, regime-signal — additionally require a JSON `body` (the query) — supplying `body` switches this call to POST. Requires PRIVATE_KEY env var on the MCP server and USDC on the configured wallet. NOTE: paid feeds settle REAL USDC on Base mainnet (eip155:8453) — the exact price is quoted in the 402 challenge and listed per feed at https://x402.payperbyte.io/feeds — the signed EIP-712 attestation over the exact response bytes proves delivery, not that a verdict itself is correct. Use a dedicated wallet holding only what you intend to spend.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"feed":{"type":"string","minLength":1,"description":"Feed slug — one of: weather ($0.0050), earthquakes ($0.0030), runtime-eol ($0.020), threat-intel ($0.050), address-reputation ($0.100), pkg-verdict ($0.100), sanctions-screen ($0.100), reasoning-verdict ($0.100), merchant-screen ($0.100), positioning-snapshot ($0.030), cctp-attestation-latency ($0.010), regime-signal ($0.020). Full catalog: https://x402.payperbyte.io/feeds (free GET). (For fact-oracle Q&A use byte_query_fact instead — it uses a different request-response flow.)"},"body":{"description":"Optional JSON query body for POST oracles. Supplying it switches the call from GET to POST. Required by the verdict oracles, e.g. address-reputation {domain,address[,amount,chain]}, sanctions-screen {address|name}, pkg-verdict {ecosystem,package[,version]}, reasoning-verdict {subject}. Omit for GET data feeds (weather, earthquakes, …).","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["feed"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_check_subscription","description":"Check if an address is subscribed to a specific publisher on PayPerByte.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"subscriber":{"type":"string","description":"Subscriber Ethereum address (0x...)"},"publisher":{"type":"string","description":"Publisher Ethereum address (0x...)"}},"required":["subscriber","publisher"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_get_network_stats","description":"Get PayPerByte network-wide statistics: total publishers, messages streamed, and total subscriber fees settled in USDC.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_get_publisher","description":"Get on-chain info for a specific PayPerByte publisher: status, subscriber and message counts, USDC revenue, and the registered schema (size bounds, cadence, price-per-KB).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"Publisher Ethereum address (0x...)"}},"required":["address"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_get_token_balances","description":"Get USDC and ETH balances for an address on Arbitrum Sepolia (the on-chain testnet layer — MockUSDC settles subscriptions and fact-oracle queries there). Does NOT show the Base-mainnet USDC balance that byte_buy_data spends.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"address":{"type":"string","description":"Ethereum address (0x...)"}},"required":["address"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_list_feeds","description":"List all active data feeds in the PayPerByte catalog with topics, price-per-call, and frequency (pricePerKB is a deprecated alias).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_list_my_subscriptions","description":"List every active subscription for a given wallet address. Each entry has the publisher address, topic, status, when you subscribed, messages received in 7/30 days, USDC spent in 7/30 days, and the timestamp of the last message received. Use this to see what you're currently paying for and decide whether to unsubscribe.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"subscriber":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Wallet address to list subscriptions for"},"indexerUrl":{"description":"Optional indexer URL override (default: INDEXER_URL/BYTE_INDEXER_URL env or https://feeds.payperbyte.io)","type":"string","format":"uri"}},"required":["subscriber"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_publish_data","description":"Publish data to a subscriber via the PayPerByte DataStream contract. Hashes the payload, records size on-chain, and settles the fee in USDC. Requires PRIVATE_KEY.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"subscriber":{"type":"string","description":"Subscriber Ethereum address (0x...)"},"data":{"type":"string","description":"Data payload to publish (will be hashed on-chain)"},"maxFee":{"type":"number","description":"Maximum fee in USDC willing to pay for this publish (e.g. 0.05)"}},"required":["subscriber","data","maxFee"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_query_fact","description":"Query a PayPerByte fact-oracle publisher for a signed answer with citations. Posts the question to a registered fact-oracle publisher (topic='fact-oracle'), waits for the on-chain BroadcastStreamed response, and returns the answer plus structured citation URLs. The signed receipt proves which publisher produced the answer (provenance + tamper-evidence), NOT that the answer is correct — ground your output in the cited sources, not in a truth guarantee. Availability: this requires a registered fact-oracle publisher actively broadcasting; if none is live the call returns a timeout rather than an answer.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"question":{"type":"string","minLength":3,"maxLength":2048,"description":"The factual question to ask (e.g. 'What was last night's Lakers vs Warriors score?'). Should be specific and verifiable."},"subscriber_address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Your wallet address. You MUST be subscribed to the chosen publisher (with sufficient USDC escrow) or the publisher's on-chain broadcast will be skipped."},"max_byte_cost":{"description":"Max response payload bytes you're willing to pay for (defaults to 2000). Billed at the publisher's registered price-per-KB — read it with byte_get_publisher or byte_search_publishers before asking. Publisher refuses if can't fit answer.","type":"number","minimum":100,"maximum":10000},"topic_filter":{"description":"Optional topic filter (e.g. 'fact-oracle' default; future: 'sports', 'finance').","type":"string"},"min_publisher_pqs":{"description":"Minimum PQS to consider (BPS scale, 0-10000). 9000 = Elite-only, 7500 = Premium+.","type":"number","minimum":0,"maximum":10000},"max_response_latency_ms":{"description":"Max time to wait for the publisher's broadcast (default 30000 ms). Local-LLM publishers (Ollama + Searxng + 3-sample NLI gate) take ~30-60s; Anthropic + passthrough takes ~10-20s. Hard ceiling 180s.","type":"number","minimum":5000,"maximum":180000}},"required":["question","subscriber_address"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_register_publisher","description":"Register as a data publisher on PayPerByte. Registers a schema and the publisher on-chain. Requires PRIVATE_KEY. PayPerByte v1 publishers are first-party and unstaked — leave stake at '0'; a non-zero USDC stake is approved to DataRegistry first if you choose to post one.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"stake":{"type":"string","description":"USDC reputation stake to post, as a decimal string. Default '0' — PayPerByte v1 publishers are unstaked."},"topic":{"type":"string","description":"Data feed topic (e.g. 'eth-price', 'weather-nyc', 'gas-tracker')"},"expectedSize":{"type":"number","description":"Expected payload size in bytes per message"},"maxSize":{"type":"number","description":"Maximum payload size in bytes per message"},"frequency":{"type":"number","description":"Expected publishing frequency in seconds"},"pricePerKB":{"type":"number","description":"Price per kilobyte in USDC (e.g. 0.003)"}},"required":["stake","topic","expectedSize","maxSize","frequency","pricePerKB"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_search_publishers","description":"Search PayPerByte publishers by topic and sort order. Returns publisher addresses, topics, subscriber counts, message counts, and price-per-KB.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"description":"Topic keyword to search (e.g. 'weather', 'crypto', 'cve')","type":"string"},"sortBy":{"description":"Sort field: 'subscribers', 'revenue', 'messages'","type":"string"},"limit":{"description":"Max results to return (default 20)","type":"number","minimum":1,"maximum":100}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_subscribe","description":"Subscribe to a PayPerByte publisher's data feed. By default also sets USDC allowance to DataStreamLib to type(uint256).max so the subscription doesn't silently lose payments when allowance depletes (the contract's allowance-skip path emits DataStreamed with amount=0 on transferFrom failure rather than reverting). Pass skipAllowance: true to opt out and set a finite cap manually. Requires PRIVATE_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"publisher":{"type":"string","description":"Publisher Ethereum address (0x...) to subscribe to"},"skipAllowance":{"description":"If true, don't bundle the USDC approve(max) call. Default false. Auto-approve is also skipped when the wallet already has ≥ $1000 USDC of allowance to DataStreamLib.","type":"boolean"}},"required":["publisher"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_subscription_health","description":"Get the content-drift signal for a publisher. Compares their last 7 days of publishing activity (cadence, message count) against their 23-day baseline (days 8-30). Returns 'stable' (steady publishing), 'moderate' (20-50% cadence shift or 24-48h silence), 'significant' (>50% shift or >48h silence), or 'unknown' (new publisher, insufficient baseline). Use this to detect when a publisher you subscribe to has pivoted content or gone dormant.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"publisher":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Publisher address to check"},"indexerUrl":{"description":"Optional indexer URL override","type":"string","format":"uri"}},"required":["publisher"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_unsubscribe","description":"Unsubscribe from a publisher's data feed. Takes effect next block: no more billing, no more data flow. Reversible — you can resubscribe later via byte_subscribe. Use this when a publisher has pivoted content (check with byte_subscription_health first) or when you simply don't want the feed anymore. Requires PRIVATE_KEY for the connected wallet.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"publisher":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Publisher address to unsubscribe from"}},"required":["publisher"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"byte_verify_payload","description":"Verify-before-act: confirm a data payload an agent is about to act on actually matches what the publisher cryptographically attested to on-chain. Recomputes keccak256 of the received bytes and compares it to the on-chain EIP-712 PayloadAttestation hash. ALWAYS call this on BYTE-sourced data before acting on it; if verified=false the bytes were tampered/corrupted in transit and MUST NOT be used. Anchor the check with EITHER expectedHash (an on-chain payloadHash you already hold, e.g. from byte_query_fact / byte_buy_data) OR txHash (the settlement tx — also recovers the attestation signer and confirms it is the named publisher). Read-only; no wallet or payment required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"data":{"type":"string","description":"The exact payload bytes the agent received and is about to act on — the raw delivered string, or a 0x-prefixed hex byte string."},"expectedHash":{"description":"On-chain payloadHash to verify against (0x + 64 hex), e.g. the payloadHash returned by byte_query_fact or byte_buy_data.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$"},"txHash":{"description":"Settlement tx hash whose on-chain BroadcastStreamed attestation to verify against. When provided, also recovers the EIP-712 signer and confirms it is the attesting publisher.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$"},"hashMode":{"description":"How to hash structured payloads: 'raw' (keccak of the utf8 string, default — matches byte_publish_data) or 'canonical' (keccak of key-sorted, whitespace-free JSON).","type":"string","enum":["raw","canonical"]}},"required":["data"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":84,"grade":"B","scanned_at":"2026-09-19T20:06:06.051Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:06:06.019Z","components":{"code":{"score":25,"max":25,"notes":["13 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 794ms"]},"poisoning":{"score":15,"max":15,"notes":["15 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 2 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 7 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://mcp.payperbyte.io/mcp","reachable":true,"authRequired":false,"latencyMs":794,"serverInfo":{"name":"byte-protocol","version":"0.13.0"}}],"packages":[{"registryType":"npm","identifier":"byte-mcp-server","version":"0.13.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":8,"publishedAt":"2026-09-13T03:48:33.877Z","repositoryUrl":"git+https://github.com/0rkz/byte-mcp-server.git","weeklyDownloads":483}],"repo":{"found":true,"owner":"0rkz","repo":"byte-mcp-server","archived":false,"pushedAt":"2026-09-13T06:02:25Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/266423112?v=4","ownerCreatedAt":"2026-03-08T04:38:47Z","license":"MIT"},"icon":{"url":null,"source":"none"},"presence":{"stars":1,"forks":0,"downloadsWeek":483,"license":"MIT","lastPushAt":"2026-09-13T06:02:25.000Z","score":36}}}},"grade_history":[],"reviews":[]}