---
title: "Developers - Carlos Garavito"
description: "Public read-only JSON API, OpenAPI document and remote MCP server for the content of cgaravito.dev: posts, projects and profile."
canonical_url: "https://cgaravito.dev/en/developers"
last_updated: "2026-09-10T00:00:00.000Z"
locale: "en"
---

# Developers

Everything on this site is available to programs: a read-only JSON API under /api/v1, an OpenAPI 3.1 document, and a remote MCP server that exposes the same data as tools and resources. No API key, no sign-up.

- OpenAPI: https://cgaravito.dev/openapi.json
- MCP: https://cgaravito.dev/mcp

## Endpoints

| Method | Path | Summary | Parameters |
| --- | --- | --- | --- |
| GET | `/api/v1/health` | API status | - |
| GET | `/api/v1/posts` | List published posts | locale, limit, cursor |
| GET | `/api/v1/posts/{locale}/{slug}` | Read one post with its Markdown body | locale, slug |
| GET | `/api/v1/projects` | List projects | locale |
| GET | `/api/v1/profile` | Read the profile | locale |

## Examples

```bash
curl "https://cgaravito.dev/api/v1/posts?locale=en&limit=5"
```

```bash
curl https://cgaravito.dev/api/v1/posts/en/{slug}
```

```bash
curl https://cgaravito.dev/openapi.json
```

## MCP server

The MCP server runs at /mcp over Streamable HTTP, stateless and without authentication. It exposes the tools list_posts, get_post, list_projects and get_profile, plus the resources cgaravito://llms.txt, cgaravito://profile/{locale} and cgaravito://posts/{locale}/{slug}.

**Claude Code**

```bash
claude mcp add --transport http cgaravito-dev https://cgaravito.dev/mcp
```

**Codex**

```bash
codex mcp add cgaravito-dev --url https://cgaravito.dev/mcp
```

**mcp.json**

```json
{
  "mcpServers": {
    "cgaravito-dev": {
      "type": "http",
      "url": "https://cgaravito.dev/mcp"
    }
  }
}
```

## Sandbox

Every endpoint is read-only, there is no write surface, so production is safe to call. There is no separate sandbox because nothing can be mutated.

## Errors and limits

Errors are RFC 9457 problem documents with a type URI under https://cgaravito.dev/api/errors/. Rate limiting is advisory: every response carries the X-RateLimit-Limit and X-RateLimit-Remaining headers together with the RateLimit-Policy and RateLimit fields of draft-ietf-httpapi-ratelimit-headers.

## Versioning and deprecation

The deprecation policy for this API: the path prefix /api/v1 is stable, and breaking changes ship under a new prefix. When a prefix is deprecated it keeps answering for at least 90 days, and the API announces the removal date with Deprecation (RFC 9745) and Sunset (RFC 8594) headers.

[Read the full policy](https://cgaravito.dev/en/developers/versioning)
