{"_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":"oip-vs-zapier","title":"OIP Object Invocation vs. Zapier Workflow Automation","body":"# OIP Object Invocation vs. Zapier Workflow Automation\n\nOIP (Object Invocation Protocol) defines a protocol standard for invoking objects and verifying their execution. Zapier is a web automation tool that connects different web applications. OIP manages object capabilities; Zapier manages application integrations. The OIP unit is the work object; the OIP proof is the receipt. The OIP loop is object, invoke, ledger, receipt, replay, repair.\n\n## Introduction\n\nOIP (Object Invocation Protocol) specifies a mechanism for invoking work objects and verifying their execution. An OIP invocation is performed via `POST /api/dispatch {key, body}` or `GET /api/dispatch?invoke=KEY&body=...`, which appends to the ledger and returns a receipt at `/api/dispatch?receipt=inv_ID`. Zapier is a web automation tool that connects disparate web applications, enabling automated workflows. A Zapier workflow connects a trigger in one application to an action in another application. The comparison of OIP and Zapier is documented by creating an article via `POST /api/articles` with a JSON (JavaScript Object Notation) body containing comparison details, returning a receipt at `/api/dispatch?receipt=inv_ID`.\n\n## Object Invocation vs. Workflow Automation\n\nOIP defines objects that encapsulate capabilities. An OIP invocation executes a capability of an object. An object is created by `POST /api/dispatch {key, body}`, with its creation proven by a receipt at `/api/dispatch?receipt=inv_ID`. Zapier defines triggers that initiate workflows and actions that perform operations within connected applications. A Zapier trigger monitors an event in a source application; a Zapier action performs a task in a target application. OIP invocation is a direct execution request to a work object; Zapier workflow execution is a sequence of application-specific operations.\n\n## Credential Management\n\nOIP objects hold their own credentials, enabling autonomous operation. An OIP object's credential validity is verified by an invocation of the object via `GET /api/dispatch?invoke=KEY&body=...`, returning a receipt at `/api/dispatch?receipt=inv_ID`. Zapier users hold credentials for connected web applications, enabling user-delegated operation. Zapier credential management involves user authentication with each connected Application Programming Interface (API).\n\n## Proof of Execution\n\nOIP provides a ledger that records every invocation, returning a receipt as proof of execution. The ledger is a record of all invocations, accessible via `GET /api/articles` which returns articles containing invocation history. A specific OIP receipt is retrieved via `GET /api/dispatch?receipt=inv_ID`. Zapier provides a history of automated tasks, detailing workflow execution status. A Zapier task history provides logs of trigger events and action outcomes.\n\n## Comparison to MCP (Model Context Protocol)\n\nMCP (Model Context Protocol) connects a model to a server that exposes tools, resources, and prompts over a session. OIP connects objects to capabilities. MCP focuses on model interaction within a session context, managing conversational state and tool access. OIP focuses on object execution and verification, providing a verifiable record of capability invocation. The comparison of OIP and MCP is documented by creating an article via `POST /api/articles` with a JSON body containing comparison details, returning a receipt at `/api/dispatch?receipt=inv_ID`.\n\n## End-to-End Example: OIP Object Invocation\n\nThis example demonstrates the creation and invocation of an OIP object, and the retrieval of its proof.\n\n1.  **Object Creation**: An OIP object `my_task_object` is created.\n    *   **Route**: `POST /api/dispatch`\n    *   **Body**: `{\"key\": \"my_task_object\", \"body\": {\"capability\": \"process_data\", \"config\": {\"source\": \"input_queue\"}}}`\n    *   **Receipt**: A receipt `inv_ID_123` is returned at `/api/dispatch?receipt=inv_ID_123`, proving object creation.\n    *   **Conformance**: The system records the object definition in its ledger.\n\n2.  **Object Invocation**: The `my_task_object` is invoked to process data.\n    *   **Route**: `POST /api/dispatch`\n    *   **Body**: `{\"key\": \"my_task_object\", \"body\": {\"action\": \"process\", \"data\": \"sample_payload\"}}`\n    *   **Receipt**: A receipt `inv_ID_456` is returned at `/api/dispatch?receipt=inv_ID_456`, proving invocation execution.\n    *   **Conformance**: The `my_task_object` executes its `process_data` capability with `sample_payload`.\n\n3.  **Receipt Retrieval**: The invocation proof is retrieved.\n    *   **Route**: `GET /api/dispatch?receipt=inv_ID_456`\n    *   **Expected Output**: `{\"invocation_id\": \"inv_ID_456\", \"object_key\": \"my_task_object\", \"timestamp\": \"2023-10-27T10:00:00Z\", \"status\": \"completed\", \"output_hash\": \"abcdef123456\"}`\n    *   **Conformance**: The returned JSON object matches the receipt schema.\n\n4.  **Ledger Entry Verification**: The invocation is recorded in the ledger.\n    *   **Route**: `GET /api/articles`\n    *   **Expected Output**: A list of articles, including one detailing `inv_ID_456` or a reference to it.\n    *   **Conformance**: The ledger contains an entry for `inv_ID_456`, demonstrating the OIP loop's `ledger` step.\n\n## Receipt Rule\n\nAn OIP receipt proves the successful execution of an invocation. A receipt is a JSON object returned at `/api/dispatch?receipt=inv_ID`. A receipt contains `invocation_id`, `object_key`, `timestamp`, `status`, and `output_hash`. Conformant behavior involves validating the receipt's `status` and `output_hash` to confirm the integrity and outcome of the invocation. The Uniform Resource Locator (URL) `/api/dispatch?receipt=inv_ID` provides a direct reference to the proof of execution.\n\n## Conformance Rule\n\nAn OIP implementation conforms to the protocol by correctly processing `POST /api/dispatch` and `GET /api/dispatch?invoke=KEY&body=...` requests. A conformant implementation appends every invocation to a ledger accessible via `GET /api/articles`. A conformant implementation returns a valid receipt at `/api/dispatch?receipt=inv_ID` for every invocation. A conformant object executes its defined capabilities upon invocation, ensuring the integrity of the OIP loop's `object` and `invoke` steps.","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"}}