find_property_proxies tool
When a property is missing or too thin in the corpus, finds ranked routes that reach it through related properties, with each route's equation, stated error, failure modes and the data we actually hold for its inputs.
| Tool | find_property_proxies |
|---|---|
| Title | Find property proxies |
| Group | Property distributions and coverage |
| Needs one of | professional_database or trial_database |
| Charged | No |
| Read-only | Yes |
| Parameters | 5, of which 1 required |
| Data as of | 2026-10-04 |
| Server release | 1.5.0, read from the live server on 2026-10-04 |
What parameters does find_property_proxies take?
| Parameter | Type | Required | Default | What it does |
|---|---|---|---|---|
target_property | string | Yes | none | The property you want but cannot read directly: an ontology id, a label such as "dielectric breakdown strength", a corpus name such as thermal_conductivity, or a symbol with its case (E_f is formation energy, E_F the Fermi energy). A name that fits several properties resolves to none and did_you_mean lists them; an unknown name lists the nearest names. |
material_id | string or null | No | not set | Limits every hop's coverage check to one material. Give the internal material_id that appears on result rows (a UUID), not the Chemia ID. Takes precedence over result_set_id when both are given. |
result_set_id | string or null | No | not set | Limits every hop's coverage check to the materials in one of your result sets. The set's own dataset is used and a source_id given with it is ignored (notice says so). |
max_hops | integer | No | 3 | Longest chain of proxy equations to compose. Every extra hop stacks another equation's error on the last, so the default leaves the ontology's longer chains out on purpose. |
source_id | string or null | No | not set | Dataset whose data the coverage counts use, an id from list_material_sources. Null (the default) uses the dataset a search would use. source says which was counted. An id that is not in the catalogue falls back to the registry default without an error. |
Which grants does find_property_proxies need, and is it charged?
- Grants:
professional_databaseortrial_database. One of them is enough. - Charged: no, it never uses the daily allowance (as of 2026-10-04).
Grants and the allowance are explained in Access, grants and limits.
| Annotation | Value | Meaning |
|---|---|---|
idempotentHint | true | If true, calling the tool again with the same arguments has no additional effect. |
openWorldHint | false | If true, the tool may interact with an open world of external entities. |
readOnlyHint | true | If true, the tool does not modify its environment. |
What does a call to find_property_proxies look like?
Routes to a property we do not store directly.
{
"target_property": "dielectric breakdown strength",
"max_hops": 3
}These arguments validate against the tool's input schema, checked when the snapshot was taken on 2026-10-04. They show the shape of a call; they are not a recorded response. Examples says where worked examples stand.
How should I read find_property_proxies results?
- Convention.
verdictis backfillable_now, rankable_with_scatter, elimination_only, irreducible or held_directly. Proxies rank and screen; they never qualify. Only a backfillable route estimates a value, and its error is the input error. A rankable route gives an ordering with stated scatter, an elimination route can only rule materials out, and neither replaces a measurement. held_directly means the corpus stores the property under its own name: read it instead. - Gap. A route is usable only when every hop's input property has at least one stored value in scope; we set no higher bar for "dense". Routes through a property we hold nothing for are returned under
unusable_routes, not dropped, and a property with no usable route is irreducible: it needs literature extraction or direct measurement. - Trap. material_id is compared with the internal id column. The Chemia ID shown to users is not accepted there; use the
material_idfrom a result row.
A Convention is a field or behaviour whose meaning is not obvious, a Trap looks right and is not, and a Gap is something we do not hold or do not check. Reading results explains the classes.
How does the server describe find_property_proxies?
This is the server's own description, which a client passes to the model, lightly normalised for display.
When a requested property isn't in Chemia's corpus (or is too thin to answer from directly), find ranked routes that reach it through the proxy-equation graph instead of a bare "untracked".
Each route is a chain of one or more proxy-equation hops, each carrying its equation id/formula/stated error band, documented failure modes (fails_for), and the corpus coverage actually measured for that hop's input property, a route through a property this deployment also has zero rows of is never offered as usable. Such routes are still returned under unusable_routes (not dropped silently) so a caller can explain WHY a property is irreducible, not just assert that it is.
verdict is one of:
backfillable_now: a class-B route is usable; error is input error only.rankable_with_scatter: only class-C routes are usable; a screening/ranking signal with the stated scatter, NEVER a substitute for the real value ("proxies rank; they never qualify", see each route'snote).elimination_only: only BOUND routes are usable; one-sided, necessary-not-sufficient.irreducible: no usable route; needs literature extraction or direct measurement.held_directly: the corpus stores the property itself, under its own name (held_directlygives that name and how many materials in scope have it): read it with get_material_property or property_stats; there is nothing to estimate.
target_property takes an ontology id or any name for one: a label ("dielectric breakdown strength"), a corpus name ("kappa_lat", "thermal_conductivity"), a symbol with its case (E_f is formation energy, E_F the Fermi energy). A name that fits several properties resolves to none; did_you_mean then lists them, as it lists the nearest names after a miss.
material_id scopes every hop's coverage check to one material (0 or 1, instead of a corpus-wide count); result_set_id scopes it to a prior search_materials call's survivors. Neither given scopes it to the whole dataset: source_id picks one from list_material_sources, as on search_materials (default: the same dataset a search would use), and a result set's own dataset is used for result_set_id (a source_id given with it is not used, and notice says so). source on the response says which was counted. If both are given, material_id wins. max_hops (default 3) bounds how many proxy hops may compose before a chain is dropped, and so how much proxy error compounds across hops. The ontology has longer chains; the default leaves them out on purpose.
Which tools are related to find_property_proxies?
find_property_proxies is in the group "Property distributions and coverage". The other tools in it:
plot_distribution: Returns the histogram and summary statistics of one property across a whole dataset, or across a value range, as data you can draw or describe.property_stats: Summarises how one property is distributed across a dataset: how many values and materials there are, the minimum and maximum, the mean and the 5th, 25th, 50th, 75th and 95th percentiles.
The Tool reference lists every tool.