search_chembl_target
Resolve a protein, receptor, or enzyme to its ChEMBL ID using UniProt accession, gene symbol, or exact protein name. Returns organism and target type for disambiguation.
Instructions
Resolve a biological TARGET (protein/receptor/enzyme) to a ChEMBL ID.
⚠️ DO NOT use this tool to look up drugs, compounds, or molecules by name.
For drug/compound/molecule names (e.g., "sorafenib", "imatinib", "aspirin"),
use search_chembl_molecule instead.
Resolution is deterministic SPARQL against the ChEMBL RDF graph, not a lexical
search — there is no ranking to second-guess:
• UNIPROT ACCESSION (e.g. "P00533") → the structured skos:exactMatch link.
Returns every target containing that protein (the single protein plus any
complex/family/chimera it participates in) — filter target_type to get
just one.
• GENE SYMBOL / PROTEIN NAME (e.g. "EGFR", "epidermal growth factor
receptor") → EXACT (case-insensitive) match, tried against BOTH the
target's own name and its protein component's skos:altLabel synonyms.
• If that finds nothing, ONE substring pass over target names runs as a
fallback (e.g. "dehydrogenase"). Still never fuzzy — fix typos.
Every result carries organism and type, so a symbol shared across species
or complexes is disambiguated by inspecting those fields (or by passing the
organism/target_type filters) — NOT by trusting order.
Target-type values (for type and the target_type filter): SINGLE PROTEIN,
PROTEIN COMPLEX, PROTEIN FAMILY, PROTEIN-PROTEIN INTERACTION, CHIMERIC PROTEIN,
NUCLEIC-ACID, CELL-LINE, TISSUE, ORGANISM, SELECTIVITY GROUP, SMALL MOLECULE,
OLIGOSACCHARIDE, LIPID, METAL, and other rarer kinds. An unrecognized
target_type raises rather than silently matching nothing.
The search string can be passed as any of: query (canonical), search,
term, keyword, keywords, search_term, or name.
RETURNS a dict {'total_count', 'has_more', 'results', 'match_mode'}.
total_count is rows RETURNED (capped by limit), not the full match count;
has_more is true if more exist beyond this page. Each result has
'chembl_id', 'name' (rdfs:label), 'organism', and 'type'. match_mode is
'exact', 'substring', or 'none' — 'substring' means the exact pass found
nothing and these are looser, UNRANKED matches, so verify 'name' before using
them; 'none' means both passes ran and neither matched.
An EMPTY 'results' additionally carries 'hint'. Read it: an empty result is NOT an endpoint failure, and must not be reported as one. On a real endpoint failure this tool does NOT raise — it returns a dict with a single 'error' key instead; CHECK FOR 'error' BEFORE READING 'results'.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| term | No | ||
| limit | No | Max results. Defaults to 20. | |
| query | No | UniProt accession (preferred), gene symbol, or exact protein name. Examples: "P00533", "EGFR", "Thrombin". | |
| search | No | ||
| keyword | No | ||
| keywords | No | ||
| organism | No | Case-insensitive substring filter on organism, e.g. "Homo sapiens". Applied inside the query. | |
| search_term | No | ||
| target_type | No | Exact (case-insensitive) filter on target type, e.g. "SINGLE PROTEIN" — collapses an accession/symbol match to the canonical single protein and drops complexes/families. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||