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).
| 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 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.
| 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 shows them all.
Which datasets can I read?
The connector serves more than one dataset. Call 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?
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.
| 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. |
| 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_materialsandsearch_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.
| Tool | Needs one of these grants |
|---|---|
compute_pourbaix_stability | materials_project_data |
count_materials | professional_database or trial_database |
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?