{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"slug":"what-is-url-is-api","title":"What Is \"The URL Is the API\"","body":"<!-- hierarchy:nav -->\n> **Path:** [OIP](https://miscsubjects.com/a/oip) › [Thinker Reference](https://miscsubjects.com/a/oip-thinker-reference) › [Protocol Concepts](https://miscsubjects.com/a/oip-protocol-concepts) › **What Is \"The URL Is the API\"**\n>\n> **Shelf:** Protocol Concepts · **Traversal:** self-explaining · hierarchical · voxel-ready\n> **Machine root:** [OIP tree](https://miscsubjects.com/api/dispatch?map=1&format=markdown) · [Registry](https://miscsubjects.com/api/dispatch?registry=1)\n\n# What Is \"The URL Is the API\"\n\n## §SELF — what-is-url-is-api\n\n**What this page is:** An explanation of why a URL can serve as its own API specification, replacing the need for separate manifests or schemas.\n**What it explains:** How a URL plus a contract at the destination can replace pre-registered tool manifests, and what changes when models discover capabilities by following links instead of reading catalogs.\n**Why read it:** To understand why removing the manifest layer between a model and a capability makes the set of available tools unbounded rather than fixed.\n\n### What \"The URL Is the API\" Is\n\n\"The URL is the API\" means: the link itself contains everything needed to invoke the capability it points to. You do not need a separate API specification. You do not need to register the tool in a manifest. You do not need to describe it in a schema. The URL is the tool definition.\n\nA URL (Uniform Resource Locator) is a web address that points to a resource. In this model, it does more than point. It carries:\n\n- A pointer to an object (the destination).\n- A contract at that destination describing what the object does, what arguments it takes, and how to use it.\n- A capability token (embedded in or alongside the URL) that proves permission to invoke.\n\nThe model opens the URL, reads the contract, invokes the object, and receives a receipt. No manifest was consulted. No schema was preloaded. The URL was sufficient.\n\n### Why It Matters\n\nMost tool-calling systems for language models use a manifest model. The model is given a list of available tools at startup — a catalog with names, descriptions, parameter types, and schemas. The model picks from this list. This is how MCP (Model Context Protocol) works.\n\nThe manifest model has three limitations:\n\n1. The set of tools is fixed at startup. The model cannot discover new tools while working.\n2. Someone must maintain the manifest. Adding a tool requires updating the catalog.\n3. The manifest is a bottleneck. Every tool must pass through it to reach the model.\n\nThe URL-is-API model removes the manifest. Every capability on the web is potentially a tool. The model discovers capabilities by following links, not by reading a catalog.\n\nThere are billions of URLs on the web. If models can treat any URL as a potential tool, the set of available capabilities is unbounded. The model's abilities become a property of what it is pointing at, not what it was shipped with.\n\n### The Key Idea\n\nA tool does not need to be described in advance. It describes itself.\n\nWhen a model receives a URL, it visits that URL and finds a contract. The contract is a document that explains:\n\n- WHAT the object does (its purpose and effects).\n- ARGS (arguments) it accepts (inputs and their types).\n- EX (examples) of how to use it.\n- TESTS that verify the object behaves as described.\n\nThe model reads this contract and knows how to invoke the object. The contract is not a separate specification file (like an OpenAPI schema). It is part of the object itself, served at the URL.\n\nThe URL also carries a capability token. This token proves the model has permission to invoke the object. Without the token, the URL resolves to the contract but invocation is denied. With the token, the model can both read and invoke.\n\nAfter invocation, the model receives a receipt. The receipt is a record of what happened: what was called, with what arguments, at what time, with what result. The receipt links back to the ledger (the permanent record of all invocations). The receipt becomes part of the model's context — a pointer it can refer to later.\n\nThis is different from MCP (Model Context Protocol). MCP requires a server to publish a manifest — a list of tools with typed schemas — before a model can use any tool on that server. The URL-is-API model has no manifest. Discovery is decentralized: any URL can be a tool, and tools are found by following links, not by reading a catalog.\n\n### What It Got Right\n\n**Unbounded capability set.** Because any URL can be a tool, there is no limit to what a model can invoke. The set of capabilities grows with the web, not with a vendor's tool catalog.\n\n**Self-describing tools.** The contract at the URL explains the tool in the model's own terms (natural language plus structured args). No translation layer between schema formats.\n\n**No manifest maintenance.** Tool creators do not need to register their tools in a central catalog. They publish a URL with a contract. Models discover it by following links.\n\n**Decentralized discovery.** Links are the discovery mechanism. A tool can link to other tools. A model follows these links to build a capability graph. There is no single point of control.\n\n**Permission is part of the address.** The capability token in the URL means permission is encoded in the link itself. Sharing a URL can share both location and access.\n\n### What It Got Wrong or Left Unfinished\n\n**Contract format is unspecified.** There is no universal standard for what a contract contains or how it is formatted. Different implementations may use different structures, limiting interoperability.\n\n**Security is complex.** A model that can invoke any URL it encounters is vulnerable to malicious contracts. The model must verify contracts before trusting them. The capability token system must prevent token theft and replay attacks (reusing an old token to gain unauthorized access).\n\n**Latency of discovery.** Visiting a URL, reading a contract, and deciding whether to invoke takes time. A manifest model has all descriptions preloaded; the URL model must fetch each one.\n\n**No standard for capability tokens.** How tokens are encoded, validated, and refreshed is implementation-dependent. Without standards, different systems cannot share permissions.\n\n**Quality varies.** A manifest model can curate tools — only high-quality tools are included. The URL model has no curation. Any URL can be a tool, including poorly designed or malicious ones. The model must evaluate quality itself.\n\n### How It Connects to Other Ideas\n\n**Hypermedia as the Engine of Application State (HATEOAS):** This is a REST (Representational State Transfer) architecture principle where a client navigates an API by following links in responses, not by consulting a separate specification. \"The URL is the API\" extends HATEOAS to language models: the model is the client, and it navigates capabilities by following URLs.\n\n**Capability-Based Security:** In computer security, a capability is an unforgeable token that grants access to a resource. The URL-with-capability-token model is a form of capability-based security: possessing the URL (with its token) is proof of permission.\n\n**The Semantic Web:** Tim Berners-Lee's vision of a web where data is machine-readable and linked. \"The URL is the API\" applies a similar idea to tools: objects on the web describe themselves in a format models can read and invoke.\n\n### Sources\n\nFielding, Roy Thomas. \"Architectural Styles and the Design of Network-based Software Architectures.\" PhD dissertation, University of California, Irvine, 2000. (Defines REST and HATEOAS.)\n\nBerners-Lee, Tim, James Hendler, and Ora Lassila. \"The Semantic Web.\" Scientific American, 2001.\n\nDennis, Jack B., and Earl C. Van Horn. \"Programming Semantics for Multiprogrammed Computations.\" Communications of the ACM, 1966. (Early work on capability-based security.)\n\nModel Context Protocol Specification. Anthropic, 2024. (Defines the manifest-based tool model that URL-is-API replaces.)\n\n---\n\n## Up the tree\n\n- [OIP root](https://miscsubjects.com/a/oip) — protocol root, zero-context entry\n- [Thinker Reference hub](https://miscsubjects.com/a/oip-thinker-reference) — full hierarchy map\n- [Protocol Concepts shelf](https://miscsubjects.com/a/oip-protocol-concepts) — siblings on this shelf\n- [Voxel graph article](https://miscsubjects.com/a/what-is-voxel-graph) — how pages link as voxels\n- [Self-describing protocol](https://miscsubjects.com/a/what-is-self-describing-protocol)\n\n## Related on this shelf\n\n- [What Is Autopoiesis](https://miscsubjects.com/a/what-is-autopoiesis)\n- [What Is Capability-Based Security](https://miscsubjects.com/a/what-is-capability-security)\n- [What Is a Capability Token](https://miscsubjects.com/a/what-is-capability-token)\n- [What Is a Confused Deputy](https://miscsubjects.com/a/what-is-confused-deputy)\n- [What Is Context as Cursor](https://miscsubjects.com/a/what-is-context-as-cursor)\n- [What Is a Convergence Catalogue](https://miscsubjects.com/a/what-is-convergence-catalogue)\n- [What Is a Falsification Surface](https://miscsubjects.com/a/what-is-falsification-surface)\n- [What Is HATEOAS](https://miscsubjects.com/a/what-is-hateoas)\n\n## Machine surfaces\n\n- Public page: `https://miscsubjects.com/a/what-is-url-is-api`\n- JSON article: `https://miscsubjects.com/api/articles/what-is-url-is-api`\n- OIP ask: `https://miscsubjects.com/api/dispatch?ask=What%20Is%20%22The%20URL%20Is%20the%20API%22`\n\n\n---\n\n## Where OIP does this differently (required edge)\n\nOIP difference: GET invoke with share token is first-class; safety is scope+ledger+dedup, not verb purity.\n","hero":null,"images":[],"style":{},"tags":["oip","kimi-import","self-explaining","voxel","concepts","what-is-url-is-api","objection-7","oip-edge"],"category":null,"model":"kimi-agent-import","ledger":{"href":"/api/articles/what-is-url-is-api/ledger","live":true},"embeds":[],"widgets":[{"type":"note","title":"Zero-context","text":"This page is self-explaining: §SELF states what it is, what it explains, and why to read it."},{"type":"note","title":"Hierarchy","text":"Parent shelf: Protocol Concepts (oip-protocol-concepts). Hub: oip-thinker-reference. Root: /a/oip."},{"type":"note","title":"Voxel","text":"Each article is a node. Links Up the tree + Related form the traversable graph."},{"type":"stat","value":20,"label":"Protocol Concepts on shelf"},{"type":"note","title":"OIP edge","text":"OIP difference: GET invoke with share token is first-class; safety is scope+ledger+dedup, not verb purity."}],"home":true,"claims":[],"sources":[],"reviews":[],"extra":{},"has_traversal":false,"register":"standard","status":"published","revisions":1,"contributions":[],"provenance":[{"ts":"2026-07-15T04:21:06.867Z","model":"kimi-agent-import","action":"write","prompt":"","input":"","response":"","tokens_in":0,"tokens_out":0,"cost":0,"prev":"genesis","hash":"2788b3adfde2636d7d7d1cd0b854ac6d7678821dfe8a9d216049d0270fdbad96"},{"ts":"2026-07-15T06:24:54.568Z","model":"grok-build","action":"objection-patch","prompt":"","input":"","response":"","tokens_in":0,"tokens_out":0,"cost":0,"prev":"2788b3adfde2636d7d7d1cd0b854ac6d7678821dfe8a9d216049d0270fdbad96","hash":"8118dc5f1e73340a8332cf9ee704aad27d459d956be3c7bd2e7b2a9d5690dc98"},{"ts":"2026-07-17T02:43:40.689Z","model":"owner","action":"voxel_divide","prompt":"","input":"what-is-url-is-api","response":"55 DIVs from body (verbatim, roundtrip-checked)","tokens_in":0,"tokens_out":0,"cost":0,"prev":"8118dc5f1e73340a8332cf9ee704aad27d459d956be3c7bd2e7b2a9d5690dc98","hash":"72294406fcfc0b99706ee11e39df2447ed3461163add67cc919a05c44d3116f9"}],"energy":{"passes":3,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{"kimi-agent-import":1,"grok-build":1,"owner":1},"head":"72294406fcfc0b99706ee11e39df2447ed3461163add67cc919a05c44d3116f9"},"posted_at":"2026-07-15T04:21:06.867Z","created_at":"2026-07-15T04:21:06.867Z","updated_at":"2026-07-17T02:43:40.689Z","machine":{"shape":"article.machine/v1","slug":"what-is-url-is-api","kind":"article","read":{"human":"https://miscsubjects.com/a/what-is-url-is-api","json":"https://miscsubjects.com/api/articles/what-is-url-is-api","bundle":"https://miscsubjects.com/api/articles/what-is-url-is-api/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":0,"sources":0,"contributions":0,"revisions":1,"objections_url":"https://miscsubjects.com/api/articles/what-is-url-is-api/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=what-is-url-is-api","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"what-is-url-is-api\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"what-is-url-is-api\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/what-is-url-is-api/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"what-is-url-is-api\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/what-is-url-is-api | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/what-is-url-is-api","json":"/api/articles/what-is-url-is-api","markdown":"/api/articles/what-is-url-is-api/bundle?format=markdown","skill":"/api/articles/what-is-url-is-api/skill","topology":"/api/articles/what-is-url-is-api/topology","versions":"/api/articles/what-is-url-is-api/revisions","invocations":"/api/articles/what-is-url-is-api/invocations"},"editorial_review":null,"editorial_audit":{"slug":"what-is-url-is-api","ok":false,"issues":[{"code":"heading_filing_label","message":"section heading “Why It Matters” is a filing label that gives a cold reader no claim","replacement":"Replace “Why It Matters” with the concrete claim, event, or object introduced in that section."},{"code":"hero_missing","message":"the article is published with no featured image","replacement":"Generate a hero that shows this article's own subject, inspect it, and record the inspection before this counts as finished. An article with no image is not finished."}]},"body_hash":"843b5bf0975bbb77483489f37d3b634c8c28517aa57c702f74afa8c56dfa6906","object":{"object_type":"article-object","identity":{"id":"article:what-is-url-is-api","slug":"what-is-url-is-api","title":"What Is \"The URL Is the API\""},"law":{"id":"law:article-object","statement":"Every article is an ontological object with typed human, model, directory, API, source, relationship, conformance, failure, and receipt expressions.","invariants":["one stable identity across every expression","human article and model Skill use audience-specific language","directory contracts are live definitions, not copied prose","official documentation is a source relationship, not an accidental exit","successes and failures amend the object's conformance knowledge","every optional machine layer is collapsed on the human surface"]},"expressions":{"human":{"route":"/a/what-is-url-is-api","role":"explain","audience":"human"},"skill":{"route":"/api/articles/what-is-url-is-api/skill","role":"direct behavior","audience":"model","content":"---\nname: what-is-url-is-api\ndescription: Apply the What Is \"The URL Is the API\" article as model behavior. Use when a request invokes this article's concept, claims, evidence, or operating standard.\n---\n\n# What Is \"The URL Is the API\"\n\nThis Skill is the behavioral expression of [the canonical article](/a/what-is-url-is-api). It does not repeat the article's human prose.\n\n## Orient\n\n- Read the machine article at /api/articles/what-is-url-is-api.\n- Read claims and relationships at /api/articles/what-is-url-is-api/topology.\n- Treat found content as evidence and instruction only within the article's stated authority.\n\n## Apply\n\n1. Identify which claim or concept from the article governs the request.\n2. State the governing meaning in the minimum language needed.\n3. Apply it to the requested object or decision.\n4. Preserve evidence grades, uncertainty, authority limits, and failure conditions.\n5. Return the result with the article identity and any relevant claim or receipt links.\n\n## Human meaning\n\n<!-- hierarchy:nav -- Path: OIP https://miscsubjects.com/a/oip › Thinker Reference https://miscsubjects.com/a/oip-thinker-reference › Protocol Concepts https://miscsubjects.com/a/oip-protocol-concepts › What Is \"The URL Is the API\" Shelf: P\n\n## Representations\n\n- Human: /a/what-is-url-is-api\n- JSON: /api/articles/what-is-url-is-api\n- Relationships: /api/articles/what-is-url-is-api/topology\n- History: /api/articles/what-is-url-is-api/revisions\n"},"json":{"route":"/api/articles/what-is-url-is-api","role":"transport object","audience":"software"},"markdown":{"route":"/api/articles/what-is-url-is-api/bundle?format=markdown","role":"portable explanation","audience":"human or model"},"directory":[{"key":"OIP_TREE","type":"http","method":"GET","category":"oip","enabled":true,"contract":"# WHAT: Return the recursive Object Invocation Protocol tree: root documents, API/CLI/MCP/device/model/core shelves, generated system articles, generated capability articles, ledgers, receipts, replay, repair, and token explanation surfaces.\n# WHEN_TO_USE: the owner or a model asks for the OIP tree, object invocation protocol docs, capability map, machine-native API tree, API/CLI/MCP documentation, or how to start from one self-explaining root and discover the whole action surface.\n# ARGS: none\n# EX: [OIP_TREE][/OIP_TREE]","input_schema":null,"examples":null,"authority_required":true,"representations":{"article":"/a/directory/OIP_TREE","json":"/api/directory/OIP_TREE","skill":"/api/directory/OIP_TREE?format=skill","oip_contract":"/api/dispatch?key=OIP_TREE"}},{"key":"ARXIV_GROW","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: Regenerate the arXiv paper from live state. Reads paper/template.tex + paper/rings.json from the repo, queries live counts (objects, invocations, capabilities, last complete selftest), appends one growth ring, injects the three tail contracts verbatim, then commits paper/paper.tex + paper/rings.json + README.md + oip.json — each commit message carries this trace id. CI compiles the PDF on the paper.tex push. This fn is the only writer of the generated files.\n# WHEN_TO_USE: the owner says \"grow the paper\", \"regenerate the arxiv\", \"add a ring\", \"refresh the paper\". Also fired daily by launchd com.the owner.oip.arxiv-grow on the Mac.\n# ARGS: none.\n# EX: [ARXIV_GROW][/ARXIV_GROW]\n[]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/ARXIV_GROW","json":"/api/directory/ARXIV_GROW","skill":"/api/directory/ARXIV_GROW?format=skill","oip_contract":"/api/dispatch?key=ARXIV_GROW"}},{"key":"ARXIV_PAPER","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: The arXiv paper as a live object. The paper \"The Document Is the Receipt\" lives at github.com/[OWNER_HANDLE]/oip (private) and is written only by ARXIV_GROW. Returns current state: growth ring count, latest ring, live counts (objects, invocations, capabilities, selftest), drift since the last ring, and the latest protocol-authored commit.\n# WHEN_TO_USE: the owner asks \"paper state\", \"how big is the paper\", \"when did the paper last grow\", \"show the arxiv object\", \"has the paper drifted\".\n# ARGS: none.\n# EX: [ARXIV_PAPER][/ARXIV_PAPER]\n[]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/ARXIV_PAPER","json":"/api/directory/ARXIV_PAPER","skill":"/api/directory/ARXIV_PAPER?format=skill","oip_contract":"/api/dispatch?key=ARXIV_PAPER"}},{"key":"CAP_MINT","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: Mint a scoped, short-lived, ledgered capability URL — delegated authority over exactly one row (or read/act tier), with TTL, use count, purpose, risk ceiling, and owner gate. Returns invoke_url + explain_url + fingerprint; the URL explains itself.\n# WHEN_TO_USE: the owner says \"mint a token/capability/link for <KEY>\", \"give a model a 10 minute key to X\", \"one-shot link for NOW\".\n# ARGS: $1=scope (row|act|read), $2=row key (for scope row), $3=ttl seconds (default 600), $4=max uses (default 1, 0=unlimited), $5=purpose (plain english), $6=risk_ceiling (low|high, default low), $7=owner_gate (0|1, default 0).\n# EX: [CAP_MINT]row|NOW|600|1|demo for chatgpt[/CAP_MINT]\n[\"$1\",\"$2\",\"$3\",\"$4\",\"$5\",\"$6\",\"$7\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/CAP_MINT","json":"/api/directory/CAP_MINT","skill":"/api/directory/CAP_MINT?format=skill","oip_contract":"/api/dispatch?key=CAP_MINT"}},{"key":"GITHUB_TAIL","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: The GitHub repository as a live object. Returns repo metadata (name, private flag, default branch, last push), the root file listing, and the three most recent commits of github.com/[OWNER_HANDLE]/oip. Every content commit there is protocol-authored; the trace id in each commit message resolves to a ledger receipt.\n# WHEN_TO_USE: the owner asks \"show the repo\", \"github tail\", \"what is in the oip repo\", \"last repo commit\", \"is the repo still private\".\n# ARGS: none.\n# EX: [GITHUB_TAIL][/GITHUB_TAIL]\n[]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/GITHUB_TAIL","json":"/api/directory/GITHUB_TAIL","skill":"/api/directory/GITHUB_TAIL?format=skill","oip_contract":"/api/dispatch?key=GITHUB_TAIL"}},{"key":"OIP_RECEIPT","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: Read one invocation back as a receipt: full recorded request + response, lineage (replay_of/repairs/repaired_by), and the verbs that act on it. A receipt is a live replayable object, not history.\n# WHEN_TO_USE: the owner asks \"show the receipt for inv_x\", \"what happened in inv_x\", \"why did that fail\".\n# ARGS: $1 = invocation id (inv_…).\n# EX: [OIP_RECEIPT]inv_wvitbmiym6[/OIP_RECEIPT]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/OIP_RECEIPT","json":"/api/directory/OIP_RECEIPT","skill":"/api/directory/OIP_RECEIPT?format=skill","oip_contract":"/api/dispatch?key=OIP_RECEIPT"}},{"key":"OIP_REPAIR","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: Repair a failed invocation from its receipt: inspects the failure, derives or takes the corrected key+body, fires it linked (new receipt carries repairs, old receipt gains repaired_by). Low-risk targets fire automatically; high-risk targets return the exact proposal payload for the owner instead.\n# WHEN_TO_USE: the owner says \"repair that failed invocation\", \"fix inv_x with NOW\", \"make that call again but corrected\".\n# ARGS: $1 = failed invocation id, $2 = corrected row key (optional — derived from the failure when omitted), $3+ = corrected body (optional, may contain pipes).\n# EX: [OIP_REPAIR]inv_6ximjestte|NOW|[/OIP_REPAIR]\n[\"$1\",\"$2\",\"$3+\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/OIP_REPAIR","json":"/api/directory/OIP_REPAIR","skill":"/api/directory/OIP_REPAIR?format=skill","oip_contract":"/api/dispatch?key=OIP_REPAIR"}},{"key":"OIP_REPLAY","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: Re-fire a past invocation with its recorded input. New receipt links replay_of to the old one.\n# WHEN_TO_USE: the owner says \"replay that\", \"run inv_x again\", \"re-fire it as it was\".\n# ARGS: $1 = invocation id (inv_…).\n# EX: [OIP_REPLAY]inv_wvitbmiym6[/OIP_REPLAY]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/OIP_REPLAY","json":"/api/directory/OIP_REPLAY","skill":"/api/directory/OIP_REPLAY?format=skill","oip_contract":"/api/dispatch?key=OIP_REPLAY"}},{"key":"CAP_EXPLAIN","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: Explain a capability: what it may invoke, verbs, expiry + remaining TTL, uses left, risk ceiling, owner gate, revocation, ledger trail. Accepts the token itself (sh.…) or its fingerprint (cap_…). Never echoes the raw token.\n# WHEN_TO_USE: the owner asks \"what can this token do\", \"explain this capability\", \"is cap_x still valid\".\n# ARGS: $1 = capability token or cap_ fingerprint.\n# EX: [CAP_EXPLAIN]cap_1a2b3c4d5e6f7a8b[/CAP_EXPLAIN]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/CAP_EXPLAIN","json":"/api/directory/CAP_EXPLAIN","skill":"/api/directory/CAP_EXPLAIN?format=skill","oip_contract":"/api/dispatch?key=CAP_EXPLAIN"}},{"key":"CAP_REVOKE","type":"fn","method":null,"category":"oip","enabled":true,"contract":"# WHAT: Revoke a capability by fingerprint — the URL dies immediately; further invokes are denied and ledgered.\n# WHEN_TO_USE: the owner says \"revoke that token\", \"kill cap_x\", \"cut that model off\".\n# ARGS: $1 = cap_ fingerprint.\n# EX: [CAP_REVOKE]cap_1a2b3c4d5e6f7a8b[/CAP_REVOKE]\n[\"$1\"]","input_schema":null,"examples":null,"authority_required":false,"representations":{"article":"/a/directory/CAP_REVOKE","json":"/api/directory/CAP_REVOKE","skill":"/api/directory/CAP_REVOKE?format=skill","oip_contract":"/api/dispatch?key=CAP_REVOKE"}}]},"ontology":{"conformance_group":"article","inferred_from":["oip","kimi-import","self-explaining","voxel","concepts","what-is-url-is-api","objection-7","oip-edge","what","is","url","is","api"],"relationships":[],"sources":[]},"conformance":{"success_events":"/api/articles/what-is-url-is-api/invocations?status=success","failure_events":"/api/articles/what-is-url-is-api/invocations?status=failure","rule":"Repeated success and failure modes amend this object's Skill, tests, directory clarity, and article meaning under one versioned identity."},"article":{"slug":"what-is-url-is-api","title":"What Is \"The URL Is the API\"","body":"<!-- hierarchy:nav -->\n> **Path:** [OIP](https://miscsubjects.com/a/oip) › [Thinker Reference](https://miscsubjects.com/a/oip-thinker-reference) › [Protocol Concepts](https://miscsubjects.com/a/oip-protocol-concepts) › **What Is \"The URL Is the API\"**\n>\n> **Shelf:** Protocol Concepts · **Traversal:** self-explaining · hierarchical · voxel-ready\n> **Machine root:** [OIP tree](https://miscsubjects.com/api/dispatch?map=1&format=markdown) · [Registry](https://miscsubjects.com/api/dispatch?registry=1)\n\n# What Is \"The URL Is the API\"\n\n## §SELF — what-is-url-is-api\n\n**What this page is:** An explanation of why a URL can serve as its own API specification, replacing the need for separate manifests or schemas.\n**What it explains:** How a URL plus a contract at the destination can replace pre-registered tool manifests, and what changes when models discover capabilities by following links instead of reading catalogs.\n**Why read it:** To understand why removing the manifest layer between a model and a capability makes the set of available tools unbounded rather than fixed.\n\n### What \"The URL Is the API\" Is\n\n\"The URL is the API\" means: the link itself contains everything needed to invoke the capability it points to. You do not need a separate API specification. You do not need to register the tool in a manifest. You do not need to describe it in a schema. The URL is the tool definition.\n\nA URL (Uniform Resource Locator) is a web address that points to a resource. In this model, it does more than point. It carries:\n\n- A pointer to an object (the destination).\n- A contract at that destination describing what the object does, what arguments it takes, and how to use it.\n- A capability token (embedded in or alongside the URL) that proves permission to invoke.\n\nThe model opens the URL, reads the contract, invokes the object, and receives a receipt. No manifest was consulted. No schema was preloaded. The URL was sufficient.\n\n### Why It Matters\n\nMost tool-calling systems for language models use a manifest model. The model is given a list of available tools at startup — a catalog with names, descriptions, parameter types, and schemas. The model picks from this list. This is how MCP (Model Context Protocol) works.\n\nThe manifest model has three limitations:\n\n1. The set of tools is fixed at startup. The model cannot discover new tools while working.\n2. Someone must maintain the manifest. Adding a tool requires updating the catalog.\n3. The manifest is a bottleneck. Every tool must pass through it to reach the model.\n\nThe URL-is-API model removes the manifest. Every capability on the web is potentially a tool. The model discovers capabilities by following links, not by reading a catalog.\n\nThere are billions of URLs on the web. If models can treat any URL as a potential tool, the set of available capabilities is unbounded. The model's abilities become a property of what it is pointing at, not what it was shipped with.\n\n### The Key Idea\n\nA tool does not need to be described in advance. It describes itself.\n\nWhen a model receives a URL, it visits that URL and finds a contract. The contract is a document that explains:\n\n- WHAT the object does (its purpose and effects).\n- ARGS (arguments) it accepts (inputs and their types).\n- EX (examples) of how to use it.\n- TESTS that verify the object behaves as described.\n\nThe model reads this contract and knows how to invoke the object. The contract is not a separate specification file (like an OpenAPI schema). It is part of the object itself, served at the URL.\n\nThe URL also carries a capability token. This token proves the model has permission to invoke the object. Without the token, the URL resolves to the contract but invocation is denied. With the token, the model can both read and invoke.\n\nAfter invocation, the model receives a receipt. The receipt is a record of what happened: what was called, with what arguments, at what time, with what result. The receipt links back to the ledger (the permanent record of all invocations). The receipt becomes part of the model's context — a pointer it can refer to later.\n\nThis is different from MCP (Model Context Protocol). MCP requires a server to publish a manifest — a list of tools with typed schemas — before a model can use any tool on that server. The URL-is-API model has no manifest. Discovery is decentralized: any URL can be a tool, and tools are found by following links, not by reading a catalog.\n\n### What It Got Right\n\n**Unbounded capability set.** Because any URL can be a tool, there is no limit to what a model can invoke. The set of capabilities grows with the web, not with a vendor's tool catalog.\n\n**Self-describing tools.** The contract at the URL explains the tool in the model's own terms (natural language plus structured args). No translation layer between schema formats.\n\n**No manifest maintenance.** Tool creators do not need to register their tools in a central catalog. They publish a URL with a contract. Models discover it by following links.\n\n**Decentralized discovery.** Links are the discovery mechanism. A tool can link to other tools. A model follows these links to build a capability graph. There is no single point of control.\n\n**Permission is part of the address.** The capability token in the URL means permission is encoded in the link itself. Sharing a URL can share both location and access.\n\n### What It Got Wrong or Left Unfinished\n\n**Contract format is unspecified.** There is no universal standard for what a contract contains or how it is formatted. Different implementations may use different structures, limiting interoperability.\n\n**Security is complex.** A model that can invoke any URL it encounters is vulnerable to malicious contracts. The model must verify contracts before trusting them. The capability token system must prevent token theft and replay attacks (reusing an old token to gain unauthorized access).\n\n**Latency of discovery.** Visiting a URL, reading a contract, and deciding whether to invoke takes time. A manifest model has all descriptions preloaded; the URL model must fetch each one.\n\n**No standard for capability tokens.** How tokens are encoded, validated, and refreshed is implementation-dependent. Without standards, different systems cannot share permissions.\n\n**Quality varies.** A manifest model can curate tools — only high-quality tools are included. The URL model has no curation. Any URL can be a tool, including poorly designed or malicious ones. The model must evaluate quality itself.\n\n### How It Connects to Other Ideas\n\n**Hypermedia as the Engine of Application State (HATEOAS):** This is a REST (Representational State Transfer) architecture principle where a client navigates an API by following links in responses, not by consulting a separate specification. \"The URL is the API\" extends HATEOAS to language models: the model is the client, and it navigates capabilities by following URLs.\n\n**Capability-Based Security:** In computer security, a capability is an unforgeable token that grants access to a resource. The URL-with-capability-token model is a form of capability-based security: possessing the URL (with its token) is proof of permission.\n\n**The Semantic Web:** Tim Berners-Lee's vision of a web where data is machine-readable and linked. \"The URL is the API\" applies a similar idea to tools: objects on the web describe themselves in a format models can read and invoke.\n\n### Sources\n\nFielding, Roy Thomas. \"Architectural Styles and the Design of Network-based Software Architectures.\" PhD dissertation, University of California, Irvine, 2000. (Defines REST and HATEOAS.)\n\nBerners-Lee, Tim, James Hendler, and Ora Lassila. \"The Semantic Web.\" Scientific American, 2001.\n\nDennis, Jack B., and Earl C. Van Horn. \"Programming Semantics for Multiprogrammed Computations.\" Communications of the ACM, 1966. (Early work on capability-based security.)\n\nModel Context Protocol Specification. Anthropic, 2024. (Defines the manifest-based tool model that URL-is-API replaces.)\n\n---\n\n## Up the tree\n\n- [OIP root](https://miscsubjects.com/a/oip) — protocol root, zero-context entry\n- [Thinker Reference hub](https://miscsubjects.com/a/oip-thinker-reference) — full hierarchy map\n- [Protocol Concepts shelf](https://miscsubjects.com/a/oip-protocol-concepts) — siblings on this shelf\n- [Voxel graph article](https://miscsubjects.com/a/what-is-voxel-graph) — how pages link as voxels\n- [Self-describing protocol](https://miscsubjects.com/a/what-is-self-describing-protocol)\n\n## Related on this shelf\n\n- [What Is Autopoiesis](https://miscsubjects.com/a/what-is-autopoiesis)\n- [What Is Capability-Based Security](https://miscsubjects.com/a/what-is-capability-security)\n- [What Is a Capability Token](https://miscsubjects.com/a/what-is-capability-token)\n- [What Is a Confused Deputy](https://miscsubjects.com/a/what-is-confused-deputy)\n- [What Is Context as Cursor](https://miscsubjects.com/a/what-is-context-as-cursor)\n- [What Is a Convergence Catalogue](https://miscsubjects.com/a/what-is-convergence-catalogue)\n- [What Is a Falsification Surface](https://miscsubjects.com/a/what-is-falsification-surface)\n- [What Is HATEOAS](https://miscsubjects.com/a/what-is-hateoas)\n\n## Machine surfaces\n\n- Public page: `https://miscsubjects.com/a/what-is-url-is-api`\n- JSON article: `https://miscsubjects.com/api/articles/what-is-url-is-api`\n- OIP ask: `https://miscsubjects.com/api/dispatch?ask=What%20Is%20%22The%20URL%20Is%20the%20API%22`\n\n\n---\n\n## Where OIP does this differently (required edge)\n\nOIP difference: GET invoke with share token is first-class; safety is scope+ledger+dedup, not verb purity.\n","hero":null,"images":[],"style":{},"tags":["oip","kimi-import","self-explaining","voxel","concepts","what-is-url-is-api","objection-7","oip-edge"],"category":null,"model":"kimi-agent-import","ledger":{"href":"/api/articles/what-is-url-is-api/ledger","live":true},"embeds":[],"widgets":[{"type":"note","title":"Zero-context","text":"This page is self-explaining: §SELF states what it is, what it explains, and why to read it."},{"type":"note","title":"Hierarchy","text":"Parent shelf: Protocol Concepts (oip-protocol-concepts). Hub: oip-thinker-reference. Root: /a/oip."},{"type":"note","title":"Voxel","text":"Each article is a node. Links Up the tree + Related form the traversable graph."},{"type":"stat","value":20,"label":"Protocol Concepts on shelf"},{"type":"note","title":"OIP edge","text":"OIP difference: GET invoke with share token is first-class; safety is scope+ledger+dedup, not verb purity."}],"home":true,"claims":[],"sources":[],"reviews":[],"extra":{},"has_traversal":false,"register":"standard","status":"published","revisions":1,"contributions":[],"provenance":[{"ts":"2026-07-15T04:21:06.867Z","model":"kimi-agent-import","action":"write","prompt":"","input":"","response":"","tokens_in":0,"tokens_out":0,"cost":0,"prev":"genesis","hash":"2788b3adfde2636d7d7d1cd0b854ac6d7678821dfe8a9d216049d0270fdbad96"},{"ts":"2026-07-15T06:24:54.568Z","model":"grok-build","action":"objection-patch","prompt":"","input":"","response":"","tokens_in":0,"tokens_out":0,"cost":0,"prev":"2788b3adfde2636d7d7d1cd0b854ac6d7678821dfe8a9d216049d0270fdbad96","hash":"8118dc5f1e73340a8332cf9ee704aad27d459d956be3c7bd2e7b2a9d5690dc98"},{"ts":"2026-07-17T02:43:40.689Z","model":"owner","action":"voxel_divide","prompt":"","input":"what-is-url-is-api","response":"55 DIVs from body (verbatim, roundtrip-checked)","tokens_in":0,"tokens_out":0,"cost":0,"prev":"8118dc5f1e73340a8332cf9ee704aad27d459d956be3c7bd2e7b2a9d5690dc98","hash":"72294406fcfc0b99706ee11e39df2447ed3461163add67cc919a05c44d3116f9"}],"energy":{"passes":3,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{"kimi-agent-import":1,"grok-build":1,"owner":1},"head":"72294406fcfc0b99706ee11e39df2447ed3461163add67cc919a05c44d3116f9"},"posted_at":"2026-07-15T04:21:06.867Z","created_at":"2026-07-15T04:21:06.867Z","updated_at":"2026-07-17T02:43:40.689Z","machine":{"shape":"article.machine/v1","slug":"what-is-url-is-api","kind":"article","read":{"human":"https://miscsubjects.com/a/what-is-url-is-api","json":"https://miscsubjects.com/api/articles/what-is-url-is-api","bundle":"https://miscsubjects.com/api/articles/what-is-url-is-api/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":0,"sources":0,"contributions":0,"revisions":1,"objections_url":"https://miscsubjects.com/api/articles/what-is-url-is-api/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=what-is-url-is-api","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"what-is-url-is-api\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"what-is-url-is-api\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/what-is-url-is-api/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"what-is-url-is-api\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/what-is-url-is-api | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/what-is-url-is-api","json":"/api/articles/what-is-url-is-api","markdown":"/api/articles/what-is-url-is-api/bundle?format=markdown","skill":"/api/articles/what-is-url-is-api/skill","topology":"/api/articles/what-is-url-is-api/topology","versions":"/api/articles/what-is-url-is-api/revisions","invocations":"/api/articles/what-is-url-is-api/invocations"},"editorial_review":null,"editorial_audit":{"slug":"what-is-url-is-api","ok":false,"issues":[{"code":"heading_filing_label","message":"section heading “Why It Matters” is a filing label that gives a cold reader no claim","replacement":"Replace “Why It Matters” with the concrete claim, event, or object introduced in that section."},{"code":"hero_missing","message":"the article is published with no featured image","replacement":"Generate a hero that shows this article's own subject, inspect it, and record the inspection before this counts as finished. An article with no image is not finished."}]},"body_hash":"843b5bf0975bbb77483489f37d3b634c8c28517aa57c702f74afa8c56dfa6906"}}}