# Documentation for AI agents

Every page of this documentation is available in a machine-readable form. If you build an AI agent, a retrieval pipeline, or an internal assistant that answers questions about MONEI, use these endpoints instead of scraping the rendered HTML.

## What is available[​](#overview "Direct link to What is available")

| Resource             | URL                                        | Format                  |
| -------------------- | ------------------------------------------ | ----------------------- |
| Page index           | `https://docs.monei.com/llms.txt`          | Markdown                |
| Any page as Markdown | `https://docs.monei.com/<path>.md`         | Markdown                |
| Markdown negotiation | `Accept: text/markdown` on any page URL    | Markdown                |
| MCP server           | See [MCP server](#mcp)                     | MCP                     |
| Search API           | `https://docs-search.monei.com`            | JSON                    |
| Canonical URL list   | `https://docs.monei.com/sitemap.xml`       | XML                     |
| REST API spec        | `https://js.monei.com/api/v1/openapi.json` | OpenAPI 3               |
| GraphQL schema       | `https://graphql.monei.com/`               | GraphQL (introspection) |
| Postman collection   | `https://postman.monei.com/`               | Postman                 |

## Read any page as Markdown[​](#markdown "Direct link to Read any page as Markdown")

Drop the trailing slash from a documentation URL and append `.md`. You get the page content without navigation, scripts, or layout markup:

```
curl https://docs.monei.com/payments/refunds.md
```

Spanish pages work the same way under the `/es/` prefix:

```
curl https://docs.monei.com/es/payments/refunds.md
```

`https://docs.monei.com/llms.txt` lists every page with its title, description, and Markdown URL, grouped by section. Start there when you want to walk the whole corpus.

You can also ask for it by content negotiation, without changing the URL. Send `Accept: text/markdown` to any documentation URL and you get that page's Markdown; the response carries `Vary: Accept`:

```
curl -H "Accept: text/markdown" https://docs.monei.com/payments/refunds/
```

tip

The `.md` URL and the `Accept` header are equivalent — use whichever your client makes easier. Anything already carrying an extension, such as `/llms.txt` or `/sitemap.xml`, is served as-is either way.

## MCP server[​](#mcp "Direct link to MCP server")

The documentation index is published as a hosted [Model Context Protocol](https://modelcontextprotocol.io) server. Point an MCP client at this URL — there is no key to obtain, no account to create, and nothing to install:

```
https://docs-mcp.monei.com/mcp
```

### Add it to your client[​](#mcp-setup "Direct link to Add it to your client")

* Claude Code
* Claude Desktop
* Cursor
* VS Code
* Other clients

```
claude mcp add --transport http monei-docs https://docs-mcp.monei.com/mcp
```

Check it registered with `claude mcp list`.

Open **Settings → Connectors → Add custom connector**, then paste the URL:

```
https://docs-mcp.monei.com/mcp
```

Leave the authentication fields empty — the server does not use them.

Add to `~/.cursor/mcp.json` for every project, or `.cursor/mcp.json` for one:

```
{

  "mcpServers": {

    "monei-docs": {

      "url": "https://docs-mcp.monei.com/mcp"

    }

  }

}
```

Add to `.vscode/mcp.json` in your workspace. Note VS Code uses `servers`, not `mcpServers`:

```
{

  "servers": {

    "monei-docs": {

      "type": "http",

      "url": "https://docs-mcp.monei.com/mcp"

    }

  }

}
```

Most clients read this shape. The transport is streamable HTTP, so no command or arguments are needed:

```
{

  "mcpServers": {

    "monei-docs": {

      "type": "http",

      "url": "https://docs-mcp.monei.com/mcp"

    }

  }

}
```

Once connected, ask your agent something the docs answer — "how do I refund a payment with MONEI?" or "which payment methods support pre-authorization?" — and it will search these pages instead of guessing.

It exposes two tools:

| Tool                              | What it does                                                 |
| --------------------------------- | ------------------------------------------------------------ |
| `algolia_search_index_monei`      | Search the documentation. Same index as the site's search.   |
| `algolia_search_for_facet_values` | List the values of a facet, such as `lang` or `record_type`. |

Results are the same DocSearch records described under [Response shape](#search-response), so each hit carries the section anchor to cite and a `url` whose Markdown twin you can fetch (drop the `#anchor` and the trailing slash, then append `.md`).

info

The server is read-only — it can search the documentation and nothing else. It reaches no MONEI account, payment, or customer data.

## Search the documentation[​](#search "Direct link to Search the documentation")

The documentation index is served by Algolia DocSearch. Query it over HTTP with no credentials — the search key is attached for you at the edge:

| Parameter  | Value                           |
| ---------- | ------------------------------- |
| Endpoint   | `https://docs-search.monei.com` |
| Index name | `monei`                         |

The request and response format is Algolia's, so any Algolia client works if you point it at this host.

* cURL
* JavaScript
* Python

```
curl -G "https://docs-search.monei.com/1/indexes/monei" \

  --data-urlencode "query=refund a payment" \

  --data-urlencode "filters=lang:en AND record_type:docs" \

  --data-urlencode "hitsPerPage=5" \

  --data-urlencode "attributesToRetrieve=url,hierarchy,content"
```

```
const params = new URLSearchParams({

  query: 'refund a payment',

  filters: 'lang:en AND record_type:docs',

  hitsPerPage: '5',

  attributesToRetrieve: 'url,hierarchy,content'

});



const response = await fetch(`https://docs-search.monei.com/1/indexes/monei?${params}`);



const {hits} = await response.json();
```

```
import requests



response = requests.get(

    "https://docs-search.monei.com/1/indexes/monei",

    params={

        "query": "refund a payment",

        "filters": "lang:en AND record_type:docs",

        "hitsPerPage": 5,

        "attributesToRetrieve": "url,hierarchy,content",

    },

)



hits = response.json()["hits"]
```

### Filters[​](#search-filters "Direct link to Filters")

Combine these attributes in the `filters` parameter to narrow a query:

| Attribute     | Values                   | Use it to                                     |
| ------------- | ------------------------ | --------------------------------------------- |
| `lang`        | `en`, `es`               | Return one language instead of both.          |
| `record_type` | `docs`, `api`            | Separate guides from generated API reference. |
| `type`        | `content`, `lvl1`–`lvl6` | Prefer body text over heading-only records.   |

### Response shape[​](#search-response "Direct link to Response shape")

Each hit is a DocSearch record: a section of a page, not a whole page.

* `url` — the canonical URL, with the anchor of the matching section. To fetch the Markdown, drop the `#anchor` first, then the trailing slash, then append `.md`: `/payments/refunds/#timing` becomes `/payments/refunds.md`. Appending `.md` to the whole URL yields `#timing.md`, which is just a fragment and still requests the HTML page.
* `hierarchy.lvl0`–`lvl6` — the heading path, from the section down to the matched heading.
* `content` — the body text of the section, or `null` when the record is a heading.

Because every hit carries a section anchor, cite the exact section (`/payments/refunds/#timing`) rather than pointing a reader at the whole page.

warning

Search is read-only and shared by everyone using these docs. Cache what you retrieve, and do not use search to mirror the corpus — `llms.txt` and the `.md` URLs exist for bulk reading.

## API specifications[​](#specs "Direct link to API specifications")

* **OpenAPI** — `https://js.monei.com/api/v1/openapi.json` describes every REST endpoint, request body, and response schema. It is the source for the [REST API reference](https://docs.monei.com/apis/rest/.md).
* **GraphQL** — `https://graphql.monei.com/` accepts standard introspection queries. See the [GraphQL API reference](https://docs.monei.com/apis/graphql/.md) and [MONEI Connect](https://docs.monei.com/monei-connect/.md) for who it is for.
* **Postman** — `https://postman.monei.com/` is a prebuilt collection for trying the REST API.

To call either API you need an API key from your [MONEI Dashboard](https://dashboard.monei.com). Use a test key while you build — see [Test and go live](https://docs.monei.com/testing/.md).

## Crawling[​](#crawling "Direct link to Crawling")

`https://docs.monei.com/robots.txt` allows every crawler, including GPTBot, ClaudeBot, Google-Extended, PerplexityBot, and Amazonbot. Nonexistent paths return a real HTTP 404, so you can trust a 404 to mean the page does not exist.

## Common questions[​](#common-questions "Direct link to Common questions")

### Should I use the MCP server or the search API?[​](#mcp-or-api "Direct link to Should I use the MCP server or the search API?")

Use the [MCP server](#mcp) if your client speaks MCP — it needs no credentials and no code. Use the [search API](#search) when you are writing your own retrieval pipeline and want direct control over filters and pagination. Both query the same index.

### Do I need an API key to search?[​](#key-public "Direct link to Do I need an API key to search?")

No. `docs-search.monei.com` attaches a search-only key at the edge, so your client sends nothing. It queries the documentation index and nothing else — it grants no access to your MONEI account.

### Which URL should an agent cite?[​](#cite "Direct link to Which URL should an agent cite?")

Cite the HTML URL, including the section anchor — it is the canonical address a human can open. To read that page as Markdown, strip the anchor and the trailing slash first, then append `.md`.
