Every AgentEnvoy meeting link doubles as a Model Context Protocol endpoint. If you’ve been sent one, hand it to your AI assistant and it can negotiate the time, pick a slot that works, and book it — on the same scoring engine the host uses themselves.
The fastest way to see this work is to point Claude at a meeting URL you’ve been given and ask it to find you a time.
Add AgentEnvoy as an MCP server once, then any meeting URL you paste into a conversation becomes actionable:
claude mcp add --transport http agentenvoy https://agentenvoy.ai/api/mcpThen, in a Claude Code session:
I got this invite: https://agentenvoy.ai/meet/abc123
Can you find me a time next Tuesday or Wednesday afternoon
and book it? My name is Alex, email alex@example.com.Open Settings → Developer → Edit Config and add:
{
"mcpServers": {
"agentenvoy": {
"transport": { "type": "http" },
"url": "https://agentenvoy.ai/api/mcp"
}
}
}Restart Claude Desktop; the eight MCP tools appear under the tools affordance.
The discovery manifest is at /.well-known/mcp.json. Transport: streamable HTTP. No auth token to install — the meeting URL itself is the bearer.
Most scheduling tools give AI agents a stripped-down read-only view of availability. AgentEnvoy doesn’t. Your agent gets the same scored, filtered slot list the host’s own dashboard uses — including the host’s preferences, office hours, priority tiers, and soft / hard conflict rules.
When your agent proposes a time, it flows through the same confirmation pipeline as the web UI: compare-and-swap on the session row, atomic calendar write, email dispatch. No “I tried to book but actually someone else got it” race.
And because every tool call lands in an observability log, the host can see exactly what your agent asked for and why — building the trust surface that makes agent-to-agent negotiation work.
You’re the intended second audience for this page. Here’s what you need:
/api/mcp (streamable HTTP, stateless).meetingUrl argument. Possession of the URL is authorization — there is no separate token exchange.get_meeting_parametersRead the state envelope for every negotiable parameter on this meeting link.get_availabilityRead the host's scored, filtered slot list. Pass busyWindows (UTC start/end pairs from your own calendar) to get back only mutually open times. Response includes slotsThrough (furthest date the host offered time) — if slots is empty, the host didn't offer time in this window; the response hint will include their email address to contact directly.get_session_statusRead the current lifecycle state of a negotiation session (active / agreed / cancelled / rescheduled / expired) plus reschedule history and pending consent requests.post_messagePost a message to the deal-room thread as role=external_agent. Streams the Host Envoy's reply.propose_parametersPropose values for one or more negotiable parameters. Returns per-field results so one rejection does not kill the batch.propose_lockThe handshake. Validate, CAS active→agreed, dispatch calendar + emails, post the confirmation announcement.cancel_meetingCAS agreed→cancelled. Deletes the GCal event, dispatches cancellation emails, posts the cancellation announcement.reschedule_meetingIn-place calendar.events.patch on the agreed event. Preserves iCalUID. Appends to rescheduleHistory, posts the reschedule announcement.lock_activity_locationLock the activity and/or location of a coordinating session on behalf of the guest. Mirrors the host-Envoy dialog action; server-side handler is shared. Format may be derived from the activity (e.g. coffee → in-person) and is validated against the host's downgrade ladder unless the activity is one of the host's pre-approved options.get_tipRead the contextual tip for a meeting link. Returns the highest-priority authored or derived tip that applies to this meeting, or null when no tip is available. AP5b: templateId and sourceKind are role-invariant.get_event_summaryRead a consolidated summary of the event: lifecycle status, agreed time/format, channel details (Design X signals — renderer composes copy), participants, series metadata, and GCal event URL.The fastest way to reach me is the same way the product works — grab a slot on my calendar. Your agent is welcome to negotiate one on your behalf, or you can pick one yourself.
📅Book 5 min with John →