Search and build

Search and build integration

Use existing public reactions for literature review, data analysis, model training or experimental reference. The website, software and AI assistants share the same search and build capabilities.

Researchers: use the website

Find related reactions, check conditions and sources, or describe a dataset for analysis. Website search is ready to use.

Scripts and automated labs: API

Query existing records from analysis or lab workflows and download research data. Submit newly collected results through the upload API.

AI assistants: MCP tools

Find reactions and cite sources in a conversation, or propose selection criteria and build from a reviewed plan.

Use from software or an AI client

What you can search

Combine these criteria. MCP and API return the same reaction records, original values and provenance for an external model to read and analyze.

Molecular structures
Match reactants, products, catalysts and other roles by exact structure, substructure, SMARTS or similarity.
Multiple materials and functional groups
Combine material constraints and required or excluded fragments using AND / OR. By default, different molecules must satisfy separate constraints.
Conditions and outcomes
Filter temperature, duration, pressure, yield, ee and other numeric ranges, or text in catalyst, solvent, atmosphere and other fields.
Bond changes
Search bond breaking, formation or order changes by element pair, such as C–N cleavage; results report atom-map availability.
Data scope and field availability
Limit a query to a dataset, search source keywords, or require a field to be present or missing. Tools provide field codes, units and supported operators.
search_reaction_records
{
  "query": {
    "component_constraints": [
      {
        "role": "reactant",
        "structure": "c1ccccc1",
        "mode": "substructure"
      }
    ],
    "condition_filters": [
      {
        "field": "temperature_C",
        "operator": "range",
        "minimum": 20,
        "maximum": 80
      }
    ],
    "page_size": 5
  }
}

Numeric queries use field units, such as °C, h and %. Recognized source units are converted for search; unknown units cannot satisfy ranges. Room temperature is excluded from numeric ranges unless explicitly enabled.

Help the model interpret and cite results

  1. Start with get_search_schema, confirm fields with get_field_catalog, and obtain functional-group IDs from get_functional_groups.
  2. After search_reaction_records, check applied_query, total matches and coverage. Paginate with page / page_size, up to 100 records per page.
  3. Pass an item id as get_reaction record_id to read the complete structured record and original values. Verify stages, materials, measurement targets and sources before interpreting.

Search covers the latest published version of each public dataset with a ready index. Private, draft and offline data are excluded. Verify multi-step procedures and measurement scope in the full record; arbitrary nested stage conditions and arbitrary reaction SMARTS are not supported; net bond changes require source atom maps. Empty results may also reflect incomplete indexing.

Let an assistant find and cite reactions

After configuring the iSynth service and credential, an assistant can discover datasets and fields, search, and retrieve original records with sources. Use reactions:read permission. No iSynth model configuration, upload or build is required.

Connect your AI client

Streamable HTTP · Bearer

Add the service URL and Authorization header in a client that supports remote MCP. Configuration formats vary; a common mcpServers example is shown below.

https://your-isynth-host/api/mcp
{
  "mcpServers": {
    "isynth": {
      "url": "https://your-isynth-host/api/mcp",
      "headers": {
        "Authorization": "Bearer <ISYNTH_AUTOMATION_TOKEN>"
      }
    }
  }
}

Replace the placeholder with an iSynth MCP credential, not a model API key. Existing credentials cannot be retrieved; revoke and replace a lost one.

get_search_schema → get_field_catalog
search_reaction_records → get_reaction

An external assistant can compose search criteria directly. plan_dataset uses the model configured in your iSynth account; review its criteria, fields and unresolved requirements before calling build_dataset.

How records are stored and searched

JSONL is an exchange format with one reaction per line. The platform stores complete JSONB records in PostgreSQL alongside material, stage, measurement and molecular structure indexes, and retains original files separately. Searches use database filtering and structure matching, not line-by-line scans of download files.

Once parsed and publicly released, a new reaction can be found using existing structure, temperature and yield filters. Search fields come from the contract and parameter registry, not existing reaction names. A new condition type needs registration; a new record does not need a search-code change.

