search_chembl_id_lookup
Find ChEMBL IDs by name across compound, target, cell line, and tissue (exact match) or by keyword in assay descriptions.
Instructions
Resolve a name to ChEMBL IDs across several entity kinds in one call.
Cross-entity convenience wrapper over the ChEMBL RDF graph. Two matching regimes, because the entity kinds carry different searchable text:
• EXACT (case-insensitive) NAME match — COMPOUND (skos:altLabel: brands,
generics, synonyms), TARGET (component skos:altLabel: gene symbols, protein
names), CELL_LINE and TISSUE (rdfs:label, e.g. "Liver", "CCRF S-180"). Not
fuzzy/substring — fix typos before calling. Prefer the entity-specific tools
(search_chembl_molecule / search_chembl_target) when you know the kind;
they carry extra fields (organism/type).
• KEYWORD-IN-DESCRIPTION — ASSAY. Assays have no name; their searchable text is a free-text dcterms:description, so ASSAY does a keyword (token) match on that description, NOT an exact match, e.g. entity_type="ASSAY", query="acetylcholinesterase" → every assay whose description mentions it. ASSAY results are relevance-ranked (best description match first).
Default (no entity_type) searches the four EXACT-name kinds and UNIONs them.
ASSAY is opt-in via entity_type="ASSAY" — its keyword semantics and high hit
counts would otherwise swamp a name lookup. (DOCUMENT is not supported; query
SPARQL directly for it.)
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'}. total_count is the
number of rows RETURNED (capped by limit), NOT the full match count; check
has_more (true = more results exist beyond this page — relevant mainly for
ASSAY, whose keyword search can have many hits). Each result carries
'chembl_id', 'entity_type', and 'organism' (null for COMPOUND / where absent —
use it to tell e.g. human from mouse targets). Name kinds also carry 'name'
(rdfs:label); ASSAY rows instead carry 'description' (the free-text assay
description, name=null) and a relevance 'score' (higher = better match).
On 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 | The maximum number of results to return. | |
| query | No | The query string to search for. | |
| search | No | ||
| keyword | No | ||
| keywords | No | ||
| entity_type | No | Optional: COMPOUND, TARGET, CELL_LINE, TISSUE, or ASSAY. Omit to search the four name kinds together. ASSAY (keyword match on the assay description) is opt-in only. | |
| search_term | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||