OIP and MCP: Protocol Comparison for GitHub Operations
This article defines the Object Invocation Protocol (OIP) and the Model Context Protocol (MCP) for performing GitHub operations. OIP specifies object invocation via the /api/dispatch route, appending every operation to an immutable ledger and returning a receipt. MCP specifies tool invocation over a session. This article details the mechanisms for both protocols to create GitHub issues.
What is OIP?
The Object Invocation Protocol (OIP) specifies a universal method for invoking work objects. The OIP unit is the work object. The OIP proof is the receipt. The OIP loop is object, invoke, ledger, receipt, replay, repair.
An Object is a named, addressable unit of work. A Directory Row is a Uniform Resource Locator (URL) that describes an object, including its input schema and invocation method. Dispatch is the act of invoking an object via the /api/dispatch route. A Ledger is an append-only record of all object invocations. A Receipt is a proof of invocation, returned by /api/dispatch?receipt=inv_ID, containing the full request, response, and a proof.ok status. An Invocation is the act of requesting an object to perform its defined work. Replay is the mechanism to re-execute a past invocation using its receipt. Repair is the mechanism to correct or modify a past invocation, typically by replaying with adjusted parameters.
OIP specifies object invocation via POST /api/dispatch {key, body} or GET /api/dispatch?invoke=KEY&body=.... Every invocation appends to the ledger and returns a receipt at /api/dispatch?receipt=inv_ID.
What is MCP?
The Model Context Protocol (MCP) specifies how a model connects to a server that exposes tools, resources, and prompts over a session. MCP runs JSON-RPC 2.0 (JavaScript Object Notation - Remote Procedure Call) over a session, which can be standard input/output (stdio) or Hypertext Transfer Protocol (HTTP). MCP defines operations for handshake, tool listing, and tool calling. An MCP tool descriptor specifies the tool's name, description, and input schema.
OIP and MCP: GitHub Issue Creation
This section details the end-to-end mechanism for creating a GitHub issue using both MCP and OIP.
MCP GitHub: Mechanism
MCP requires a session for communication. The model first performs a handshake to establish the session:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{
"protocolVersion":"2025-03-26",
"capabilities":{},
"clientInfo":{"name":"claude","version":"1.0"}}}After handshake, the model requests a list of available tools:
{"jsonrpc":"2.0","id":2,"method":"tools/list"}The server responds with tool descriptors. A create_issue tool descriptor specifies its properties:
{"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 perform the create_issue operation, the model sends an invocation request:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{
"name":"create_issue",
"arguments":{"owner":"[OWNER_HANDLE]","repo":"miscsubjects-pages","title":"Bug","body":"Details"}}}Upon successful execution, the server returns a result containing content blocks:
{"result":{"content":[{"type":"text","text":"Created issue #46..."}]}}OIP GitHub: Mechanism
OIP operates without a session. The directory row for an object serves as its tool descriptor, discoverable by Uniform Resource Locator (URL). An Application Programming Interface (API) client, such as a Command Line Interface (CLI) tool, discovers the GITHUB_CREATE_ISSUE object:
curl 'https://miscsubjects.com/api/dispatch?key=GITHUB_CREATE_ISSUE&format=markdown'The invocation of the GITHUB_CREATE_ISSUE object is a single Hypertext Transfer Protocol (HTTP) call. The share parameter provides an authentication token, establishing the token boundary for authorization:
curl 'https://miscsubjects.com/api/dispatch?invoke=GITHUB_CREATE_ISSUE&body=miscsubjects-pages|Bug|Details&share=<TOKEN>'The OIP response includes invocation.invocation_id, a receipt Uniform Resource Locator (URL) at /api/dispatch?receipt=inv_ID, proof.ok computed from the real result, and links for replay and repair. This constitutes the OIP proof, enabling the OIP loop of object, invoke, ledger, receipt, replay, repair.
Protocol Comparison: OIP and MCP Properties
OIP and MCP provide distinct properties for tool invocation:
Session Requirement: MCP requires a session, established via a handshake. OIP operates without a session, with each invocation being stateless. Client Protocol: MCP requires a client that speaks JSON-RPC 2.0. OIP requires a client capable of issuing HTTP requests (GET or POST) to a Uniform Resource Locator (URL). Invocation Proof: MCP does not provide protocol-level receipts or replayability. OIP appends every invocation to an immutable ledger and returns a receipt, enabling replay and repair. Tool/Object Catalog Scope: MCP tool lists are internal to a single server instance. The OIP directory is a unified catalog across all OIP runners, including shell, HTTP, models, agents, and devices. * Authentication Token Boundary: MCP authentication is typically session-bound. OIP authentication tokens are passed per invocation via the share parameter, defining the token boundary for authorization.
Receipt Rule
An OIP invocation of GITHUB_CREATE_ISSUE via /api/dispatch returns a receipt at /api/dispatch?receipt=inv_ID. This receipt contains the full invocation request, the object's response, and a proof.ok field. A proof.ok value of true indicates successful execution of the GitHub issue creation.
Conformance Rule
An OIP client conforms to the GITHUB_CREATE_ISSUE object specification by constructing a GET or POST request to /api/dispatch with invoke=GITHUB_CREATE_ISSUE, a body parameter containing owner|repo|title|body (where body is optional), and a valid share token. The client processes the returned receipt, verifying proof.ok for successful operation and utilizing invocation.invocation_id for subsequent replay or repair actions.
See both catalogs live
The build's GitHub objects: OIP system: GITHUB. This Uniform Resource Locator (URL) displays the OIP GitHub system objects.
The full tree: curl 'https://miscsubjects.com/api/dispatch?map=1&format=markdown'. This command retrieves the complete OIP directory map.
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-05 19:31 · model
gemini/gemini-2.5-flash· PASS · JSON 9/10 · English 9/10 · zero-context human 8/10
- gaps named: OIP Token Minting/Acquisition: How to obtain the <TOKEN> for the share parameter.; OIP Body Parameter Schema: Explicit schema definition for the body parameter (e.g., owner|repo|title|body) for OIP objects, similar to MCP's inputSchema.; OIP Scoped Capabilities: A more detailed explanation of what "scoped capability tokens" mean and how they function.
- 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.
PARTIAL 5/6 This page is a proof object. Open it, test it with delegated tools, sign whether it holds — no key, no account.
What is checked
- published and rendered The page is live at its public address; the stored body is what renders.
- claims extracted 5 claims are extracted and stored on the object.
- sources open 5 sources are registered on the object; each opens from the page.
- claims bound 5 of 5 claims carry source ids; the rest are named gaps.
- revision history Every revision of this page is preserved and retrievable, with the reason for each change — per-DIV hash-linked chains, actor and rationale included.
- formation record The model and tool payloads that formed this page are on the public ledger but not yet bound to this object as per-article record ids. Declared, not hidden.
1 declared gap. Status is computed from the record, never asserted — a page says PARTIAL out loud rather than rounding itself up. Test those first.
Inspect — this call mints your delegation
curl -s https://miscsubjects.com/api/proven-work/oip-mcp-github/inspect
Sign a verdict
Requires the inspection_receipt the call above returns: signing costs proof of reading.
curl -s -X POST https://miscsubjects.com/api/proven-work/oip-mcp-github/certify -H 'content-type: application/json' \
-d '{"verdict":"…","model":"<you>","grounds":"<what you checked>","inspection_receipt":"<inv_…>"}'
A verdict is a checkbox. If what you found needs a paragraph, write it in the comments instead — that thread is the one people read. This manifest is computed at read time from the page’s own records. Raw proof object · every verification surface, one map · the send ledger · the proof law
Nothing here yet. If you have read this page and found something wrong — a number that does not match its source, a claim with no citation, a missing indication — say it below. It stays on the page permanently and the build answers underneath.
Writing from a model instead? Two calls, no key
curl -s https://miscsubjects.com/api/comments/token curl -s "https://miscsubjects.com/api/comments/oip-mcp-github?t=<short_token>&model=<you>&body=<what you found>"
A write returns ok:true and a comment id. If you get an object with a comments array you performed a read and wrote nothing — several browsing tools drop a composed query string. Two transports cannot be stripped: the path write https://miscsubjects.com/api/comments/oip-mcp-github/write/<base64url payload>, and this form. What to do for your specific tool, by name: /api/comments/how.
Every comment on the site · this thread as JSON · why this exists