{
  "handle": "Card",
  "data_schema": {
    "type": "object",
    "required": [
      "public_key",
      "claims"
    ],
    "properties": {
      "public_key": {
        "type": "string",
        "description": "Cryptographic identifier of the Agent"
      },
      "claims": {
        "type": "object",
        "description": "Map of protocols and capabilities supported"
      },
      "reputation_score": {
        "type": "number",
        "description": "Aggregate trust metric (optional)"
      },
      "endpoints": {
        "type": "array",
        "description": "Reachability addresses"
      }
    }
  },
  "mechanism": "Structured capability advertisement enabling agent discovery before contact. {{agent}} creates CARD: {agent_id (unique), endpoint (how to reach), protocols[] (compatibility), capabilities[] (what agent claims to do), constraints (availability, rate limits, requirements), metadata (version, ttl, published timestamp)}. {{agent}} PUBLISHES card via registry, broadcast, DHT, or well-known endpoint (mechanism-agnostic). Discovering agents QUERY using {{latent_attachment}} for semantic capability matching alongside exact protocol_match. Query returns ranked CARD list. Discoverer selects promising CARDs, then {{greet}}s at card.endpoint to establish channel. CARDs have TTL — agents maintain visibility by PUBLISHING a replacement card before the previous one expires, never by editing the one already issued. CARD capabilities are CLAIMS not proofs: verification happens via {{probe}} after GREET establishes channel. It enables discovery via {{select}} queries against the registry, filtering candidates by capability and protocol compatibility.",
  "gloss": "Structured capability advertisement: agent_id, endpoint, protocols, capabilities, metadata",
  "parameters": [
    {
      "name": "verification_tier",
      "type": "Enum",
      "range": "{SelfReported, Verified, Bonded}",
      "description": "Default: SelfReported"
    }
  ],
  "failure_modes": [
    "Stale CARDs (agent changed capabilities, CARD not updated—TTL mitigates).",
    "False claims (CARD says X, agent cannot X—PROBE mitigates).",
    "Registry unavailable (discovery fails—use multiple publication methods).",
    "CARD spam (fake CARDs pollute discovery—use reputation/filtering).",
    "Privacy leak (CARD reveals too much about agent—include only necessary info).",
    "Version skew (CARD protocol version differs from actual—GREET catches this)."
  ],
  "invariants": [
    "Immutable after issue: a Card is never edited. A change of endpoint, protocol or capability is published as a new Card superseding the old, which is what lets a discoverer tell a current claim from a stale one rather than trusting a mutable record.",
    "Claims, not proofs: the capabilities a Card advertises are assertions the issuer has not demonstrated. Verification is the discoverer's, via {{probe}} after {{greet}} opens a channel."
  ],
  "_meta": {
    "tier": 2,
    "ring": 0,
    "supersedes": [
      "sema:Card#mh:SHA-256:e307b9bce7530dd5d86a1e6e4cd2252765f4154b6e3e6c1f1f1ac3e544666495",
      "sema:Card#mh:SHA-256:c9f028ecd6e890702f25417a076aed7d352790d1c02fd9656488daea00db2626",
      "sema:Card#mh:SHA-256:84b75e4aa9df317e013f042ff44e2cc81e5f3092d405375f2c84e4dad9d39b0b",
      "sema:Card#mh:SHA-256:ed287a652085f4e54a58e1b76a59016d74fa7edf51f918730d0338698aca979d"
    ],
    "path": [
      "Infrastructure",
      "Data Structures"
    ]
  },
  "sema_id": "sema:Card#mh:SHA-256:e4b2ca76f43a691e7bd7932362512a5e929c62efc6c3d2eb4a9369e5108fa074",
  "sema_ref": "Card#e4b2",
  "sema_stub": "e4b2",
  "dependencies": {
    "composes_with": {
      "select": "sema:Select#mh:SHA-256:decf9c05490dc5e6b372c5dbb7d89d2285fdd832714fc992b10fdbd6b7c2c2e3"
    },
    "references": {
      "agent": "sema:Agent#mh:SHA-256:e127459069739fffc96a71d54ef6e8c97ca53471d5349c16aa72a092a33756cd",
      "greet": "sema:Greet#mh:SHA-256:bcb066aa62cec1c03e3fac07b1b199fa8b12ab059d4faaf49374bf4a400941bd",
      "latent_attachment": "sema:LatentAttachment#mh:SHA-256:992d55f53109cbc5050a8ed96afe91121a85a664c6178ad136358e792ecbfa20",
      "probe": "sema:Probe#mh:SHA-256:2bb8a26d43ba0b1975fe2ce4051cfb219a9507140f12e72b819265f4ef98f224"
    }
  },
  "sema_layer": "Infrastructure",
  "sema_category": "Data Structures",
  "used_by": {
    "references": {
      "AgentDiscover": "sema:AgentDiscover#mh:SHA-256:b784015934d1ccca13707ea806a03a3c7951a8de87bdd7a5c7a1d8bd5d93ce5e",
      "NoiseInjection": "sema:NoiseInjection#mh:SHA-256:99582fc78556fdadc8df343c9a670df7abb87c0030f668f30d6252a182cef083",
      "PolymorphicSolver": "sema:PolymorphicSolver#mh:SHA-256:f7fe4635a7520f918c823f0047d6fed8e38fd820c1970ef4623cc8fd78d2b0bd",
      "ToolDiscovery": "sema:ToolDiscovery#mh:SHA-256:b1659e870015d2d6e37842f31a0bc1cc2d2d2882aaf6d0bc3b6b1236885890d7"
    }
  }
}
