# Developers

Mdexa is a database of biomedical datasets that AI agents and applications can call directly over MCP or an HTTP API to find medical data and check license terms with quoted evidence.

## MCP

Endpoint `https://mcp.mdexa.com/mcp` · Streamable HTTP. Light use needs no account.

```
{ "mcpServers": { "mdexa": { "url": "https://mcp.mdexa.com/mcp" } } }
```

- `search_datasets` Search datasets
- `get_card` Get dataset card
- `get_license_evidence` Get license evidence
- `list_facets` List categories and filter values
- `get_overview` What Mdexa is and what it is worth
- `get_access` Get access method
- `find_similar_datasets` Find similar datasets
- `batch_check` Check a list of datasets
- `check_changes` What changed in a list of datasets
- `request_dataset` Ask for a dataset to be added or verified
- `search_content` Search dataset content (not open yet)

## HTTP API

Light use needs no key. A free-account key raises the limit, shows your calls and enables list check. Send it as `Authorization: Bearer <key>`. [Create a key](https://mdexa.com/dashboard/#keys)

```
curl "https://mcp.mdexa.com/v1/datasets?content_type=benchmark-exam&language=zh&limit=2"
```

- `GET /v1/datasets`
- `GET /v1/datasets/{slug}`
- `GET /v1/datasets/{slug}/evidence`
- `GET /v1/datasets/{slug}/similar`
- `GET /v1/datasets/{slug}/access`
- `GET /v1/facets`
- `GET /v1/stats`
- `GET /v1/changelog`
- `GET /v1/overview`
- `GET /v1/content/search`
- `POST /v1/batch-check`
- `POST /v1/keys`
- `GET /v1/usage/summary`
- `GET /v1/admin/metrics`
- `GET /v1/tools`

A key carries scopes: datasets, content search, list check (the model service is reserved). A call outside them returns 403 scope_denied; on MCP, error 4030.

## Files

- [What we tell agents](https://mdexa.com/agents/)
- [agents.md](https://mdexa.com/agents.md)
- [llms.txt](https://mdexa.com/llms.txt)
- [catalog.json](https://mdexa.com/catalog.json)
- [changelog.json](https://mdexa.com/changelog.json)
- [feed.xml](https://mdexa.com/feed.xml)

## Call definition

A call is one machine read of the Mdexa database content: one request to a data endpoint of the HTTP API, one MCP tool call that queries the database (search_datasets, get_card, get_license_evidence, list_facets, get_access, find_similar_datasets, batch_check, check_changes), or one download of a dataset's .json or .md file (including a dataset page fetched with Accept: text/markdown) or of the whole-database file catalog.json. One request counts once. Web pages for people (HTML and their styles, scripts and images), the explanatory files llms.txt, llms-full.txt and agents.md, the sitemap, the feed and robots.txt, sign-in and account requests, session checks, MCP initialize and tools/list, and health checks are not calls and never use the call quota. Only a query that was actually executed counts: a rejected request (invalid parameters, more than 50 slugs, an unknown dataset, a missing or invalid key, a tool that returns an error, or search_content while it is not open) does not use the call quota; rejected requests have their own abuse limit. [FAQ](https://mdexa.com/developers/faq/#call-definition)

Addresses are examples ahead of launch. · [Developer FAQ](https://mdexa.com/developers/faq/)
