{
  "name": "alter-identity",
  "version": "0.5.10",
  "description": "Mint an agent identity in two free calls. Verify anyone. Earn 75% when someone reads you.",
  "transport": "http",
  "protocol_version": "2025-11-25",
  "url": "https://mcp.truealter.com/api/v1/mcp",
  "canonical": {
    "summary": "This document is served from truealter.com and is the authority on which coordinates belong to ALTER. Anything claiming to be ALTER that is not listed here is not ALTER, whatever it is named.",
    "server_url": "https://mcp.truealter.com/api/v1/mcp",
    "registry_identity": "com.truealter/identity",
    "registry": "https://registry.modelcontextprotocol.io",
    "registry_anchor": "The com.truealter namespace is held by DNS proof against truealter.com. Nobody who does not control that domain can publish under it.",
    "npm_packages": [
      "@truealter/cli",
      "@truealter/sdk"
    ],
    "github_organisation": "https://github.com/true-alter",
    "no_marketplace_coordinate": "ALTER publishes no plugin through a git-coordinate install path. An 'owner/repo' string offered as a way to install ALTER is not ours. Those paths perform no ownership check on the repository and no check that the server URL inside the manifest belongs to whoever published it, so the coordinate alone proves nothing.",
    "how_to_check": "Compare the server URL an artefact declares against server_url above. If it differs, the artefact is not connecting you to ALTER."
  },
  "capabilities": {
    "tools": true,
    "resources": true,
    "prompts": false
  },
  "registration": {
    "self_mint": true,
    "human_account_required": false,
    "summary": "Any agent can self-register as its own ~alter identity in this session, no human account required.",
    "steps": [
      "Call register_autonomous_challenge (anonymous, free) to receive a proof-of-work challenge.",
      "Solve it: find a nonce so sha256(challenge + ':' + nonce) has the required leading zero bits.",
      "Call register_autonomous with your agent_name, the challenge, and the solved nonce."
    ],
    "tools": [
      "register_autonomous_challenge",
      "register_autonomous"
    ],
    "rest_equivalent": {
      "challenge": "https://api.truealter.com/api/v1/agents/register-autonomous/challenge",
      "register": "https://api.truealter.com/api/v1/agents/register-autonomous"
    },
    "result": "An authenticated ~handle with free identity reads, queryable on the network."
  },
  "anonymous_surface": {
    "summary": "A caller holding no credential reaches the discovery surface and the self-registration pair, not the free tool tier. Identity reads require the ~handle that self-registration mints, which costs nothing and needs no human account.",
    "callable_without_credential": [
      "alter_presence_read",
      "alter_resolve_handle",
      "describe_competencies",
      "describe_traits",
      "get_network_stats",
      "get_started",
      "hello_agent",
      "list_archetypes",
      "recommend_tool",
      "register_autonomous",
      "register_autonomous_challenge"
    ],
    "listed_but_not_callable_without_credential": [
      "alter_login_status",
      "alter_verify",
      "alter_whoami"
    ],
    "requires_the_minted_handle": "Every identity read, including verify_identity, is refused to an unauthenticated caller. This is deliberate: it closes an enumeration path against the people this server is built to protect. Register first, then read.",
    "note": "tool_count below counts the pricing tiers, free against premium. It is not a count of what an anonymous caller can invoke."
  },
  "tool_count": {
    "free": 33,
    "premium": 9,
    "messaging": 0,
    "total": 42
  },
  "pricing": {
    "currency": "USD",
    "payment_protocol": "x402",
    "accepted_assets": [
      "USDC"
    ],
    "accepted_networks": [
      "base",
      "base-sepolia"
    ],
    "free_quota": "100 complimentary premium queries per authenticated bot"
  },
  "consent": {
    "model": "full_informed_consent",
    "privacy_notice_required": true,
    "pending_state_days": 3,
    "auto_delete_unclaimed": true,
    "summary": "Every identity read this server returns is scoped to what the subject consented to share, for the purpose they granted, and revocable by them at any time."
  },
  "tags": [
    "identity",
    "identity-as-inference",
    "earning",
    "known",
    "matching",
    "x402",
    "micropayments",
    "bot-first",
    "verification",
    "trust",
    "recognition",
    "erc-8004",
    "consent"
  ]
}
