{"slug":"oip-object-model","title":"OIP Object Model","body":"## What an OIP Object Is\n\nAn OIP (Object Invocation Protocol) object is one thing the miscsubjects.com build can read or do. Think of it as a row in a directory. Directory rows are the objects. A content article is an object. A prompt row is an object. A shell command row is an object. A deploy row is an object. A receipt is an object.\n\n## OIP and MCP\n\nOIP (Object Invocation Protocol) helps systems talk to each other. It lets you use simple web links to make things happen. This is like \"Tap & Go\". You just use a link and it works. OIP differs from MCP (Model Context Protocol).\n\nMCP is an open standard. An AI model connects to an MCP server over a session. A server is a computer program that provides services to other programs. The MCP server exposes tools, resources, and prompts. The model can call these. MCP is not a content-management system.\n\nOIP uses plain URLs (Uniform Resource Locators). A URL is a web address. OIP has no persistent session. Any model that can open a URL can act. OIP uses receipts to confirm actions. MCP provides a structured environment for AI actions. It allows models to access specific tools through a persistent connection.\n\n## What Every Object Must Explain\n\nEvery OIP object needs a clear contract. This contract explains what the object is. It tells you when to use it. It shows what input it accepts. It explains how to run it. It describes what output proves it worked. It also tells you where to look when it fails.\n\n## Human and Machine Views\n\nAn OIP object has two main views. The human view is an article. It explains the object in simple words. The machine view is a document. It gives the exact invocation shape. This includes the URL to call it. For example, a machine document might list `/api/dispatch` as the endpoint. An endpoint is a specific web address for a server to receive requests. A JSON (JavaScript Object Notation) bundle gives a model this same map. JSON is a way to store and exchange data. It uses structured data. This structured data can include a URL for comparing OIP to MCP, such as `/a/oip-vs-mcp`.\n\n## How to Use an OIP Object\n\nYou invoke an OIP object. To invoke means to call or activate it. You can use a `POST` request to `/api/dispatch`. A `POST` request sends data to a server. You send a `key` and a `body` in this request. Or, you can use a `GET` request to `/api/dispatch`. A `GET` request asks for data from a server. For `GET`, you add `invoke=KEY` and `body=...` to the URL.\n\n## The Ledger and Receipts\n\nEvery time an OIP object is invoked, the action is recorded. This record goes into an append-only ledger. An append-only ledger is a list of records that only grows. New records are added to the end. You cannot change old records. After an invocation, you get a receipt. A receipt is proof that your action happened. You can find your receipt at `/api/dispatch?receipt=inv_ID`. `inv_ID` is the unique identifier for your invocation.\n## Latest clarity reviews (live)\n\nFresh models are sent this article's bundle and asked two separate questions: how clear is the machine JSON, and how clear is the English body. Scores are 0 to 10. The full history is in the append-only ledger.\n\n- 2026-07-03 00:41 · model `@cf/meta/llama-3.3-70b-instruct-fp8-fast` · NEEDS WORK · JSON 9/10 · English 8/10 · zero-context human 7/10\n  - gaps named: MCP; Tap & Go; directory rows; ledger\n- 2026-07-02 23:17 · model `@cf/meta/llama-3.3-70b-instruct-fp8-fast` · NEEDS WORK · JSON 9/10 · English 8/10 · zero-context human 7/10\n  - gaps named: MCP; Tap & Go; directory rows; ledger\n\nHow the loop self-corrects: a failing review queues a model revision of this article (a new append-only version). A missing concept named by a reviewer queues a brand-new machine-written article, which then enters the same review cycle.","hero":null,"images":[],"style":{"accent":"#16324f","measure":860},"tags":["oip","object-invocation-protocol","protocol-specification","machine-native-json","primer"],"model":null,"ledger":null,"embeds":[],"widgets":[{"type":"stat","value":1,"label":"revision"},{"type":"note","title":"Zero-context rule","text":"A reader should understand the protocol unit, object contract, invocation route, receipt schema, and repair path from this page plus its machine bundle."},{"type":"note","title":"Machine-native rule","text":"The JSON is the executable map: object, routes, inputs, proof loop, ledger, and next article to open."}],"home":false,"claims":[{"id":"oip-c1","tier":"system","text":"The OIP article layer is generated from live directory rows, so it documents the objects that actually run the reference implementation.","who_claims":"system/oip_articles","source_ids":["oip-s3","oip-s4"]},{"id":"oip-c2","tier":"system","text":"The OIP operating path is caller to directory object to dispatch runner to invocation ledger to receipt.","who_claims":"system/oip_articles","source_ids":["oip-s1"]},{"id":"oip-c3","tier":"system","text":"Every executable capability in the reference implementation is reachable as an OIP object with a human article, a machine document, invocation history, and receipt path.","who_claims":"system/oip_articles","source_ids":["oip-s2","oip-s3"]},{"id":"oip-c4","tier":"system","text":"Tap & Go is the copy primitive: one drop carries credential, protocol, tree, search, execute, and receipt instructions without a separate token-map-bundle assembly step.","who_claims":"system/oip_articles","source_ids":["oip-s2"]},{"id":"oip-c5","tier":"system","text":"OIP receipts are the proof object for actions: they record request, response, actor, links, replay, repair, and lineage.","who_claims":"system/oip_articles","source_ids":["oip-s2","oip-s5"]}],"sources":[{"id":"oip-s1","type":"protocol","title":"BUILD_SPEC object invocation path","url":"https://miscsubjects.com/api/file/docs/BUILD_SPEC.md","summary":"Defines directory rows, dispatch, ledger, and the escalation path for changing the build.","quote":"Run anything: POST https://miscsubjects.com/api/dispatch {key, body}","claim_ids":["oip-c2"],"link_status":"ok","hash":"oipbuildspec0001"},{"id":"oip-s2","type":"protocol","title":"Object Invocation Protocol spec","url":"https://miscsubjects.com/api/file/docs/OIP.md","summary":"Defines OIP surfaces, invariant loop, receipt/replay/repair, and invocation envelopes.","quote":"identify, explain, invoke, ledger, yield","claim_ids":["oip-c3","oip-c4","oip-c5"],"link_status":"ok","hash":"oipspec00000002"},{"id":"oip-s3","type":"protocol","title":"Live OIP capability tree","url":"https://miscsubjects.com/api/dispatch?map=1&format=markdown","summary":"Public recursive capability tree.","quote":"root > shelf > system article > capability article > receipt","claim_ids":["oip-c1","oip-c3"],"link_status":"ok","hash":"oipmap0000000002"},{"id":"oip-s4","type":"protocol","title":"Directory row documentation","url":"https://miscsubjects.com/api/dispatch?key=OIP_TREE&format=markdown","summary":"Capability articles are generated from live rows.","quote":"Machine Contract","claim_ids":["oip-c1"],"link_status":"ok","hash":"oiprow0000000003"},{"id":"oip-s5","type":"protocol","title":"Invocation ledger","url":"https://miscsubjects.com/api/invocations","summary":"Append-only invocation records and receipt links.","quote":"invocations","claim_ids":["oip-c5"],"link_status":"ok","hash":"oipinvocations0005"}],"reviews":[],"extra":{"oip_virtual":true,"oip_type":"primer","count":1,"metric":"revision","primer":"oip-object-model","version":1,"author_model":"gemini/gemini-2.5-flash","revision_source":"revision"},"register":"oip_protocol","status":"published","revisions":0,"contributions":[],"provenance":[{"action":"generate","model":"system/oip_articles","ts":"2026-07-03T00:21:19-07:00","hash":"virtual-oip","tokens_in":0,"tokens_out":0}],"energy":{"passes":1,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{"system/oip_articles":1},"head":"virtual-oip"},"posted_at":"2026-07-02T00:00:00.000Z","created_at":"2026-07-02T00:00:00.000Z","updated_at":"2026-07-03T00:21:19-07:00"}