
Eclipse Crawlway
Pay-per-crawl licensing receipts for publishers: a sealed receipt binding crawler identity, license-terms hash, and content fingerprint in one recomputable record, hash-chained per publisher and revocable by terms version. LOCAL/fixture scope only — receipt mechanics only; no crawling, no fetching, no network calls, and the $0.01/call meter is recorded, never charged in v0.1.
status: in-developmentclass: mcpTrust & ReceiptsPublishing
Vendor: Cyan Eclipse Technologies
What it does
- Novel mechanism — a crawl receipt binds crawler identity (Herald-card-shaped id), license-terms hash, and content fingerprint in one recomputable record (SPEC §3): licensing and proof-of-license are the same artifact. publish_terms seals the terms record (terms_hash + terms_record_hash); record_crawl's binding_hash covers crawler_id, publisher_id, terms_version, terms_hash, content_fingerprint, url, and ts, and receipts hash-chain per publisher (receipt_hash = sha256(prev + binding), genesis = 64 zeroes, chains never cross publishers). Bench: binding, terms, and chain hashes all match the bench's independent recomputation from the SPEC §3 formulas, and tampering any bound element in an object copy or a store copy verifies INVALID for the tampered receipt and its chain successor.
- Ledger-membership verification + terms-seal enforcement (v0.1.1 fixes for bench defects D1/D2): VALID is returned only for a receipt present in the sealed ledger passing the full per-publisher chain walk — a standalone object resealed with the public formula (forged crawler, fingerprint of content never crawled, or an identity swap of a genuine receipt) verifies INVALID with chain_valid: false (re-bench C1: 10/10). record_crawl and verify_receipt recompute the terms-record seal before trusting stored terms: a seal-broken terms record refuses minting (TERMS_SEAL_INVALID) and drives prior receipts INVALID with terms_status: seal_invalid, per-record (re-bench C2: 12/12).
- Sealed-only meter + consistent reports + strict structure (v0.1.1 fixes for bench defects D3/D4/D5): meter_report derives every count from sealed receipt records only — garbage, unparseable, or unsealed appended lines are excluded from all totals and surfaced as rejected_lines (re-bench C3: appended garbage + unsealed lines leave totals and breakdowns unchanged, rejected_lines: 2). There is no separate counter and no tool-surface mutation path (fake set_meter/increment_meter/mint tools return NO_SUCH_TOOL). Filtered reports reconcile with themselves: total_receipts equals each breakdown sum under every filter combination (re-bench D4: 9/9). A supplied receipt carrying any key outside the specced receipt schema, or a tampered position, verifies INVALID (re-bench D5: 6/6).
- Revocation is a status, not a rewrite: revoke_terms appends a revocation record; receipts under that terms version then verify TERMS_REVOKED with binding_valid: true and chain_valid: true — a revoked receipt remains provably a receipt that was issued, under terms no longer in force. record_crawl under revoked terms returns a TERMS_REVOKED refusal and mints nothing (ledger count and meter provably unchanged); re-revoke returns already_revoked: true; unknown terms return TERMS_NOT_FOUND. Duplicate {publisher, version} terms publication is refused (TERMS_VERSION_EXISTS) and prior receipts never verify against substituted terms.
- Honest scope + disclosed LOW: LOCAL/fixture — RECEIPT MECHANICS ONLY. No crawling, no fetching, no network calls of any kind, no marketplace; callers supply crawler identity refs, publisher ids, license terms, and content fingerprints (SHA-256 hashes) — never content itself; Herald-card ids are shape-validated only, never resolved or authenticated. Python 3 standard library only; MCP over stdio; exactly 5 tools (unknown names return NO_SUCH_TOOL). The meter is recorded at $0.01/call with charged: false — no payment, checkout, wallet, or charging code exists in this package. Known LOW D6 (non-blocking, fix-before-live, disclosed on the bench record): a corrupt non-JSON store line is tolerated by meter_report (counted in rejected_lines) but crashes the non-meter tools — the server exits loudly instead of answering; no false VALID and no inflated meter results.
Tools
publish_terms · record_crawl · verify_receipt · revoke_terms · meter_report
Platforms
- MCP over stdio
Certification
Bench verdict: CERTIFIED (local, fixture)
Certified scope: CERTIFIED (local, fixture) — Verity independent re-bench 2026-10-26, REBENCH-1 of the v0.1.1 Bench Fix C1–C3/D4/D5 round (repo @ d3af623): 48/48 scoped probes PASS, 0 FAIL. C1 (D1, HIGH — a standalone receipt object resealed with the public formula verified VALID with chain_valid: true) CLOSED: non-ledger objects (resealed forgery at position 1 and 99, resealed identity-swap of a genuine receipt) return INVALID with chain_valid: false and in_ledger: false; forged receipt_id returns RECEIPT_NOT_FOUND; the genuine ledger receipt still verifies VALID by id and by object (10/10). C2 (D2, MEDIUM — the terms-record seal was never enforced) CLOSED: both store-swap variants (hash-only; text+hash with stale seal) make record_crawl refuse with TERMS_SEAL_INVALID (nothing minted, ledger unchanged) and prior receipts verify INVALID with terms_status: seal_invalid; an untouched publisher in the same store is unaffected (12/12). C3 (D3, MEDIUM — the meter counted unsealed ledger lines) CLOSED: after appending a non-JSON garbage line and a well-formed-but-unsealed line, meter_report totals stay at the sealed count with rejected_lines: 2 surfaced and breakdowns byte-identical (5/5). D4 (LOW — filtered meter reports were internally inconsistent) CLOSED: for filters {}, {publisher}, {crawler}, {publisher+crawler}, total_receipts equals every breakdown sum and metered_total_usd equals total × 0.01 (9/9). D5 (LOW — unbound fields on a supplied receipt were not authenticated) CLOSED: an extra field (license_scope) or a tampered position verifies INVALID with structure_valid: false (6/6). Spot-check PASS 6/6: happy-path hashes match the bench's independent recomputation and revocation semantics are unregressed (revoked receipts verify TERMS_REVOKED with binding_valid: true, chain_valid: true; record_crawl under revoked terms refuses and mints nothing). Known LOW, non-blocking, disclosed (D6, fix-before-live): a corrupt non-JSON store line is handled by meter_report (counted in rejected_lines) but crashes the non-meter tools via the shared loader — the server exits instead of answering; the failure is loud and safe-direction (no false VALID, no inflated meter) and is recorded as fix-before-live for any hosted/long-running deployment. Prior verdict on v0.1.0 (VERDICT.md): CONDITIONAL (local, fixture), 49/49 asserted probes PASS with defects D1–D5 — all closed by this re-bench. Scope = LOCAL/fixture only: receipt mechanics only — no crawling, no fetching, no network calls, no marketplace; callers supply content fingerprints (SHA-256 hashes) and Herald-card-shaped crawler identity refs, never content; the $0.01/call meter is recorded, never charged in v0.1.
Not tested:
- Crawling, fetching, or any network access — not in v0.1.1 by design (SPEC §2 scope): receipt mechanics only; callers supply fingerprints (hashes), never content
- Hosted or remote serving — v0.1.1 is local stdio only, operating on caller-supplied fixture terms, identities, and fingerprints; known LOW D6 (a corrupt non-JSON store line crashes non-meter tools, failing loud) is fix-before-live for any hosted/long-running deployment
- Payment, checkout, or charging — none exists in v0.1.1 by design: meter_report records the meter at $0.01/call with charged: false; the price is commercial metadata (PC-1 pattern) and no payment or checkout code is in the server
- Identity resolution or authentication of Herald cards — v0.1.1 validates the herald:<kind>:<id> shape only; no card is resolved or authenticated
- A marketplace or listing function — none exists in v0.1.1; receipts are sealed, verified, metered, and revoked locally only
Live state note: Bench evidence: argus-batch-20261026/bench/crawlway/VERDICT.md + REBENCH-1.md (Verity, independent bench over stdio JSON-RPC only, never importing builder code, all hashes recomputed independently from SPEC §3 formulas; builder suite 25/25). This bench issued no test-bench/results scorecard; scorecard_ref is null and no scorecard is claimed or hosted for this product.
Pricing
PRICED — $0.01/call (PC-1 pattern), via the Eclipse Bazaar bench-order path only. No checkout, payment, or buy-now link exists for this product; v0.1.1 records the meter only — the meter is never charged in v0.1 and there is no payment or checkout code (the price is a stated term only). Repository is PRIVATE (priced-product policy).
Install / verify
No install command is published for this product in the catalog or its registry record.
Official MCP Registry name: io.github.CYAN-ECLIPSE-TECHNOLOGIES-LLC/eclipse-crawlway-mcp
Registry listing: https://registry.modelcontextprotocol.io/v0.1/servers/io.github.CYAN-ECLIPSE-TECHNOLOGIES-LLC%2Feclipse-crawlway-mcp/versions/0.1.1
Repository: https://github.com/CYAN-ECLIPSE-TECHNOLOGIES-LLC/eclipse-crawlway-mcp
Verify any MCP server in your client configs against this catalog with bazaar check (Eclipse Bazaar MCP / CLI — see llms.txt).