Skip to content
Back to EmailValidator

Card snapshot

pingvalid.com · 2026-07-12 05:49:29 UTC · 7fc9104f181a3e1142cffda915caa4f4aa5c8ef22f66fc3d90d6b279ca6e8d4c

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "protocolVersion": "1.0",
  "name": "EmailValidator",
  "description": "Email syntax / DNS / MX / disposable / SMTP-RCPT validation with deterministic verdicts and refund-on-bounce. US/CA only.",
  "url": "https://api.pingvalid.com/a2a/email-validator",
  "preferredTransport": "JSONRPC",
  "version": "1.0.0",
  "provider": {
    "organization": "pingvalid",
    "url": "https://pingvalid.com"
  },
  "skills": [
    {
      "id": "validate_email",
      "name": "Validate a single email",
      "description": "Run the T0\u2013T7 pipeline on one email and return verdict + per-tier evidence.",
      "tags": [
        "email",
        "validation",
        "deliverability"
      ],
      "examples": [
        "Validate john@example.com",
        "Is alice@disposable.tld safe to send to?"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "validate_bulk",
      "name": "Validate a list of emails",
      "description": "Async bulk validation. Returns a task immediately; client polls or subscribes via SSE.",
      "tags": [
        "email",
        "validation",
        "bulk",
        "async"
      ],
      "examples": [
        "Validate this CSV of 12k emails",
        "Clean my newsletter list of 250 contacts"
      ],
      "inputModes": [
        "application/json",
        "text/csv"
      ],
      "outputModes": [
        "application/json",
        "text/csv"
      ]
    },
    {
      "id": "query_job",
      "name": "Query a bulk job",
      "description": "Fetch state and partial results for a previously-submitted bulk task.",
      "tags": [
        "status",
        "task"
      ],
      "examples": [],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "explain_verdict",
      "name": "Explain a verdict",
      "description": "Render a natural-language explanation of a previous verdict, citing the per-tier evidence.",
      "tags": [
        "explainability",
        "verdict"
      ],
      "examples": [
        "Why is alice@disposable.tld risky?",
        "Explain task req_8c9aa1 in plain English."
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    }
  ],
  "additionalInterfaces": [
    {
      "url": "https://api.pingvalid.com/a2a/email-validator",
      "transport": "JSONRPC"
    }
  ],
  "streaming": true,
  "pushNotifications": true,
  "stateTransitionHistory": true,
  "securitySchemes": {
    "x402": {
      "type": "http",
      "scheme": "x402"
    },
    "bearer": {
      "type": "http",
      "scheme": "bearer"
    },
    "ap2": {
      "type": "extension",
      "url": "https://ap2-protocol.org"
    }
  },
  "extensions": [
    {
      "id": "https://github.com/google-agentic-commerce/a2a-x402",
      "description": "Pay for per-call paid skills with x402 USDC (Base or Solana).",
      "required": false,
      "params": {
        "networks": [
          "eip155:8453",
          "solana:mainnet"
        ],
        "asset": "USDC",
        "spec_version": "v2"
      }
    },
    {
      "id": "https://github.com/google-agentic-commerce/AP2",
      "description": "AP2 v0.2 mandate gating for validate_bulk (Closed Checkout Mandate).",
      "required": false,
      "params": {
        "spec_version": "v0.2",
        "mandate_types": [
          "checkout"
        ],
        "stages": [
          "closed"
        ],
        "replay_window_seconds": 300
      }
    }
  ]
}