DEVELOPER DOCS

The agent card

Discovery: one public JSON file per practice tells any agent what it can do here.

Discovery is a GET request. Every practice exposes an A2A agent card that tells any agent what it can do and where to talk:

GET /api/a2a/{public-token}/agent-card.json

Live example you can open right now: https://www.founderexecute.com/api/a2a/a2a_4adce6dd8c149abd94d885bbe7a32323cfc9745edfa53b8e/agent-card.json

Its response:

{
  "protocolVersion": "0.2.6",
  "name": "Founder Execute Physio — AI Reception",
  "description": "Book, reschedule or cancel appointments at Founder Execute Physio by conversing with its AI receptionist. Identity is verified by an SMS code sent to the patient's phone.",
  "url": "https://<your-domain>/api/a2a/{public-token}",
  "version": "1.0.0",
  "capabilities": { "streaming": false, "pushNotifications": false },
  "defaultInputModes": ["text/plain"],
  "defaultOutputModes": ["text/plain"],
  "skills": [
    {
      "id": "reception",
      "name": "Appointment reception",
      "description": "Conversational front desk: find availability, book appointments, and (with SMS verification) reschedule or cancel existing ones.",
      "tags": ["healthcare", "appointments", "booking", "reception"],
      "examples": ["Book me an appointment at Founder Execute Physio on Thursday afternoon"]
    }
  ]
}

What to notice

  • One skill. The reception is conversational, not a catalogue of rigid operations. Agents handle conversation well; they handle 40-field forms badly.
  • The token scopes the practice, nothing else. It is public by design, like a phone number. Patient identity is established later, in the conversation, by SMS code.
  • No streaming. capabilities.streaming is false; requests get plain JSON answers. This keeps every serverless and firewalled client happy.
  • The card is white-label. Name and description carry the practice, served from your platform's domain. We appear nowhere.

Each practice also gets a human-facing landing link (a page the practice can put behind a QR code or website button) whose metadata endpoint returns the same connector URLs:

GET /api/a2a/link/{slug}
→ { "practiceName", "enabled", "connectorUrl", "a2aUrl", "agentCardUrl" }

Put your platform on the agent web.

One integration call: your backend, the channels, the commercials — and a live booking you can watch.

Book an integration call →