{"slug":"oip-vs-openapi","title":"OIP vs OpenAPI","body":"## Introduction to OIP and OpenAPI\nOIP (Object Invocation Protocol) is a protocol standard that describes invocable objects with receipts, whereas OpenAPI (formerly known as Swagger) describes callable surfaces in terms of routes and endpoints.\nThe comparison between OIP and OpenAPI can be invoked at `POST /api/dispatch` with a JSON body containing the keys `key` and `body`, where `key` is set to \"oip-vs-openapi\" and `body` contains the comparison details.\nThe receipt for this invocation can be obtained at `/api/dispatch?receipt=inv_ID`, where `inv_ID` is the invocation ID returned by the `POST /api/dispatch` request.\n\n## OIP Operating Model\nOIP operates on a model where objects are invoked and receipts are returned, as described in [/a/oip-operating-model](/a/oip-operating-model).\nThe `POST /api/dispatch` route is used to invoke objects, and the `/api/dispatch?receipt=inv_ID` route is used to retrieve receipts.\nThe ledger record for this operation lives at `/api/articles`, where the article slug is \"oip-vs-openapi\".\n\n## OpenAPI Operating Model\nOpenAPI, on the other hand, operates on a model where routes and endpoints are described using JSON or YAML files.\nThe OpenAPI specification can be used to generate client code and documentation, but it does not provide receipts for invocations.\nThe `GET /api/articles` route can be used to retrieve a list of articles, including those related to OpenAPI.\n\n## Comparison of OIP and OpenAPI\nOIP and OpenAPI both describe callable surfaces, but they differ in their approach.\nOIP describes invocable objects with receipts, whereas OpenAPI describes routes and endpoints.\nThe `POST /api/dispatch` route can be used to invoke an object that compares OIP and OpenAPI, and the receipt can be obtained at `/api/dispatch?receipt=inv_ID`.\nThe MCP (Model Context Protocol) standard is relevant to this comparison, as it provides a model for connecting to a server that exposes tools, resources, and prompts over a session.\nThe OIP protocol standard and the MCP standard can be compared side by side, with OIP describing invocable objects with receipts and MCP describing a model for connecting to a server.\n\n## Conclusion\nIn conclusion, OIP and OpenAPI are two different approaches to describing callable surfaces.\nOIP describes invocable objects with receipts, whereas OpenAPI describes routes and endpoints.\nThe `POST /api/dispatch` route can be used to invoke an object that compares OIP and OpenAPI, and the receipt can be obtained at `/api/dispatch?receipt=inv_ID`.\nThe MCP standard is relevant to this comparison, and the OIP protocol standard and the MCP standard can be compared side by side.","register":"oip_protocol","tags":["oip","object-invocation-protocol","protocol-specification","machine-native-json","dynamic"],"style":{"accent":"#16324f","measure":860},"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"}],"prov":{"model":"system/oip_articles","action":"generate"}}