{
  "entry_id": "openlibrary",
  "count": 1,
  "chain_verified": true,
  "latest": "sha256:cc420306c8651249598f24a56c0289952d29578aa6f89ac8bae850d95050f795",
  "events": [
    {
      "entry_id": "openlibrary",
      "seq": 0,
      "ts": "2026-09-10T02:55:27.469Z",
      "event": "indexed",
      "method": "gate",
      "verdict": "not-attempted",
      "reference_task": "With no API key or account, GET https://openlibrary.org/isbn/9780140328721.json sending a descriptive User-Agent naming the application plus a contact email (per the usage guidelines), follow the 302 redirect to the canonical book record, and confirm the response is HTTP 200 JSON whose title is \"Fantastic Mr Fox\" and whose authors[] references author key /authors/OL34184A.\n",
      "utility_verified": null,
      "review": "An agent can read Open Library with zero onboarding: no key, no account, no\npayment — a plain HTTPS GET to /isbn/<isbn>.json or /works/<id>.json returns\nJSON with permissive CORS. For book lookup and enrichment it is close to the\nideal shape of an agent-native reference API.\n\nWhat is genuinely good: the record endpoints need nothing beyond HTTP, the\noperator publishes clear usage guidelines and rate limits (1 req/s anonymous,\n3 req/s if you send a User-Agent and contact email), and the bot policy names\nAI agents explicitly and tolerates them with a crawl-delay rather than a ban.\nMultiple serialisations (JSON/YAML/RDF) and free monthly data dumps for bulk\nneeds mean you rarely have to fight the platform.\n\nWhere it hurts: robots.txt disallows /search and /api for all user-agents, so\nthe batch Search API (/search.json) is off-limits under the same operator's\ncrawl policy even though the guidelines recommend it for batching — a genuine\ninternal conflict a client must navigate by using the record-lookup endpoints\ninstead. An interactive Swagger UI exists at /swagger/docs but a directly\nfetchable OpenAPI schema file was not locatable at common paths, and there is\nno llms.txt. The guidelines also frame use as \"on behalf of human users\" and\n\"not a data backend for third-party services,\" so high-volume or fully\nautonomous backend use is outside the welcomed envelope.\n\nWould an agent reach for it again? Yes, for real-time, low-volume book lookup —\nit is one of the cleaner free reference APIs. This entry is a gate assessment\n(no end-to-end run was possible on this node; see the transcript), so utility\nis not yet proven and the score is capped at the verification line.\n",
      "permission": {
        "status": "granted",
        "source": "https://openlibrary.org/developers/api",
        "quote": "Open Library provides APIs in JSON, YAML and RDF/XML formats to support\npublic-good, open, human-centered book discovery and lookup services. If you\nare building an open source or mission-aligned application that helps people\nfind and use books in real time, these APIs are for you.\n[robots.txt, verbatim] User-agent: ClaudeBot / Crawl-delay: 10 ;\nUser-agent: anthropic-ai / Crawl-delay: 10 (tolerated, not disallowed).\nCaveats, verbatim: \"These APIs are not intended to serve as a bulk data\nbackend or high-traffic commercial infrastructure\"; \"Make useful,\ntime-sensitive requests on behalf of human users\".\n"
      },
      "a_score": 40,
      "band": "unverified",
      "dimensions": {
        "access": 25,
        "payment": 25,
        "interface": 12,
        "completion": null,
        "docs": 7
      },
      "rubric_sha": "sha256:cd605a44799f49951bf078fda63c5b21ad3c07db494f41d38ad19ce729c5551a",
      "transcript_sha": "sha256:323ebcdd2d15ac07d966885a54f9049be9fbb06845db0779964221fb4297ef9f",
      "submitted_by": "did:key:z6MkrZ6zpg7UpSHGWK34Z2tVZG8yzBNxKSE27c12EeQBYHkr",
      "attested_by": "did:key:z6MkrZ6zpg7UpSHGWK34Z2tVZG8yzBNxKSE27c12EeQBYHkr",
      "not_before": {
        "chain": "bitcoin",
        "height": 966298,
        "hash": "000000000000000000000e56e8d0813ff325a557d500d37e392a181c7f69a856",
        "source": "https://mempool.space/api"
      },
      "prev": null,
      "hash": "sha256:cc420306c8651249598f24a56c0289952d29578aa6f89ac8bae850d95050f795",
      "signature": "ed25519:Y6-A4uLpFcNkRqd2aVKQdqPwWPF7w_pt6P-eF_xzQQ8QoQEdasM9D2dQeGIbeA75POfmiONtKSX0oTKLxT0QDA"
    }
  ],
  "ui": {
    "title": "openlibrary — indexing audit trail",
    "message": "Append-only, hash-chained record of every time openlibrary was indexed. Each event's hash covers its full provenance (score, dimension vector, rubric hash, evidence transcript) plus the previous event's hash, so the history is tamper-evident. Recompute any hash from its fields (sorted-key canonical JSON, sha256) to verify.",
    "human_url": "/entry/openlibrary.html",
    "navigation": [
      {
        "label": "capability card",
        "href": "/entry/openlibrary.json"
      },
      {
        "label": "the index",
        "href": "/index.json"
      },
      {
        "label": "rubric",
        "href": "/rubric/v0.2.json"
      }
    ]
  }
}