One Worker, two kinds of route
Live at okf-persona-gate.jonny-a6b.workers.dev, serving the shuriq-jonny persona bundle (164 concepts, 29 types).
| route | access | returns |
|---|---|---|
/index.md | open | bundle root — every concept, grouped by type, progressive disclosure |
/<Type>/<id>.md | open | one Layer-2 concept: identity, neighbors, a gated resource: pointer |
/rehydrate/<id> | bearer token | the deep model: typed edges, attribute values, confidence scores |
The contrast, captured live
Same entity, same host. The left request is what any agent on the internet gets; the right is what an authorized agent gets.
▪ without authorization — HTTP 401
$ curl …workers.dev/rehydrate/person-jonny { "error": "unauthorized", "layer_served": 2, "detail": "The deep model for this entity (typed relationship edges, attribute values, confidence scores) resolves only for authorized agents.", "what_you_can_read": "The Layer-2 concept docs and index.md on this host are open. That is the export projection; this denial is the firewall." }
▪ with the bearer token — HTTP 200
$ curl -H "Authorization: Bearer ●●●" \ …workers.dev/rehydrate/person-jonny { "layer": 3, "entity": { "id": "person-jonny", "type": "Person", "confidence": 0.95, "outgoing": [ { "target": "ShurIQ Brand Dashboard", "rel": "views_dashboard", "confidence": 0.92 } ] … attributes, sources, incoming edges } }
Try it yourself: walk the open bundle, open a concept, then follow its resource: pointer. You will get the 401.
The same boundary over MCP
Variant 2 of the reference implementation: a dependency-free MCP resource server (serving/okf_mcp_server.mjs).
It lists all 165 bundle files as MCP resources (okf://persona-cross-links/…) and returns frontmatter + body through resources/read. It serves the identical Layer-2 projection — and the deep model is not reachable through it at all. An agent connected over MCP sees exactly what an agent walking the Worker's open routes sees: the resource list is the projection.
claude mcp add okf-persona -- node projects/shur/okf/serving/okf_mcp_server.mjs
resource: URI scheme, open since profile v0.1, is decided for serving: a gated Cloudflare Worker URL, because it is real, it runs on infrastructure we already operate, and it makes the denial literal. The totem:// custom scheme stays the production direction once a resolver exists. Protection was never one mechanism — it is the poor format, the deliberate projection, and the gated endpoint, stacked. This page is the third layer running.