Custom parameters are currently filtered in scoped stage or material JSONB. Registration does not automatically create a dedicated index for every value. Frequently queried parameters can receive rebuildable indexes after profiling, without changing source data.

Search bond changes

For C–N cleavage, add a bond change under Structures & groups, or use the query below through MCP or the API. Choose breaking, formation or bond-order change and combine it with structures and experimental conditions.

{
  "bond_changes": [
    {
      "change": "broken",
      "elements": [
        "C",
        "N"
      ]
    }
  ]
}

Connectivity is compared using consistent atom-map numbers in source SMILES, only for atoms present on both sides. Missing byproducts, absent maps or conflicting maps do not establish cleavage. Results include bond_change_coverage. This is net input-to-final-product change, not a mechanism or every intermediate step of a one-pot reaction.

Search custom parameters

Additional conditions are stored in parameters. Registered parameters support numeric, text and presence filters. Use get_parameter_catalog for IDs, units and operators. Conditions in one group match the same stage, keeping steps separate.

Uploading custom fields does not automatically add them to the dropdown. Registration defines the English ID, meaning, quantity/text/boolean type and units. The page displays reviewed Chinese or English labels; the ID stays the same in either language.

A quantity can hold a point, interval or one-sided bound, according to the source; these do not require separate parameter registrations. Records use lower/upper; query bounds use minimum/maximum.

SourceParameter value
30 Hz{"value":30,"unit":"Hz"}
20–40 Hz{"lower":20,"upper":40,"unit":"Hz"}
<30 Hz{"value":30,"unit":"Hz","qualifier":"<"}

For quantities, equals uses value, such as 30 Hz. A range uses minimum and maximum; either bound may be omitted. Ranges match overlaps: 20–40 Hz matches 30 Hz or 35–50 Hz. Equals 30 Hz does not match 20–40 Hz, approximately 30 Hz or less than 30 Hz. Text uses equals or contains; booleans use true or false.

{
  "parameter_filters": [
    {
      "parameter": "conditions.milling_frequency",
      "operator": "equals",
      "value": 30
    }
  ]
}
{
  "parameter_filters": [
    {
      "parameter": "conditions.milling_frequency",
      "operator": "range",
      "minimum": 20,
      "maximum": 40
    }
  ]
}

This example filters milling frequency from 20 to 40 Hz. Unregistered values remain in complete records. Maintainers review new registrations; compatible existing records need no re-upload. Check parameter_coverage for scientific-fact availability.

FieldPurposeLater stages
parametersAdditional structured parameters, such as milling ball diameter. Contributors can add names and values directly.Inherit or update by parameter name; null clears that parameter.

For example, parameters.milling_ball_diameter: {value: 0.5, unit: "cm"} matches a 4–6 mm filter. New records use parameters throughout; registered values can be queried by their declared type and unit.

null stops carrying forward a known value; it does not mean zero or imply that the reaction stopped. Omission means no change was reported. Registration specifies a stable ID, scientific meaning, type, path, unit conversions and example for maintainer review and release. There is currently no public self-service registration endpoint.

python isynth_mcp_client.py parameters
python isynth_mcp_client.py validate parameter-upload.json
python isynth_mcp_client.py upload parameter-upload.json
# After parsing, review and publication:
python isynth_mcp_client.py search parameter-query.json
View the parameter registry

Choose permissions for your task

Create API key

Use reactions:read to query existing reactions. Add construction:write for planning, building and downloading build results. API and MCP share these permissions.

API endpoints and MCP tools
TaskHTTP APIMCP
Search schema and examplesGET /api/automation/v1/search/schemaget_search_schema
Parameter registryGET /api/reactions/parameter-catalogget_parameter_catalog
Discover datasetsGET /api/automation/v1/datasetslist_reaction_datasets
Search reactionsPOST /api/automation/v1/searchsearch_reaction_records
Read a recordGET /api/automation/v1/reactions/{record_id}get_reaction
Draft a planPOST /api/automation/v1/planplan_dataset
Build and inspect resultsPOST /api/automation/v1/runs · GET /api/automation/v1/runs/{run_id}build_dataset · get_build

To submit new laboratory results, see the software and AI upload guide.