{
  "@context": "https://carnetia.ai/schema/v1",
  "@type": "TrustRegistry",
  "name": "CARNETIA",
  "tagline": "Trust Layer for AI Agents",
  "purpose": "Public registry that issues verifiable identities to autonomous AI agents and exposes a free REST API so any third party can verify them in real time.",
  "version": "4.0",
  "spec_revision": "2026-05-19",
  "homepage": "https://carnetia.ai",
  "documentation": "https://carnetia.ai/developers",
  "llms_txt": "https://carnetia.ai/llms.txt",
  "openapi": "https://carnetia.ai/.well-known/openapi.yaml",
  "ai_plugin": "https://carnetia.ai/.well-known/ai-plugin.json",
  "contact": {
    "email": "hello@carnetia.ai",
    "report_abuse": "https://carnetia.ai/report/{carnetia_id}",
    "security": "https://carnetia.ai/security"
  },
  "endpoints": {
    "health": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/health"
    },
    "register": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/register",
      "auth": "none",
      "rate_limit": "per_ip"
    },
    "verify": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/verify/{carnetia_id}",
      "auth": "none"
    },
    "agent_public": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/agent/{carnetia_id}",
      "auth": "none"
    },
    "challenge": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/challenge/{carnetia_id}",
      "auth": "none"
    },
    "verify_totp": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/verify-totp",
      "auth": "none"
    },
    "heartbeat": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/heartbeat",
      "auth": "none"
    },
    "founders_stats": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/founders/stats",
      "auth": "none"
    },
    "founders_list": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/founders",
      "auth": "none"
    },
    "agent_code": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/code",
      "auth": "operator_token"
    },
    "auth_token": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/auth/token"
    },
    "my_agents": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/my-agents",
      "auth": "bearer"
    },
    "totp_enable": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/totp/enable",
      "auth": "bearer",
      "description": "Enable TOTP (live challenge) for an agent. Requires the operator's Sanctum Bearer token from registration."
    },
    "totp_qr": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/totp/qr.png",
      "auth": "bearer",
      "description": "PNG QR of the provisioning URI for an already-enabled agent."
    },
    "verify_email": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/verify-email?token={token}",
      "auth": "none",
      "description": "Confirm an email verification token. Activates the agent and assigns founder rank."
    },
    "agent_avatar": {
      "description": "Upload/delete agent avatar image (jpg/png/webp, max 4MB). Shown on verify page and returned by verify API.",
      "upload": {
        "method": "POST",
        "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/avatar",
        "auth": "bearer",
        "body_modes": [
          "multipart/form-data (field: file)",
          "application/json (field: url)"
        ],
        "returns": [
          "avatar_url",
          "avatar_hash",
          "size_bytes",
          "mime"
        ]
      },
      "delete": {
        "method": "DELETE",
        "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/avatar",
        "auth": "bearer"
      }
    }
  },
  "registration": {
    "url": "https://api.carnetia.ai/v2/register",
    "method": "POST",
    "content_type": "application/json",
    "auth_required": false,
    "rate_limited": true,
    "required_fields": [
      "operator_type",
      "operator_name",
      "country",
      "user_email",
      "agent_name"
    ],
    "optional_fields": [
      "agent_purpose",
      "agent_vendor",
      "agent_model"
    ],
    "field_schema": {
      "operator_type": {
        "type": "string",
        "enum": [
          "person",
          "company"
        ]
      },
      "operator_name": {
        "type": "string",
        "max_length": 200
      },
      "country": {
        "type": "string",
        "format": "ISO-3166-1 alpha-2"
      },
      "user_email": {
        "type": "string",
        "format": "email"
      },
      "agent_name": {
        "type": "string",
        "max_length": 200
      },
      "agent_purpose": {
        "type": "string",
        "max_length": 500
      },
      "agent_vendor": {
        "type": "string",
        "max_length": 100
      },
      "agent_model": {
        "type": "string",
        "max_length": 200
      }
    },
    "returns": {
      "carnetia_id": "string (CAR-YYYY-CC-NNNN-XXXX)",
      "fingerprint": "string (sha256 hex)",
      "verify_url": "string (URL)",
      "badge": "string (gold|silver|bronze|none)",
      "is_founder": "boolean"
    }
  },
  "verification": {
    "id_format": "CAR-YYYY-CC-NNNN-XXXX",
    "id_regex": "^CAR-\\d{4}-[A-Z]{2}-\\d{4}-[A-Z0-9]{4}$",
    "example": "CAR-2026-MX-0049-GDQJ",
    "public_verify_ui": "https://carnetia.ai/verify/{carnetia_id}",
    "totp_algo": "RFC 6238 (SHA-1, 30s, 6 digits)"
  },
  "supported_agent_types": [
    "chatbot",
    "voice_agent",
    "trading_bot",
    "rpa_agent",
    "autonomous_agent",
    "rag_assistant",
    "vision_agent",
    "multimodal_agent"
  ],
  "supported_tiers": [
    {
      "id": "free",
      "founder_eligible": false
    },
    {
      "id": "bronze",
      "founder_eligible": true,
      "cohort": 3
    },
    {
      "id": "silver",
      "founder_eligible": true,
      "cohort": 2
    },
    {
      "id": "gold",
      "founder_eligible": true,
      "cohort": 1,
      "limit": 1000
    },
    {
      "id": "enterprise",
      "founder_eligible": false
    }
  ],
  "supported_addons": [
    "verified_trader_basic",
    "verified_trader_pro",
    "verified_trader_audit",
    "platform_reseller",
    "compliance_pack",
    "notarization_onchain"
  ],
  "founder_program": {
    "open": true,
    "cap": 1000000,
    "stats_endpoint": "https://api.carnetia.ai/v2/founders/stats",
    "wall_url": "https://carnetia.ai/founders"
  },
  "ethical_contract": {
    "url": "https://carnetia.ai/terms",
    "commitments": [
      "truthful_disclosure_of_purpose",
      "self_identify_as_ai_when_asked",
      "no_identity_sharing",
      "cooperate_with_abuse_reports",
      "mark_agent_retired_on_deprecation"
    ]
  },
  "discovery_hints": {
    "robots_safe": true,
    "machine_readable": true,
    "answer_engine_optimization": true,
    "keywords": [
      "AI agent verification",
      "AI trust layer",
      "verify AI agent",
      "trading bot verification",
      "agent identity protocol",
      "AI accountability",
      "machine-readable agent registry"
    ]
  },
  "mcp": {
    "url": "https://mcp.carnetia.ai/mcp",
    "fallback_url": "https://carnetia.ai/mcp",
    "transport": "streamable-http",
    "spec": "https://modelcontextprotocol.io",
    "spec_revision": "2025-06-18",
    "description": "World's first public Model Context Protocol server for AI agent identity verification. Connect any MCP-capable client (Claude Desktop, Claude Code, Claude API) and register or verify autonomous AI agents through natural language.",
    "tools": [
      {
        "name": "carnetia_register_agent",
        "description": "Self-register a new AI agent."
      },
      {
        "name": "carnetia_verify",
        "description": "Verify any agent by CARNETIA ID."
      },
      {
        "name": "carnetia_live_challenge",
        "description": "Request a live TOTP challenge window."
      },
      {
        "name": "carnetia_get_stats",
        "description": "Public stats and founder progress."
      },
      {
        "name": "carnetia_whoami",
        "description": "Metadata about this MCP server."
      },
      {
        "name": "carnetia_totp_enable",
        "description": "Enable TOTP (live challenge) for a registered agent. Requires operator's api_token."
      },
      {
        "name": "carnetia_verify_totp",
        "description": "Verify a 6-digit TOTP code in real time (public, no auth). Liveness layer."
      }
    ],
    "resources": [
      "carnetia://llms.txt",
      "carnetia://manifest",
      "carnetia://openapi"
    ],
    "client_install": {
      "claude_desktop": {
        "config_path_macos": "~/Library/Application Support/Claude/claude_desktop_config.json",
        "config_path_windows": "%APPDATA%/Claude/claude_desktop_config.json",
        "snippet": {
          "mcpServers": {
            "carnetia": {
              "url": "https://mcp.carnetia.ai/mcp"
            }
          }
        }
      },
      "claude_code": "claude mcp add --transport http carnetia https://mcp.carnetia.ai/mcp"
    }
  },
  "legacy_endpoints": {
    "health": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/health"
    },
    "register": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/register",
      "auth": "none",
      "rate_limit": "per_ip"
    },
    "verify": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/verify/{carnetia_id}",
      "auth": "none"
    },
    "agent_public": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/agent/{carnetia_id}",
      "auth": "none"
    },
    "challenge": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/challenge/{carnetia_id}",
      "auth": "none"
    },
    "verify_totp": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/verify-totp",
      "auth": "none"
    },
    "heartbeat": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/heartbeat",
      "auth": "none"
    },
    "founders_stats": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/founders/stats",
      "auth": "none"
    },
    "founders_list": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/founders",
      "auth": "none"
    },
    "agent_code": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/agents/{carnetia_id}/code",
      "auth": "operator_token"
    },
    "auth_token": {
      "method": "POST",
      "url": "https://api.carnetia.ai/v2/auth/token"
    },
    "my_agents": {
      "method": "GET",
      "url": "https://api.carnetia.ai/v2/my-agents",
      "auth": "bearer"
    }
  },
  "legacy_endpoints_note": "These URLs still work permanently as aliases. Prefer endpoints (canonical) for new integrations.",
  "api_base": "https://api.carnetia.ai",
  "api_base_legacy": "https://carnetia.ai/api",
  "liveness": {
    "model": "RFC 6238 TOTP (SHA-1, 30s, 6 digits)",
    "tolerance_seconds": 90,
    "enable_endpoint": "https://api.carnetia.ai/v2/agents/{carnetia_id}/totp/enable",
    "verify_endpoint": "https://api.carnetia.ai/v2/verify-totp",
    "rate_limit_verify": "10/min per (IP, agent)",
    "rate_limit_enable": "per_ip",
    "description": "Identity (verify) + Liveness (verify-totp). Any third party can prove an agent is alive right now."
  },
  "policies": {
    "tier_limits": {
      "free": {
        "agents": 1,
        "price_usd": 0,
        "founder_eligible": false
      },
      "bronze": {
        "agents": 3,
        "price_usd": 5,
        "founder_eligible": true,
        "addon_extra_agent_usd": 2.0
      },
      "silver": {
        "agents": 15,
        "price_usd": 18,
        "founder_eligible": true,
        "addon_extra_agent_usd": 1.5
      },
      "gold": {
        "agents": 100,
        "price_usd": 49,
        "founder_eligible": true
      },
      "enterprise": {
        "agents": null,
        "price_usd": 300,
        "founder_eligible": false,
        "unlimited": true
      }
    },
    "email_verification": {
      "required_for_new_users": true,
      "method": "magic_link",
      "token_ttl_hours": 168,
      "bypass_for_whitelisted_or_admin": true
    },
    "rate_limits": {
      "register": {
        "per_ip_per_minute": 3,
        "per_ip_per_hour": 10,
        "per_ip_per_day": 20,
        "per_email_per_hour": 2,
        "per_email_per_day": 5,
        "response_on_block": "HTTP 429 Too Many Attempts"
      },
      "mcp_general": {
        "per_ip_per_minute": 30
      },
      "mcp_register_tool": {
        "per_ip_per_hour": 10
      }
    },
    "responses": {
      "agent_limit_reached": {
        "http_status": 403,
        "error_code": "AGENT_LIMIT_REACHED",
        "payload_fields": [
          "error",
          "message",
          "tier",
          "current",
          "limit",
          "upgrade_url"
        ]
      },
      "rate_limit": {
        "http_status": 429,
        "error_code": "RATE_LIMIT_EXCEEDED"
      },
      "email_verification_pending": {
        "http_status": 201,
        "status": "pending_email",
        "payload_fields": [
          "agent",
          "message",
          "verification_required",
          "verification_expires_at"
        ]
      }
    }
  },
  "display_badges": {
    "description": "Copy-paste HTML badges to display your verified agent on any website.",
    "url": "https://carnetia.ai/badges",
    "variants": [
      "pill_dark",
      "pill_light",
      "card_premium",
      "footer_inline",
      "hero_with_avatar"
    ]
  }
}