Inbox Placement Testby Live Direct Marketing

Choose your language

RU and EN are available. Other languages will be enabled after localization.

Sign in
A2A8 min read

How to register your service as an A2A agent

Publish a valid Agent Card at /.well-known/agent.json, expose a compliant endpoint, handle authentication and capability negotiation — the full checklist to register with the A2A ecosystem.

Agent-to-Agent (A2A) Protocol is the emerging standard for how AI agents discover and invoke each other. Where MCP exposes tools to a local model, A2A exposes an entire agent as a callable endpoint that other agents can plan around. If you run a SaaS, publishing an A2A Agent Card makes your service usable by autonomous agents without an integration engineer on the other side. This is the step-by-step for doing it right.

A2A vs MCP in one line

MCP: "here is a toolbox of functions my model can call locally." A2A: "here is a full agent exposing skills, discoverable over HTTP, that another agent can call remotely."

The registration flow

  1. Pick the skills your agent will expose.
  2. Publish a valid Agent Card at /.well-known/agent.json.
  3. Expose a compliant endpoint (HTTP + streaming).
  4. Implement authentication (OAuth 2.0 or API keys with the right scopes).
  5. Handle capability negotiation on first connect.
  6. List yourself in public directories.

Step 1 — Define your skills

A skill is a named capability with a JSON Schema input and output. For us, one skill is test_inbox_placement — input: sender, subject, HTML; output: per-provider folder verdicts + auth report. Another is check_domain_authentication. Start small. Three well-defined skills beat twelve half-done ones.

  • Give each skill a unique machine id and a human name.
  • Write a one-sentence description that explains when to call it.
  • Specify input/output with JSON Schema. Agents will use your schema for validation and planning.
  • Mark destructive or billable skills with "destructive": true.

Step 2 — Publish the Agent Card

The Agent Card is a JSON document served at /.well-known/agent.json. It is the discovery artifact — the A2A equivalent of robots.txt for crawlers.

{
  "a2aVersion": "0.2",
  "name": "Inbox Check",
  "url": "https://check.live-direct-marketing.online",
  "description": "Free email deliverability testing across 20+ providers.",
  "authentication": {
    "schemes": ["bearer"],
    "oauth2": {
      "authorizationUrl": "https://check.live-direct-marketing.online/oauth/authorize",
      "tokenUrl":         "https://check.live-direct-marketing.online/oauth/token",
      "scopes": {
        "tests:read":  "Read placement test results",
        "tests:write": "Create placement tests"
      }
    }
  },
  "capabilities": { "streaming": true, "pushNotifications": true },
  "skills": [
    {
      "id": "test_inbox_placement",
      "name": "Test Inbox Placement",
      "description": "Send a seed test message and report folder placement across 20+ providers.",
      "tags": ["email", "deliverability"],
      "input":  { "$ref": "#/components/schemas/TestInput"  },
      "output": { "$ref": "#/components/schemas/TestResult" }
    }
  ],
  "contact": { "email": "support@live-direct-marketing.online" }
}
  • Serve with Content-Type: application/json.
  • Serve over HTTPS — plaintext cards are rejected by compliant clients.
  • Enable CORS for browser-based agents: Access-Control-Allow-Origin: *.
  • Return it at the apex too — both /.well-known/agent.json and your subdomain's path.

Step 3 — Expose a compliant endpoint

A2A uses JSON-RPC 2.0 over HTTP(S) with optional Server-Sent Events for streaming responses. Your endpoint has to support the a2a/tasks.send and a2a/tasks.get methods at minimum, plus the stream endpoint if you set capabilities.streaming = true.

POST /a2a HTTP/1.1
Content-Type: application/json
Authorization: Bearer xxx

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "a2a/tasks.send",
  "params": {
    "skillId": "test_inbox_placement",
    "input":   { "sender": "hello@example.com", "subject": "hi", "html": "<p>...</p>" },
    "sessionId": "sess_0123"
  }
}

Respond with a task id. Agents poll or stream until the task is done. Returnerror objects with standard JSON-RPC error codes (-32600 invalid request, -32601 method not found, -32602 invalid params) for transport failures and a custom code range for skill-level errors.

Step 4 — Authentication and scopes

  • OAuth 2.0 (recommended). Register clients (the agents calling you), issue access tokens, honour scopes. Works for multi-tenant SaaS.
  • API key. Simpler but opaque. Use for B2B integrations where you control both sides.
  • No auth. Fine for read-only, non-billable skills. Rate-limit aggressively.

Match scopes to skills in the Agent Card. An agent that only has tests:read should not be able to call test_inbox_placement — return 403 and a machine-readable error so the remote agent can request elevation.

Step 5 — Capability negotiation

On first connect, the calling agent hits your Agent Card and verifies your declared capabilities match what it needs. Be honest in the card — claiming streaming: true without a working SSE endpoint will get you quietly delisted. Expose a GET /a2a/health that returns a timestamp; other agents use it to decide whether to fall back to the polling path.

Step 6 — List in directories

A2A directories are the equivalent of npm for agents. They crawl agent.json files and offer a searchable index. Submit your card to:

  • The official A2A registry (github.com/google-a2a/registry, PR-based).
  • Third-party curated lists.
  • Any vertical-specific directories in your industry.
Compliance checklist
  • /.well-known/agent.json returns 200, is valid against the A2A schema.
  • Every skill has JSON Schema input + output, one-line description, tag.
  • Auth scheme declared and enforced on the endpoint.
  • POST /a2a handles tasks.send and tasks.get.
  • Health endpoint returns under 500ms.
  • Rate limits + error codes documented.

FAQ

Do I need an A2A agent if I already have an OpenAPI spec?

OpenAPI describes HTTP endpoints; A2A describes an agent with skills and a handshake. Agents can consume OpenAPI indirectly, but A2A is the native format — registration in directories, capability negotiation, scopes.

How do I test my Agent Card?

Use the official a2a-validator CLI, then spin up a test client and hit a skill end-to-end. Our Agent Card is publicly browsable if you want a reference.

Is A2A a Google-only thing?

The spec is Google-led but open and vendor-neutral. Implementations exist in JavaScript, Python, Go, and Rust. The registry is public on GitHub.

Does GlockApps publish an Agent Card?

Not as of mid-2026. We do — it is one of the reasons to pick a tool whose surface can be driven by autonomous agents without a custom integration.
Related reading
AB
About the author
Artem Berezin
B2B Deliverability Specialist

B2B deliverability specialist with 5+ years of hands-on outreach experience. Built campaigns reaching 90,000+ inboxes across 20+ countries — and fixed the deliverability problems that came with that scale.

Check your deliverability across 10 providers

Gmail, Outlook, Yahoo, iCloud, AOL, GMX, Web.de, T-Online, Mail.ru and Yandex. Real inbox screenshots, SPF/DKIM/DMARC, spam engine verdicts. Free, no signup.

Run Free Test →

Unlimited tests · 10 seed mailboxes · Live results · No account required