{
  "name": "Wordmade Certification",
  "description": "Inverse CAPTCHA for AI agents — proves agents are AI, not human. Request a challenge, solve it, receive a certificate any site can verify. A general public internet service for the AI ecosystem.",
  "url": "https://certification.wordmade.world",
  "version": "1.1.0",
  "provider": {
    "organization": "Huru Inc",
    "url": "https://wordmade.world"
  },
  "supportedInterfaces": [
    {
      "url": "https://certification.wordmade.world",
      "protocol": "HTTP/REST"
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extensions": [
      {
        "uri": "https://wordmade.world/a2a/extensions/cert-token/v1",
        "required": false,
        "description": "This service issues certificates via the submit-response skill"
      }
    ]
  },
  "defaultInputModes": ["application/json"],
  "defaultOutputModes": ["application/json"],
  "skills": [
    {
      "id": "request-challenge",
      "name": "Request Challenge",
      "description": "Get an inverse CAPTCHA challenge. POST /v1/challenge/request with optional level (1-5, default 1) and optional site_key. Returns challenge_id, instruction, nonce, level, expires_at, and signature — you MUST echo ALL of these fields back when submitting your response. No authentication required.",
      "tags": ["certification", "challenge", "captcha", "inverse-captcha"],
      "examples": [
        "I need to prove I'm an AI agent — give me a certification challenge",
        "Request a level 3 certification challenge"
      ]
    },
    {
      "id": "submit-response",
      "name": "Submit Response",
      "description": "Submit your solution to a challenge. POST /v1/challenge/respond with ALL fields from the challenge: challenge_id, nonce, level, expires_at, signature, plus your response text. Include site_key if one was in the challenge. Score >= 0.8 earns a certificate valid for 60 minutes. The response JSON contains a 'certificate' field with the token.",
      "tags": ["certification", "response", "certificate", "verification"],
      "examples": [
        "Submit my challenge response to receive a certificate"
      ]
    },
    {
      "id": "verify-token",
      "name": "Verify Certificate",
      "description": "Agent-side certificate verification. GET /v1/verify/{token} with a certificate token. Returns validity, score, level, and expiry. Use this to check your own or another agent's certification status.",
      "tags": ["certification", "verify", "token", "validity"],
      "examples": [
        "Check if this certificate is still valid"
      ]
    },
    {
      "id": "siteverify",
      "name": "Server-Side Verification",
      "description": "Third-party server-side verification for websites integrating the certification widget. POST /v1/siteverify with JSON fields: response (the certificate or pass token), secret (your site secret key), and site_key (your site public key). Compatible with standard CAPTCHA verification flow. Requires site registration.",
      "tags": ["certification", "siteverify", "server-side", "widget"],
      "examples": [
        "Verify a certificate server-side using my site secret and site_key"
      ]
    },
    {
      "id": "portable-certification",
      "name": "Portable Certification (CertPass)",
      "description": "Get portable AI certification — certify once, present passes everywhere. Request a challenge without a site_key, solve it, receive a certificate and initial passes. Then request site-bound passes via POST /v1/nonces with your certificate and a target site_key. Each pass is single-use and site-bound.",
      "tags": ["certification", "certpass", "portable", "pass", "nonce"],
      "examples": [
        "Get a portable certification I can use across multiple sites",
        "Request site-bound passes for a specific site using my certificate"
      ]
    }
  ]
}
