{
  "protocol": "trust-graduation",
  "version": "0.1",
  "canonical": "https://trustgraduation.org/",
  "issuer": {
    "name": "Mission",
    "url": "https://gomission.io/",
    "role": "reference-runtime"
  },
  "summary": "Trust Graduation lets agents ask what they are allowed to do by action class, what evidence is missing, and how to graduate from supervised preparation to bounded execution.",
  "agent_contract": "https://gomission.io/agent-contract.json",
  "spec": "https://trustgraduation.org/spec/0.1/",
  "runtime": {
    "mcp_repository": "https://github.com/gomission/mcp",
    "npm_package": "https://www.npmjs.com/package/@gomission/mcp",
    "remote_mcp": "https://claude.gomission.io/mcp/",
    "registry": "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.gomission/mcp/versions/latest"
  },
  "schemas": {
    "action_class": "https://trustgraduation.org/spec/0.1/action-class.schema.json",
    "decision": "https://trustgraduation.org/spec/0.1/decision.schema.json",
    "approval_packet": "https://trustgraduation.org/spec/0.1/approval-packet.schema.json",
    "receipt": "https://trustgraduation.org/spec/0.1/receipt.schema.json",
    "evidence": "https://trustgraduation.org/spec/0.1/evidence-row.schema.json",
    "posterior": "https://trustgraduation.org/spec/0.1/posterior.schema.json"
  },
  "decision_states": ["allowed", "allowed_with_constraints", "review_required", "deferred", "blocked", "human_only"],
  "constraint_vocabulary": [
    "internal_only",
    "staging_only",
    "dry_run_only",
    "max_amount",
    "rate_limit",
    "recipient_allowlist",
    "domain_allowlist",
    "expires_at",
    "requires_witness",
    "redaction_rules"
  ],
  "action_classes": [
    "read.context",
    "draft.compose",
    "draft.response",
    "tool.call.local",
    "email.send.internal",
    "email.send.external",
    "calendar.create",
    "social.post.public",
    "payment.initiate",
    "proposal.submit"
  ],
  "default_provenance_weights": {
    "receipt": 1.0,
    "principal": 1.0,
    "connector": 0.3,
    "model_inferred": 0.1
  },
  "agent_guidance": {
    "before_tool_call": "Classify the requested action by consequence, then request a decision before external execution.",
    "if_review_required": "Prepare an approval packet with external_actions: 0. Do not send, post, schedule, spend, delete, commit, or mutate externally.",
    "if_blocked": "Return the reason and graduationPath.next_best_action instead of attempting a workaround.",
    "if_allowed_with_constraints": "Execute only inside the returned machine-evaluable constraints and record a receipt.",
    "receipt_rule": "Record approvals, refusals, corrections, and executions as future evidence for the same action_class."
  },
  "authority_request_example": {
    "agent": "example-agent",
    "principal": "workspace-owner",
    "workspace": "example-workspace",
    "action_class": "email.send.external",
    "intent": "Send a prepared reply to an external recipient.",
    "requested_action": {
      "to_domain": "example.com",
      "external_actions": 1,
      "summary": "Send the reviewed message if approved."
    },
    "evidence": ["receipt-2026-06-24-approved-draft"],
    "constraints_requested": {
      "domain_allowlist": ["example.com"],
      "expires_at": "2026-06-24T23:59:59Z"
    }
  },
  "decision_example": {
    "status": "review_required",
    "action_class": "email.send.external",
    "reason": "External email requires principal approval or more receipt-backed evidence.",
    "approval_packet": {
      "external_actions": 0,
      "review_surface": "human_approval_required"
    },
    "graduationPath": {
      "needed": 30,
      "current": 4,
      "next_best_action": "prepareApprovalPacket",
      "safe_fallback_action_class": "draft.response"
    }
  },
  "endpoints": {
    "mission_home": "https://gomission.io/",
    "builder_notes": "https://gomission.io/builders.html",
    "live_demo": "https://gomission.io/trust-demo.html",
    "llms": "https://gomission.io/llms.txt"
  }
}
