# Gabo Esquivel MCP and Site API — developer documentation

Canonical: https://gaboesquivel.com/docs

The Gabo Esquivel MCP server is how another agent reaches the same site agent as [/ask](https://gaboesquivel.com/ask): ask about published work on gaboesquivel.com, leave a note, or request a 15- or 30-minute call. Humans can use the chat UI; MCP clients delegate durable work over Streamable HTTP.

## Gabo Esquivel MCP developer resources

Canonical documentation lives at [gaboesquivel.com/docs](https://gaboesquivel.com/docs). Predictable aliases: [/developers](https://gaboesquivel.com/developers), [/mcp/docs](https://gaboesquivel.com/mcp/docs). The Streamable HTTP server is at [gaboesquivel.com/mcp](https://gaboesquivel.com/mcp). For read-only JSON (profile and Markdown page exports), use the [Gabo Esquivel Site API](https://gaboesquivel.com/openapi.json) OpenAPI description at [/openapi.json](https://gaboesquivel.com/openapi.json). Task execution is not on that REST surface — use the MCP agent_* tools documented below. For a plain-text corpus index, use [llms.txt](https://gaboesquivel.com/llms.txt).

## Gabo Esquivel MCP server endpoint

Connect a Streamable HTTP MCP client to [](https://gaboesquivel.com/mcp). The route registers GET, POST, and DELETE. Access rules and invocation-id handling are under Gabo Esquivel MCP authentication below.

## Gabo Esquivel MCP invocation protocol

The channel exposes four MCP tools. Start with agent_start and a message string (up to 64 KiB UTF-8). It returns an invocation id immediately; work continues after the HTTP response. Poll with agent_get and invocationId until the status is terminal. While status is working, wait at least pollAfterMs before polling again.

Status values: working, input_required, authorization_required, completed, failed, cancelled. Use agent_update only when status is input_required, sending the full answer batch in responses. agent_cancel requests cooperative cancellation; keep polling agent_get until the invocation reaches a terminal state.

Rejected tool calls use isError: true with structuredContent.error codes: invalid_input, not_found, conflict (retryable), internal. A failed invocation status means the call succeeded but the task failed — handle that separately from a rejected call.

agent_start is not idempotent. If the response is lost, there is no id to poll; a second start begins a second task. The whole MCP request body is limited to 1 MiB.

## Published tools on /mcp

The channel also publishes cv, a read-only tool that returns PDF and HTML links for the CV variants ( full, ai, web3, fullstack ). Call it with tools/call or let agent_start handle a CV request. Direct cv calls do not count toward message limits.

For MCP Apps hosts (ChatGPT and similar), connect a separate Streamable HTTP server at [](https://gaboesquivel.com/mcp/cv). It exposes the same cv tool with a UI resource that renders a download card.

## What a message can do

The site agent answers from the published corpus (same retrieval as the chat). It can also book a call or send email through internal tools that are not published on the MCP surface: list_slots, book, and send. On this channel those tools do not wait for browser approval.

A note needs a name, an email, and what you want to discuss (10–5000 characters). The site emails contact@gaboesquivel.com with your address as reply-to; it does not send you a receipt. A booking needs name, email, 15- or 30-minute duration, an ISO start time, a time zone, and what you want to discuss. Open weekday slots are 9:00–17:00 America/Denver. When two bookings are already on the calendar for that Denver day, the agent points to [gaboesquivel.com/cal](https://gaboesquivel.com/cal).

Hire terms and human-facing context live on [/ask](https://gaboesquivel.com/ask). Data handling for chat, notes, and bookings is in [/privacy](https://gaboesquivel.com/privacy).

## Public limits

Limits reset on America/Denver calendar days: 30 messages per IP, 5 notes per email and per IP, 2 bookings site-wide. Do not send passwords, payment card numbers, or other secrets through the agent.

## Gabo Esquivel MCP authentication

Access is public: no API key, no OAuth, and no scoped credentials. Every caller shares the anonymous principal. An invocation id is a bearer capability until workflow retention expires — keep invocation ids out of logs and public URLs.

## Not offered on Gabo Esquivel MCP

There is no separate write API, webhooks, API-key authentication, or OAuth scopes for this endpoint. Booking and note tools ( list_slots, book, send ) and skills are not published on /mcp — only agent_* and cv. For a plain-text index of site facts, use [llms.txt](https://gaboesquivel.com/llms.txt).