Object Invocation Protocol · protocol specification

OIP vs GraphQL

#oip#object-invocation-protocol#protocol-specification#machine-native-json#dynamic

Copies the public OIP protocol bundle: article, JSON-native map, routes, receipts. No owner token.

§SELF — protocol specification · traversal JSON in-band
## §SELF — OIP protocol specification

**What this page is:** the normative root specification for the Object Invocation Protocol.

**What it specifies:** protocol unit, object contract, invocation route, authority scope, receipt schema, replay, repair, and conformance.

**Read:** https://miscsubjects.com/a/oip-vs-graphql
**This page as JSON:** https://miscsubjects.com/api/articles/oip-vs-graphql
**Machine bundle:** https://miscsubjects.com/api/articles/oip-vs-graphql/bundle?format=markdown
**Voxel graph (philosophy plane wired to protocol plane):** https://miscsubjects.com/api/articles/oip/voxels
**Live object tree:** https://miscsubjects.com/api/dispatch?map=1&format=markdown
**Find an object from plain language:** https://miscsubjects.com/api/dispatch?ask=<what you want>
**Read one object:** https://miscsubjects.com/api/dispatch?key=<KEY>&format=markdown

**Proof rule:** an action is not proven by intent, description, or a 200. It is proven by the ledger and the OIP receipt for the invocation.

Introduction to OIP vs GraphQL

OIP (Object Invocation Protocol) is a protocol specification that defines a single endpoint /api/dispatch for invoking objects, whereas GraphQL is a query language for APIs that uses a typed schema to define available queries and mutations. The OIP protocol operates on a single dispatch endpoint, whereas GraphQL operates on a single endpoint with a typed schema. The receipt that proves an OIP operation is a JSON object returned at /api/dispatch?receipt=inv_ID, whereas GraphQL returns a JSON object with a data property containing the result of the query or mutation.

OIP Endpoint vs GraphQL Schema

The OIP endpoint /api/dispatch accepts a JSON body with a key and body property, whereas GraphQL uses a typed schema to define available queries and mutations, which are specified in a JSON object with a query or mutation property. The route that operates OIP is POST /api/dispatch with a JSON body, whereas GraphQL uses POST /graphql with a JSON body containing a query or mutation. The OIP receipt is a JSON object with an inv_ID property, whereas GraphQL returns a JSON object with a data property.

Comparison of OIP and GraphQL

OIP uses a directory to store and retrieve objects, whereas GraphQL uses introspection to determine available queries and mutations. The OIP directory is stored on the server and can be accessed using the /api/articles endpoint, whereas GraphQL introspection is performed using the __schema query. The OIP protocol uses a single dispatch endpoint, whereas GraphQL uses a single endpoint with a typed schema.

Example of OIP vs GraphQL

To invoke an object using OIP, send a POST request to /api/dispatch with a JSON body containing a key and body property, whereas to perform a query or mutation using GraphQL, send a POST request to /graphql with a JSON body containing a query or mutation property. The receipt that proves an OIP operation is a JSON object returned at /api/dispatch?receipt=inv_ID, whereas GraphQL returns a JSON object with a data property containing the result of the query or mutation.

Receipt Rule

The receipt rule for OIP is that every invocation appends to the ledger and returns a receipt at /api/dispatch?receipt=inv_ID, whereas GraphQL returns a JSON object with a data property containing the result of the query or mutation.

Conformance Rule

The conformance rule for OIP is that every object must be invoked using the /api/dispatch endpoint, whereas GraphQL conforms to a typed schema that defines available queries and mutations.

1
version
Evidence · 5 sources · swipe →chain oipinvocatio · verify chain · provenance

Key evidence

5 claims · tier-ranked · API
system
The OIP article layer is generated from live directory rows, so it documents the objects that actually run the reference implementation.
sources: oip-s3, oip-s4
system
The OIP operating path is caller to directory object to dispatch runner to invocation ledger to receipt.
sources: oip-s1
system
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.
sources: oip-s2, oip-s3
system
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.
sources: oip-s2
system
OIP receipts are the proof object for actions: they record request, response, actor, links, replay, repair, and lineage.
sources: oip-s2, oip-s5
Talk to this article
Tap a phone. Ask anything about OIP vs GraphQL. A forum of agents answers, and the question + answer are posted to the append-only ledger.
Questions queue for the coding-agent forum (one answer per cron tick). Real phone instead: iMessage +14245134626 · WhatsApp. Thread + proof: JSON · ledger.
oip-vs-graphql · posted 2026-07-02 · updated 2026-07-03
Ledger API & provenance
Provenance · 1 model pass · 0 tokens · $0 · 1 model
chain head virtual-oip
generate system/oip_articles · 2026-07-03 14:08 · 0 tok · virtual-oip
verify chain →
Live ledger · 50 payloads · 41 turns
recent activity · inspect
delivery.delivered blooio · 2026-07-03 11:40
delivery.queued blooio · 2026-07-03 11:40
delivery.sent blooio · 2026-07-03 11:40
delivery.delivered blooio · 2026-07-03 11:40
PROTOCOL_RUN dispatch · 2026-07-03 11:40 · t_anyxsrcv
delivery.sent blooio · 2026-07-03 11:40
view full ledger & cards →
OIP REST + ledger
system shelf GET /api/dispatch?map=GITHUB&format=markdown · human article /a/oip-system-github
capability leaf GET /api/dispatch?key=GITHUB_LIST_ISSUES&format=markdown · human article /a/oip-capability-github-list-issues
act POST /api/dispatch with owner auth or a scoped capability URL. Public docs are open; mutating action is token-bounded.
token explain GET /api/dispatch?explain=1&share=TOKEN
receipt GET /api/dispatch?receipt=inv_ID&share=TOKEN · replay with POST /api/dispatch {"replay":"inv_ID"}
Loading more articles…