MCP Object Specification
Overview
The MCP Context Object (MCO) is a signed, structured payload that encapsulates all contextual data an LLM or agent needs to operate in a personalized, decentralized, and verifiable way.
It is the standard communication format between context providers (wallets, smart contracts, DIDs) and context consumers (LLMs, AI agents).
Full JSON Schema (Draft v0.1)
Field Descriptions
version
string
Protocol version.
subject
string
DID or Wallet address of the user.
timestamp
number
UNIX timestamp of when context was generated.
permissions
string[]
Allowed context scopes (per user consent).
context.wallet
object
Wallet-specific data, tokens, NFTs.
context.dao
object
DAO-related activity (roles, votes).
context.profile
object
Off-chain social data (ENS, Lens, Farcaster).
proof
object
Cryptographic attestation of authenticity.
Proof Strategies
EIP712Signature: Signed using the user's wallet. Standard for typed data in Ethereum.
zkProof (optional): Zero-knowledge attestation of claims (e.g. age > 18, DAO member without revealing address).
SIWE: Context can be included as a claim in a SIWE session.
Context Mutability
wallet.token_balances
✅
On-chain or external indexer
dao.recent_votes
✅
Snapshot / contract API
profile.ens
❌
On-chain, stable
permissions
✅
User-controlled
Best Practices
🧾 Always timestamp the MCO to avoid replay attacks.
🔒 MCO must be signed or ZK-proven before being passed to an LLM.
📦 Context objects can be stored IPFS-side for caching, but always verify the signature before use.
⚠️ Don’t pass sensitive data in plain text without user consent.
Example Usage
Future Extensions
Support for Verifiable Credentials (VCs) using W3C standards
Modular support for chain-agnostic context (Solana, Starknet)
Integration with decentralized context brokers (e.g. Ceramic, SpruceID)
==========
🛠️ Context API Reference
The MCP3 Context API enables clients (LLMs, agents, dApps) to request, verify, and utilize context objects securely and efficiently.
🧵 Base URL
🔄 Endpoints
GET /context
Retrieve a signed, structured MCP Context Object (MCO) for a user wallet or DID.
Query Parameters:
subject
string
✅
The wallet address or DID of the user
scopes
string[]
✅
Requested context scopes (e.g. ["read.dao", "read.tokens"]
)
format
string
❌
Output format: "json"
(default) or "eip712"
Example Request:
Example Response:
POST /verify
Verify the authenticity of an MCO using EIP-712 signature or ZK proof.
Body:
Response:
POST /sign
Request the MCP gateway to generate a signed context on behalf of a subject (via delegated key).
Body:
Response:
GET /metadata
Returns schema metadata, supported proof types, and permission scopes.
Example Response:
🔐 Authentication
All POST endpoints require API key or signed request headers.
Public GET /context requests are allowed in read-only mode for public data.
⚠️ Error Codes
400
Invalid parameters
401
Unauthorized / Missing signature
403
Scope not permitted
404
Subject not found
500
Internal MCP engine error
🚀 SDK Support
Official SDKs:
@mcp3/sdk-js
(Node.js, browser)mcp3-python
(coming soon)
REST-compatible with Postman & cURL
Example (JS):
🧩 GraphQL Preview (Optional)
If enabled:
Last updated