Agents
An Agent in Agent Explorer is a connection to a single A2A agent (real or mock) and holds all conversations, logs, and configuration for that agent. The terms "Agent" and "project" appear interchangeably in some older docs and in the API path /api/projects — internally an Agent is a Project record, but the UI and the rest of these docs call them Agents.

Creating an Agent
- Sign in and you'll land on the Explorer page.
- Click Add New (top right) → Agent.
- The creation dialog opens with three paths:
- Connect to an existing agent — paste a base URL; the AgentCard is fetched and validated automatically.
- Upload an AgentCard file — drop a JSON file; useful when the agent isn't network-reachable from the browser.
- Create a mock agent — name it and pick the mock endpoint versions; a configurable mock A2A server is provisioned.
- After the URL/file paths you can choose Connect to this agent (real) or Mock this agent (cloned mock you can edit).
When connecting to a real agent, the protocol version is read from the AgentCard itself — the dialog shows the detected version (e.g. Detected from agent card: v0.3) and there is nothing to choose. Version selection only appears when mocking: the Mock endpoint versions picker controls which versioned endpoints your mock will expose, and it pre-selects whatever the imported card declares.
Agent Types
Agents are visually differentiated in the Agents column of the Explorer:
| Type | Icon | Description |
|---|---|---|
| External Agent | Globe icon | Connects to a real A2A agent |
| Mock Agent | Flask icon | Powered by a configurable mock agent |
Mock Agents display an amber Mock badge.
Agent Detail Page
Selecting an agent opens its detail page with a vertical tab sidebar:
| Tab | Description |
|---|---|
| Agent Card | AgentCard details and validation status |
| Configuration | Name, URL, headers, ownership, and (for mocks) skills, response behaviour, API keys |
| Chat | Send A2A messages and watch task state in real time |
| Flows (mocks only) | Visual node-based response logic, per skill |
| Webhooks (mocks only) | Push-notification subscriptions and delivery log |
| Integrate | Code snippets for cURL, Python, TypeScript |
| Test Harness | Export a Postman collection |
| Logs (link at bottom of sidebar) | Full request/response history |
Agent URL Format
Enter the agent's base URL without the AgentCard path:
| Correct | Incorrect |
|---|---|
https://agent.example.com | https://agent.example.com/.well-known/agent-card.json |
http://localhost:3000/api/mock-agent | http://localhost:3000/api/mock-agent/message/send |
When the fetched AgentCard declares supportedInterfaces, Agent Explorer sends A2A requests to the matching JSONRPC interface URL — preferring the entry whose protocolVersion matches your selected protocol version — rather than the base URL you entered. If the card declares no usable interface, it falls back to the card's legacy top-level url, and finally to the base URL you entered. For A2A 1.0 agents that declare no JSONRPC interface at all, Explorer falls back to an HTTP+JSON (REST) interface when one is declared — REST requests use the spec paths (POST /message:send, GET /tasks/{id}, …) with Content-Type: application/a2a+json.
When an agent rejects a request with a version-related error — VersionNotSupportedError (-32009) or method-not-found (-32601) — the chat shows a banner offering a one-click switch to the other protocol version. Other A2A protocol errors appear inline in the conversation, prefixed with their spec error name (e.g. Error [TaskNotFoundError]: …).
Streaming
When an agent declares capabilities.streaming in its AgentCard, the chat streams responses live: a Stream toggle appears next to the settings-bar chips (on by default), and agent output renders incrementally as it arrives — artifact chunks append to a live bubble and task-status updates drive the status chip in real time. Under the hood Agent Explorer speaks the version-correct wire method (SendStreamingMessage on v1.0, message/stream on v0.3) and normalizes both dialects' SSE frames server-side, so the browser always consumes one stable event format. If a streaming attempt fails before any events arrive, the message is retried automatically as a regular blocking send; if the connection drops mid-task, Explorer resubscribes to the task once (SubscribeToTask / tasks/resubscribe) to pick up the final state. Mock agents stream genuinely incremental frames, making them a realistic test bed for streaming clients.
Agent Actions
- Refresh AgentCard — Re-fetch the AgentCard (useful after agent config changes)
- Delete Agent — Permanently removes the agent, all conversations, logs, and cached AgentCard
Ownership
Agents can be personal (owned by you) or team-owned (shared with team members). The owner is shown as a badge on each agent card.
Managing Multiple Agents
Create a separate agent for each A2A endpoint you want to test. Group related ones into a Workspace for organisation (optional).