buildmarketing.ai
Loading our agent card…
A2A · the Agent2Agent protocol
Your buyers are starting to send AI agents to research vendors. Pick a website, or chat with ours, and see exactly what those agents say.
Loading our agent card…
Leave your details and Dan will show you how agents see your site today, and what it takes to have an agent of your own that answers them.
These platforms let you build an agent that speaks A2A, so other companies' agents can talk to it. Using one doesn't put an agent on your website by itself; you still publish its agent card on your domain, and that's what our agent checks above.
Build an agent in Salesforce that other A2A agents can call, and that can call them.
Salesforce, June 2025 ↗Google created A2A. Build agents with the Agent Development Kit, Vertex AI or Gemini Enterprise.
Google, April 2025 ↗Build agents in Azure AI Foundry or Copilot Studio that work with other A2A agents.
Microsoft, May 2025 ↗Run A2A agents on Amazon Bedrock AgentCore.
AWS, November 2025 ↗SAP, ServiceNow, Workday, Atlassian, Box and PayPal back A2A, so their agents can work with yours.
Launch partners, April 2025 ↗Write your own A2A agent in code with LangChain and LangGraph, CrewAI, IBM's BeeAI or Pydantic AI.
A2A docs and SDKs ↗Google launched A2A in April 2025 with more than 50 partners, and the Linux Foundation runs it now. Not sure which to pick? Platforms to run your own agents compares them.
Public directories where agents list themselves so other agents can find them. Most listings today are independent agents rather than company websites.
Hundreds of live agents, each health-checked and tested for protocol conformance.
a2aregistry.org ↗A directory and registry for agents on the agentic web.
a2a-registry.org ↗A curated directory of A2A-compatible agents.
a2aagentlist.com ↗The official A2A guide to agent cards, well-known URLs and registries.
a2a-protocol.org ↗A five-part guide to AI agents for business. Parts 3 and 5 cover where agents run and how they reach each other over A2A.
What agents are and what they can do for a business.
Part 1 →Getting started with an agent for your business.
Part 2 →Five places an agent can run, and how to choose.
Part 3 →The agents you can buy in 2026 and how to evaluate them.
Part 4 →From Claude to Microsoft, Google and AWS.
Part 5 →Our agent speaks A2A 0.3, an open protocol for AI agents to find each other and talk. Any agent that can make an HTTPS request can ask it questions, check a website with MachineReady, or pass a message to Dan. Here is everything you need.
New to agents? Learn in four short reads.
Then come back here to connect it. The official A2A docs cover the full protocol.
Every A2A agent publishes a card at a well-known address. Ours is /.well-known/agent-card.json. It names the agent, lists its skills and says where to send messages (url).
POST a JSON-RPC 2.0 request with the method message/send to the card's url, which is /api/a2a. Put your question in a text part.
The answer comes back as a message in result: the text is in result.parts[0].text.
Send the contextId from the reply with your next message, and our agent remembers the conversation.
Positioning, go-to-market, AI-ready websites and Build Marketing's services, with links to the source pages.
Gives a MachineReady link that scores how AI systems and search engines read a website.
Takes a name, email and what the person wants to discuss, and Dan replies by email.
curl -s https://www.buildmarketing.ai/api/a2a \
-H 'content-type: application/json' \
-d '{
"jsonrpc": "2.0", "id": 1, "method": "message/send",
"params": { "message": {
"role": "user", "messageId": "m1",
"parts": [{ "kind": "text", "text": "What does Build Marketing do?" }]
} }
}'
import uuid, requests
URL = "https://www.buildmarketing.ai/api/a2a"
context_id = None
def ask(text):
global context_id
message = {"role": "user", "messageId": str(uuid.uuid4()),
"parts": [{"kind": "text", "text": text}]}
if context_id:
message["contextId"] = context_id # continue the conversation
body = {"jsonrpc": "2.0", "id": 1, "method": "message/send",
"params": {"message": message}}
result = requests.post(URL, json=body, timeout=60).json()["result"]
context_id = result["contextId"]
return result["parts"][0]["text"]
print(ask("What does Build Marketing do?"))
print(ask("How AI-ready is example.com?"))
const URL = 'https://www.buildmarketing.ai/api/a2a';
let contextId;
async function ask(text) {
const message = { role: 'user', messageId: crypto.randomUUID(),
parts: [{ kind: 'text', text }], ...(contextId && { contextId }) };
const res = await fetch(URL, {
method: 'POST', headers: { 'content-type': 'application/json' },
body: JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'message/send', params: { message } }),
});
const { result, error } = await res.json();
if (error) throw new Error(error.message);
contextId = result.contextId; // keep the conversation going
return result.parts[0].text;
}
console.log(await ask('What does Build Marketing do?'));
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"kind": "message",
"role": "agent",
"messageId": "…",
"contextId": "…",
"parts": [{ "kind": "text", "text": "Build Marketing helps B2B companies…" }]
}
}
securitySchemes will say which header to send.message/send. Streaming and long-running tasks aren't offered, so message/stream and tasks/get return an error.To let other agents find yours, publish a card like this at /.well-known/agent-card.json on your own domain, then send our agent to your site with the box at the top of this page to see what it finds.
{
"protocolVersion": "0.3.0",
"name": "Acme Sales Agent",
"description": "Answers questions about Acme's products and pricing.",
"url": "https://www.acme.com/api/a2a",
"preferredTransport": "JSONRPC",
"version": "1.0.0",
"capabilities": { "streaming": false },
"defaultInputModes": ["text/plain"],
"defaultOutputModes": ["text/plain"],
"skills": [{ "id": "pricing", "name": "Pricing questions",
"description": "Explains plans and prices.", "tags": ["pricing"] }]
}
Is the rest of your website ready for AI? Check it with MachineReady.