Object Invocation Protocol · protocol specification

What a model sees: MCP GitHub vs the OIP directory

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

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

§SELF — protocol specification
## §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-mcp-github
**Machine bundle:** https://miscsubjects.com/api/articles/oip-mcp-github/bundle?format=markdown
**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.

The question this answers

When a model connects to the official GitHub MCP (Model Context Protocol) server, what does it actually see on the wire? And what does the same job look like through OIP? Real payloads, side by side.

MCP GitHub: the wire exchange

MCP runs JSON-RPC 2.0 over a session (stdio or HTTP). The model first performs a handshake:

json
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
  "protocolVersion":"2025-03-26",
  "capabilities":{},
  "clientInfo":{"name":"claude","version":"1.0"}}}

Then it asks what tools exist:

json
{"jsonrpc":"2.0","id":2,"method":"tools/list"}

The server answers with tool descriptors like:

json
{"name":"create_issue",
 "description":"Create a new issue in a GitHub repository",
 "inputSchema":{"type":"object","properties":{
   "owner":{"type":"string"},"repo":{"type":"string"},
   "title":{"type":"string"},"body":{"type":"string"}},
   "required":["owner","repo","title"]}}

To act, the model sends:

json
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{
  "name":"create_issue",
  "arguments":{"owner":"massoumicyrus","repo":"miscsubjects-pages","title":"Bug","body":"Details"}}}

And gets back content blocks: {"result":{"content":[{"type":"text","text":"Created issue #46..."}]}}.

The same job through OIP

No handshake and no session. The directory row IS the tool descriptor, readable by URL:

code
curl 'https://miscsubjects.com/api/dispatch?key=GITHUB_CREATE_ISSUE&format=markdown'

The invocation is one call:

code
curl 'https://miscsubjects.com/api/dispatch?invoke=GITHUB_CREATE_ISSUE&body=miscsubjects-pages|Bug|Details&share=<TOKEN>'

The response carries what MCP does not have: invocation.invocation_id, a receipt URL with the full request and response preserved forever, proof.ok computed from the real result, and replay/repair links.

The honest comparison

Same in both: a catalog of tools with input schemas; the model picks one and calls it with arguments.

Different: MCP needs a session and a client that speaks JSON-RPC — so only MCP-capable hosts can use it. OIP needs the ability to open a URL — so ANY model with web access can use it, including ones that cannot POST. MCP calls are not receipted or replayable by the protocol itself; every OIP call lands in an append-only ledger with a receipt, replay, and repair lineage. MCP tool lists live inside one server; the OIP directory is one catalog across every runner — shell, HTTP, models, agents, devices.

See both catalogs live

The build's GitHub objects: OIP system: GITHUB. The full tree: curl 'https://miscsubjects.com/api/dispatch?map=1&format=markdown'.

Latest clarity reviews (live)

Fresh 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.

  • 2026-07-03 02:20 · model gemini/gemini-2.5-flash · NEEDS WORK · JSON 9/10 · English 8/10 · zero-context human 7/10

- gaps named: token boundary; receipt loop

  • 2026-07-03 02:19 · model @cf/meta/llama-3.3-70b-instruct-fp8-fast · NEEDS WORK · JSON 9/10 · English 8/10 · zero-context human 7/10

- gaps named: Detailed explanation of MCP; In-depth comparison of OIP and MCP

How 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.

1
OIP primer
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 What a model sees: MCP GitHub vs the OIP directory. 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-mcp-github · posted 2026-07-02 · updated 2026-07-02
Ledger API & provenance
Provenance · 1 model pass · 0 tokens · $0 · 1 model
chain head virtual-oip
generate system/oip_articles · 2026-07-02 22:58 · 0 tok · virtual-oip
verify chain →
Live ledger · 7 payloads · 5 turns
recent activity · inspect
PROTOCOL_RUN dispatch · 2026-07-03 02:20 · t_7hn4465y
PROTOCOL_RUN dispatch · 2026-07-03 02:20 · t_7hn4465y
OIP_ARTICLE_REVIEW oip-review · HTTP 200 · 2026-07-03 02:20 · t_w5uls8qp
PROTOCOL_RUN dispatch · 2026-07-03 02:19 · t_41yk3ei1
PROTOCOL_RUN dispatch · 2026-07-03 02:19 · t_41yk3ei1
OIP_ARTICLE_REVIEW oip-review · HTTP 200 · 2026-07-03 02:19 · t_uuueecaz
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…