Gabo Esquivel MCP and Site API — developer documentation
The Gabo Esquivel MCP server publishes the site's public capability registry over Streamable HTTP: profile, projects, writing, search, CV links, contact context, availability, notes, and bookings. People use the search on the homepage or the contact form.
Gabo Esquivel MCP developer resources
Canonical documentation lives at gaboesquivel.com/docs. Predictable aliases: /developers, /mcp/docs. The Streamable HTTP server is at gaboesquivel.com/mcp. For read-only JSON (profile and Markdown page exports), use the Gabo Esquivel Site API OpenAPI description at /openapi.json. Notes and bookings are not on that REST surface — use the MCP tools below. For a plain-text corpus index, use 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 and answers with JSON. Call tools/list for the input schemas, then tools/call.
Published tools on /mcp
Read tools: get_profile (verified profile and contextual links), contact_gabo (public contact descriptor; it sends nothing but is annotated as a write because it starts the contact flow), get_cv (CV download metadata for the full, ai, web3, and fullstack variants), list_projects (package-owned project records by work type), list_writing (published writing), search_site (deterministic search over the public corpus), and list_availability (open booking slots for a visitor time zone).
Write tools: send_note (email a note to Gabo) and book_call (book a 15- or 30-minute call).
List tools take an optional limit (1–20, default 6) and cursor. search_site takes a query of up to 2000 characters.
Results
Every call returns one text block, a short readable summary followed by the full result as JSON, and the same result as structuredContent with status, message, data, operation, requestId, and version. Read tools report ok, empty, or error. Write tools report pending, confirmed, uncertain, or failed. An error or failed result, and any call with invalid arguments such as a bad cursor, also sets isError: true and leads with a plain explanation.
tools/list gives each tool a readable title, a description for every input, an outputSchema for the result, and annotations. Read tools set readOnlyHint: true. book_call, send_note, and contact_gabo set readOnlyHint: false so hosts confirm before calling them. book_call and send_note also set destructiveHint: true because they create a calendar event or send an email. Transport errors such as a missing Accept type (406) or malformed JSON (400) answer with a JSON-RPC error body.
Write tools require a retryIdentity (8–128 characters). Repeating a call with the same identity and payload replays the original outcome instead of sending or booking twice; the same identity with a changed payload fails.
What notes and bookings do
A note needs a name, an email, and a description of 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 a description. Use list_availability first. Open weekday slots are 9:00–17:00 America/Denver. When two bookings are already on the calendar for that Denver day, use gaboesquivel.com/cal.
Hire terms live on /contact. Data handling for notes and bookings is in /privacy.
Public limits
Limits reset on America/Denver calendar days: 5 notes per email and per IP, 2 bookings site-wide. Do not send passwords, payment card numbers, or other secrets through these tools.
Gabo Esquivel MCP authentication
Access is public: no API key, no OAuth, and no scoped credentials. Every caller shares the anonymous principal.
Not offered on Gabo Esquivel MCP
There are no webhooks, API-key authentication, or OAuth scopes, and no conversational agent tool: callers compose the published tools themselves. The former CV app endpoint at /mcp/cv is retired and returns 410; use get_cv on /mcp. For a plain-text index of site facts, use llms.txt.