# Developers · edugalbs.com

URL: https://www.edugalbs.com/developers

> The edugalbs.com API and MCP server: search and read Eduardo Galbiati's site from code or an AI agent. Quickstart, endpoints, rate limits, errors and versioning. Public, read-only, no API key.

Developers

## Build on edugalbs.com

Everything Eduardo Galbiati publishes here (his profile, the Factory diary and the blog on technology and leadership) can be searched and read from code or an AI agent, over a REST API or an MCP server. Public, read-only, free, and no API key.

### Quickstart

Search the site:

```
curl "https://www.edugalbs.com/api/v1/search?q=12-factor+agents&limit=3"
```

Read one of the results in full, as Markdown:

```
curl "https://www.edugalbs.com/api/v1/pages?url=/blog/12-factor-agents"
```

Or add the MCP server to an agent. In Claude Code:

```
claude mcp add --transport http edugalbs https://www.edugalbs.com/api/mcp
```

Any client that speaks MCP over Streamable HTTP works with the same URL. Any page of the site is also available as Markdown: add `.md` to its address or ask for it with `Accept: text/markdown`.

### Endpoints

All are `GET`, answer JSON and take `lang=pt|en` where it applies. The full description is the [OpenAPI 3.1 document](https://www.edugalbs.com/openapi.json).

| Endpoint | What it returns |
| --- | --- |
| `/api/v1` | The list of endpoints. |
| `/api/v1/search?q=` | The best matching sections of every page, with a snippet and the page URL (`section=all|diary|blog|profile`, `limit=1–10`). |
| `/api/v1/pages?url=` | A page as Markdown, with its title and summary; read long pages in parts with `offset` and `max_chars`. |
| `/api/v1/chapters` | The chapters of the Factory diary, in order. |
| `/api/v1/posts` | The blog posts, newest first. |
| `/api/v1/profile` | The profile Eduardo wrote for AI assistants. |
| `POST /api/mcp` | The MCP server (JSON-RPC 2.0): tools `search_site`, `get_page`, `list_diary_chapters`, `list_blog_posts`, `get_profile`. |

### API keys and sandbox

There are no API keys and nothing to sign up for: every endpoint is public. The API only reads what is already published, so there is no separate sandbox: production is safe to experiment with, and nothing you send can change the site. Scheduled chapters and posts stay out of it until their publication time.

### Rate limits

60 requests a minute per client address, shared by the REST API and the MCP server. Every answer says where you stand, with the RateLimit headers of the IETF draft and the fields of its earlier versions:

```
RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=59;t=60
RateLimit-Limit: 60
RateLimit-Remaining: 59
RateLimit-Reset: 60
```

Beyond the limit the answer is `429` with `Retry-After`, the seconds to wait.

### Errors

Every error under `/api/` is JSON with the HTTP status, a code to branch on, a message and a hint on what to do:

```
{ "error": { "status": 400, "code": "missing_parameter",
  "message": "The parameter \"q\" is required.",
  "hint": "Add ?q=… : What to look for.",
  "docs": "https://www.edugalbs.com/openapi.json" } }
```

The codes: `not_found`, `unsupported_version`, `method_not_allowed`, `missing_parameter`, `invalid_parameter`, `page_not_found`, `rate_limited` and `unavailable`. The MCP server answers JSON-RPC errors. A page that does not exist is a `404` in Markdown when you ask for `text/markdown`.

### Versioning and deprecation

-   The major version is in the path: `/api/v1/`. `/api/<endpoint>`, without a version, is an alias of v1 and stays one.
-   Additions (new endpoints, parameters or fields) come within v1 and only bump `info.version` in the OpenAPI document. Clients should ignore fields they do not know.
-   Anything that would break a client comes as `/api/v2/`. v1 then keeps working for at least 6 months, and its answers announce it with the `Deprecation` (RFC 9745) and `Sunset` (RFC 8594) headers and a `Link` to this section with `rel="deprecation"`.
-   The MCP server negotiates its protocol version in `initialize`, and its tools follow the same rule.

### Machine-readable files

-   [/openapi.json](https://www.edugalbs.com/openapi.json): the API, in OpenAPI 3.1.
-   [/.well-known/mcp/server-card.json](https://www.edugalbs.com/.well-known/mcp/server-card.json): the MCP server's card.
-   [/.well-known/api-catalog](https://www.edugalbs.com/.well-known/api-catalog): the API catalog (RFC 9727).
-   [/.well-known/agent-skills/index.json](https://www.edugalbs.com/.well-known/agent-skills/index.json): agent skills to introduce Eduardo, read the diary and search the site.
-   [/llms.txt](https://www.edugalbs.com/llms.txt) and [/llms-full.txt](https://www.edugalbs.com/llms-full.txt): the guide to the site and its full text, as Markdown.
-   [/sitemap.xml](https://www.edugalbs.com/sitemap.xml) and [/robots.txt](https://www.edugalbs.com/robots.txt), which declares the content may be used for search, AI answers and AI training.

Questions or a bug? Write to [eduardo.galbiati@gmail.com](mailto:eduardo.galbiati@gmail.com) (see [contact](https://www.edugalbs.com/contact) and [privacy](https://www.edugalbs.com/privacy)).

Updated on October 29, 2026.
