# For agents: Mexican tax law over MCP, no account

> What an agent can use from Cumplida without signing up: a read-only MCP server with Mexican tax law by version and date and Mexican case law with its validity. The first request that works, the 8 tools, limits and how to cite.

En español: https://cumplida.com/agentes

## What can be used without an account

The open library of Cumplida is an MCP server over HTTP (Streamable HTTP) at https://mcp.cumplida.com/mcp: read-only, free, with no account, no API key and no sign-in. It serves Mexican tax law (laws, regulations, the RMF and its annexes, customs rules, social security, anti-money-laundering, treaties) with each approved version, its DOF publication and its validity, and Mexican case law (SCJN, Plenary and Collegiate courts, TFJA, PRODECON) with its validity and whom it binds. It reads no data from any firm or taxpayer.

- Address: https://mcp.cumplida.com/mcp
- Transport: MCP Streamable HTTP; requests are POST with JSON-RPC 2.0.
- Authentication: none.
- Limits: 20 calls per minute and 400 per day per connection.
- Language: with `Accept-Language: en` (as in the examples below), the server's instructions, tool descriptions and error messages come in English; the legal content stays in Spanish, as published in Mexico.
- Terms of use (in Spanish): https://cumplida.com/legal/biblioteca-abierta

## The first request

Each request below works on its own from a terminal. The `Accept` header must list both `application/json` and `text/event-stream` (without it the server answers 406). The answer comes as `text/event-stream`: the JSON-RPC result is on the `data:` line.

1 · initialize:

```sh
curl -sS https://mcp.cumplida.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Accept-Language: en' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"su-agente","version":"1.0"}}}'
```

2 · tools/list:

```sh
curl -sS https://mcp.cumplida.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Accept-Language: en' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
```

3 · tools/call (leer_disposicion):

```sh
curl -sS https://mcp.cumplida.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Accept-Language: en' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"leer_disposicion","arguments":{"referencia":"CFF 69-B"}}}'
```

The result of `tools/call` carries the readable text in `result.content` and the data in `result.structuredContent`. The answer to `initialize` carries the `Mcp-Session-Id` header: an MCP client sends it back on the following requests (a hosted client, such as claude.ai, needs it so the limit counts per conversation).

## How to add it

- claude.ai and Claude Desktop: Customize › Connectors › Add custom connector, and paste https://mcp.cumplida.com/mcp.
- Claude Code: `claude mcp add --transport http biblioteca-cumplida https://mcp.cumplida.com/mcp`
- Another MCP client: add a remote MCP server (HTTP) with the address https://mcp.cumplida.com/mcp; it requires no authentication.
- The steps for each option: https://cumplida.com/en/claude#biblioteca-abierta

## The 8 tools

- `normativa_vigente` · Law in force on the date of the event. To find the provision in force on a date, by topic or by reference («CFF 46-A», «RMF 2.7.1.21»). (takes `consulta`)
- `leer_disposicion` · Read a provision in full. To read the full text of the version in force on the date of the event, with its DOF publication and validity, before stating anything about it. (takes `referencia o version_id`)
- `que_cambio_en_la_norma` · What changed in the rule. To see what changed in a provision: the version of a date against the previous one, paragraph by paragraph, with the DOF of each and the list of its versions. (takes `referencia`)
- `buscar_jurisprudencia` · Search precedents. To search precedents by topic, in words (SCJN, Plenary and Collegiate courts, TFJA and PRODECON): binding ones first, only those in force. (takes `consulta`)
- `leer_precedente` · Read a precedent. To read a precedent in full by its number or registry («2a./J. 22/98», «registro 2031002»), with its validity, whom it binds and its formal citation, before citing it. (takes `referencia`)
- `precedentes_de_un_articulo` · Precedents on an article. To gather the precedents that apply or interpret an article («CFF 42») and whether the text they interpreted is the one in force on the date of the event. (takes `articulo`)
- `vigencia_de_un_criterio` · Is this criterion still valid?. To know whether a criterion is still valid or was overruled or interrupted, and by which one, before saying so. (takes `referencia`)
- `verificar_citas` · Verify the citations in a text. Before delivering a text that cites theses, judgments or articles: checks each citation against the library and returns its color (green, amber or red), the reason and the corrected formal citation. (takes `texto`)

The current list, with every parameter and examples, is what `tools/list` returns. The server's instructions (in the answer to `initialize`) say which tool to use for what.

## Limits and errors

- 20 calls per minute and 400 per day per connection. On a 429 or a «busy» answer, wait for what `Retry-After` says and retry.
- Lists say how many results there are and how to ask for more (`limite`, `desde`); each error says whether to retry and what to change.
- Queries go by POST: a GET to https://mcp.cumplida.com/mcp answers 405 with the explanation, and https://mcp.cumplida.com/ is the connector's own short guide.
- Use is free, and queries are logged without personal data to improve the library.

## How to cite

Cite «Cumplida · cumplida.com» with the link of the result and the date of the query. Each answer carries its formal citation, the official source (DOF, SJF) and the validity. Read the full text before stating anything about it, and run `verificar_citas` before citing a thesis or an article.

## With an account: Magda in the firm's Claude

With the firm's account, a second MCP server (https://app.cumplida.com/api/mcp, OAuth per person) gives Magda each person's portfolio, figures and cases, with their role; it reads and proposes, and nothing there files, signs or pays. How to connect it: https://cumplida.com/en/claude#con-su-cuenta

## Machine-readable

- [This page in Markdown](https://cumplida.com/en/agents.md)
- [The connector's own guide](https://mcp.cumplida.com/)
- [llms.txt in English](https://cumplida.com/en/llms.txt)
- [API catalog (RFC 9727)](https://cumplida.com/.well-known/api-catalog)
- [MCP registry entry com.cumplida/biblioteca](https://registry.modelcontextprotocol.io/v0/servers/com.cumplida%2Fbiblioteca/versions/latest)
- [Terms of use of the open library (in Spanish)](https://cumplida.com/legal/biblioteca-abierta)
