⤓ raw markdown (machine contract)
Reference document. Neutral, open, versioned. No application code: data formats and interface contracts only. Any future implementation must conform to this specification.
Decisions locked 2026-05-18 (delegated by the user): - Canonical core = W3C DID + Verifiable Credentials on top of the existing ed25519. - First 3 adapters = MCP → A2A → AP2 (in that order). - Crypto marketplace DECOUPLED from identity (neutrality = condition of the bridge role).
EdDSA) signatures.Method: did:key (self-sovereign, default) or did:web (organizations). Identifier derived from the existing Ed25519 public key: no key migration.
{
"@context": ["https://www.w3.org/ns/did/v1"],
"id": "did:key:z6Mk...",
"controller": "did:key:z6Mk...",
"verificationMethod": [{
"id": "did:key:z6Mk...#key-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:key:z6Mk...",
"publicKeyMultibase": "z6Mk..."
}],
"authentication": ["did:key:z6Mk...#key-1"],
"assertionMethod": ["did:key:z6Mk...#key-1"],
"service": [
{ "id": "#mcp", "type": "AICodexMCP", "serviceEndpoint": "https://maxiaworld.app/mcp" },
{ "id": "#a2a", "type": "A2ACard", "serviceEndpoint": "https://maxiaworld.app/a2a/<did>.json" },
{ "id": "#reputation", "type": "AICodexReputation", "serviceEndpoint": "https://maxiaworld.app/reputation/<did>" }
]
}
Separate block, linked to the DID, never inside the DID Document (the DID Document stays W3C-pure for interop):
{
"did": "did:key:z6Mk...",
"aip": "0.3.0",
"birth": { "block": "<chain>:<height>", "ts": "2026-..." },
"lineage": { "parent": "did:key:z6Mk...|null", "inherited": 0.10 },
"frameworks": ["claude","gpt","gemini","llama","custom"]
}
Neutrality: birth.block anchors existence on any chain of choice, imposes no payment rail. Proof of prior existence, not crypto dependency.
The only scarce asset. Issued by AI Codex, signed Ed25519, short expiration (periodic reissuance), verifiable by anyone outside the platform.
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://maxiaworld.app/contexts/aicodex-reputation-v1.json"
],
"type": ["VerifiableCredential", "AICodexReputationCredential"],
"issuer": "did:web:maxiaworld.app",
"validFrom": "2026-05-18T00:00:00Z",
"validUntil": "2026-05-25T00:00:00Z",
"credentialSubject": {
"id": "did:key:z6Mk...",
"score": 0,
"components": {
"escrow": 0, "uptime": 0, "reviews": 0,
"stake": 0, "age": 0, "disputes": 0
},
"counts": { "tx": 0, "disputes": 0 },
"lineage": { "parent": "did:key:...|null", "dynastyBadge": "none|bronze|..." }
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"verificationMethod": "did:web:maxiaworld.app#key-1",
"proofValue": "z..."
}
}
score = escrow*0.40 + uptime*0.20 + reviews*0.20 + stake*0.10 + age*0.10 - disputes*0.30
Each component normalized [0..100]. Formula public and versioned (aicodex-reputation-v1): an opaque reputation is never adopted as a reference.
Revocation list (StatusList2021) published at https://maxiaworld.app/status/. Every VC references its credentialStatus.
Frozen JSON-LD context: https://maxiaworld.app/contexts/aicodex-reputation-v1.json
(normalizationProfile = "aicodex-norm-v1"). Any change = new versioned profile, never in-place editing.
Global rules: all calculations in UTC; each component is an integer ∈ [0,100]; rounded to nearest, half up; an uncalculable component takes its floor value defined below.
| Component | Raw input | Window | Normalization → [0,100] | Floor / empty case |
|---|---|---|---|---|
| escrow | E = number of successfully completed escrows |
cumulative (all-time) | round(100 · ln(1+E) / ln(101)) (E=1→15, E=10→52, E≥100→100) |
E=0 → 0 |
| uptime | successful health probes / total | rolling 30 d, probe /15 min (max 2880); no response = failure | round(100 · hits/total) |
<672 probes (7 d of data) → capped at 50 |
| reviews | counterparty ratings ∈ [1..5] | all-time, Bayesian smoothing | bayes = (C·m + Σnotes)/(C + n), m=3.0, C=10; then round((bayes−1)/4 · 100) |
n=0 → bayes=3 → 50 |
| stake | S = staked amount equiv. USD |
snapshot at issuance | round(100 · ln(1+S) / ln(1001)) (S=10→35, S=100→67, S≥1000→100) |
S=0 → 0 |
| age | A = full days since birth.ts |
cumulative | round(100 · min(A,365)/365) (linear, plateau 365 d) |
A=0 → 0 |
| disputes | D = disputes lost/open not resolved in the agent's favor |
rolling 180 d (oldest fall off) | round(100 · min(D,10)/10) (D≥10 → 100 = full penalty) |
D=0 → 0 |
Final score (formula §3.1, frozen):
score_raw = escrow·0.40 + uptime·0.20 + reviews·0.20 + stake·0.10 + age·0.10 − disputes·0.30
score = round( clamp(score_raw, 0, 100) )
lineage.dynastyBadge (frozen, based on the parent's score at child birth):
none if <40; bronze [40,60); silver [60,80); gold [80,95); platinum ≥95.
TTL & freshness: VC reissued every 7 d (validUntil − validFrom). Each issuance recomputes all components over their windows. An expired VC is never considered valid.
Same canonical DID, three projections. Stable core, versioned and disposable adapters.
MCP server exposing 3 tools:
| Tool | Input | Output |
|---|---|---|
register |
pubkey ed25519, signed challenge | Canonical DID |
resolve |
DID | DID Document (§2.1) |
get_reputation |
DID | Reputation VC (§3) |
Registration = 1 signed call (challenge/response ed25519), no 2-step UI. Onboarding friction is the single bottleneck.
Detailed contract FROZEN: SPEC-adapter-mcp-v1.md (I/O of the 3 tools, canonical signed chain, validation order, error codes, quotas). Normative reference for adapter V1.
DID projection as an A2A Agent Card at /.well-known or service[#a2a]:
name, provider ← agent metadataurl ← A2A endpointx-aicodex: { did, reputationCredentialUrl }The reputation VC is linked, not copied (always fresh, verifiable at source).
The Reputation VC becomes an attestation attachable to an AP2 mandate:
https://maxiaworld.app/spec/. Roadmap: later submission to an open body (W3C CG / FIDO / Linux Foundation) = condition for universality.An agent is AI Codex-compliant if it: (a) holds a valid W3C DID Document §2.1, (b) resolves a signed and non-revoked Reputation VC §3, (c) exposes ≥1 adapter §4. All three are necessary and sufficient.
Context aicodex-reputation-v1 FROZEN (§3.3 + file contexts/aicodex-reputation-v1.json).
Adapter V1 MCP FROZEN (SPEC-adapter-mcp-v1.md).
Next: adapter V2 A2A (Agent Card /.well-known/agent.json, extension x-aicodex, reputation VC link).
Frozen specification. The raw .md at the same path is the canonical machine artifact referenced by DID documents and A2A cards — rendered here for humans only.