# Access, grants and limits

Access needs an Elixir account that an administrator has approved; there is no anonymous access. Grants on the account decide which of the 28 tools it sees. Charged tools draw on a daily allowance, and every response is capped at 50 rows (as of 2026-10-04).

**At a glance**

| Item | Value |
| --- | --- |
| Account | An Elixir account that an administrator has approved |
| Anonymous access | None |
| Grants defined | 4 |
| Open to every signed-in account | 2: `list_capabilities` and `list_material_sources` |
| Charged tools | 3: `compute_pourbaix_stability`, `count_materials` and `search_materials` |
| Daily allowance (default) | 200 charged calls per day |
| Allowance window | one calendar day, counted on the server host's local date (the counter keys on the host's date.today()); the refusal message gives a reset time of midnight labelled UTC after that date, so the two agree only where the host runs in UTC |
| Most rows in one response | 50 rows |
| Data as of | 2026-10-04 |
| Server release | 1.5.0, read from the live server on 2026-10-04 |

## Who can use the connector, and how do I get access?

Only people with an Elixir account that an administrator has approved can use the connector. Signing in is the only way in; there is no anonymous access.

To ask for an account, open the [Elixir sign-in page](https://elixir.chemiadiscovery.com/login) and use its sign-up option. An administrator approves each account.

## What is a grant, and which tools does each unlock?

The server's rule: A caller needs any one of the grants listed for a tool. A tool with no grants listed is open to every authenticated caller. A tool the caller was not granted is hidden from tools/list and refused if called.

**Grants (as of 2026-10-04)**

| Grant | What it does | Tools |
| --- | --- | --- |
| `materials_project_data` | Unlocks `compute_pourbaix_stability`. | `compute_pourbaix_stability` |
| `professional_database` | Lets the account read every dataset, including the restricted ones such as the full catalogue. | 24 tools |
| `result_set_export` | Unlocks `export_result_set`. | `export_result_set` |
| `trial_database` | Lets the account call the corpus tools against the trial subset, which is not restricted. Without professional_database the account cannot read a restricted dataset. | 24 tools |

These tools need no grant: `list_capabilities` and `list_material_sources`. Every other tool needs one of the grants listed for it on its own page; the [Tool reference](https://www.chemiadiscovery.com/docs/mcp/tools/) shows them all.

## Which datasets can I read?

The connector serves more than one dataset. Call [`list_material_sources`](https://www.chemiadiscovery.com/docs/mcp/tools/list_material_sources/) for the current list: each entry has an `id`, a description, and whether the dataset is restricted.

From that tool's reading notes: `restricted` means reading the dataset needs the professional_database grant. `is_default` marks the dataset a search would use for you when neither a source_id nor the query text names one, so it can differ between accounts. `specialized` marks a slice of the full catalogue chosen by application.

The `trial_database` grant reads the trial subset, which is not restricted. A restricted dataset, such as the full catalogue, needs the `professional_database` grant. The grants table above gives each grant's exact wording.

A dataset id the server does not recognise raises no error, so check which dataset answered. [Why did a tool answer from the trial subset instead of the dataset I asked for?](https://www.chemiadiscovery.com/docs/mcp/troubleshooting/#why-did-a-tool-answer-from-the-trial-subset-instead-of-the-dataset-i-asked-for)

## What are the limits?

These are the limits the server applies, read from its constants and default settings on 2026-10-04. Where a deployment can change a limit, the table shows the default: `daily_charged_calls_per_caller`.

**Response and work limits (as of 2026-10-04)**

| Limit | Value | Unit | What it bounds |
| --- | --- | --- | --- |
| `max_rows` | 50 | rows | Most rows or items any single tool response returns. A tool result is pasted into the model's context, so this is a context-budget guard and not a database limit. |
| `max_graph_hops` | 3 | hops | Furthest a knowledge-graph neighbour walk goes. It bounds the work, not the size of the answer. |
| `daily_charged_calls_per_caller` | 200 | charged calls per day | Declared default of the daily allowance for the tools marked charged, per caller; a deployment can override it with the setting named here, so the figure in force may differ. Tools that are not charged keep working when it is spent. |
| `first_page_rows` | 20 | rows | Rows on the first page of a result set built by refine_result_set or rerank_result_set, which bounds the rows those tools can return. |
| `ambiguous_candidates_listed` | 8 | candidates | Most candidates listed when a name fits several materials. |
| `histogram_bins` | 20 | bins | Equal-width bins between the 1st and 99th percentile in a distribution; one open-ended bin is added at each end. |
| `graph_path_max_edges` | 6 | edges | Longest path graph_shortest_path looks for. |
| `scan_deadline_seconds` | 45 | seconds | Wall-clock ceiling on one search scan. A search that outruns it is stopped. |
| `statement_timeout_seconds` | 30 | seconds | Longest one database statement may run against the materials database. |
| `graph_query_timeout_seconds` | 5 | seconds | Longest one knowledge-graph query may run. |

**Classification thresholds (as of 2026-10-04)**

| Threshold | Value | Unit | What it does |
| --- | --- | --- | --- |
| `classify_semi_metal_max_ev` | 0.1 | eV | Band gaps above zero and below this are classed semi-metal. |
| `classify_semiconductor_max_ev` | 3 | eV | Band gaps from the semi-metal limit up to this are classed semiconductor; larger gaps are insulators. |

## Which calls use the daily allowance?

- **Charged tools (as of 2026-10-04):** `compute_pourbaix_stability`, `count_materials` and `search_materials`.
- **Allowance:** 200 charged calls per day. This is the declared default; a deployment can override it, so the figure in force may differ.
- **Scope:** per caller account; separate from the web app allowance.
- **Refund:** a reply that is a clarification question is refunded.

A charged call uses one unit of the allowance before the tool runs. Tools that are not charged never count against it.

**Charged tools and the grants they need (as of 2026-10-04)**

| Tool | Needs one of these grants |
| --- | --- |
| `compute_pourbaix_stability` | `materials_project_data` |
| [`count_materials`](https://www.chemiadiscovery.com/docs/mcp/tools/count_materials/) | `professional_database` or `trial_database` |
| [`search_materials`](https://www.chemiadiscovery.com/docs/mcp/tools/search_materials/) | `professional_database` or `trial_database` |

## When does the allowance reset, and what happens when it runs out?

The window is one calendar day, counted on the server host's local date (the counter keys on the host's date.today()); the refusal message gives a reset time of midnight labelled UTC after that date, so the two agree only where the host runs in UTC.

When the allowance is spent, the charged tools are refused with a message that gives the reset time. Tools that are not charged keep working.

If you hit the limit, see [I reached the daily limit. What now?](https://www.chemiadiscovery.com/docs/mcp/troubleshooting/#i-reached-the-daily-limit-what-now)

---

Canonical page: https://www.chemiadiscovery.com/docs/mcp/access/

Data as of 2026-10-04. Server release 1.5.0, read from the live server on 2026-10-04.

[Site FAQ](https://www.chemiadiscovery.com/faq) | [Website privacy policy](https://www.chemiadiscovery.com/privacy) | [Website terms of use](https://www.chemiadiscovery.com/terms) | [Contact support](mailto:info@chemiadiscovery.com)
