MCP tool reference
The Nullary MCP server exposes 31 tools. Install it first (guide), then your assistant can call any of these.
Common inputs & response
Every search_* tool accepts these optional inputs (plus any tool-specific ones noted below):
| Param | Type | Description |
|---|
target | string | UniProt accession or gene symbol (fastest with an accession). |
compound | string | Compound name, ChEMBL ID, or InChIKey. |
indication | string | Disease / indication (where applicable). |
outcome | string | inactive, terminated, failed_safety, … |
limit / offset | integer | Pagination. limit 1–100 (default 25). |
Each tool returns a stable envelope. Results default to the curated tier (the credible, dose-response / human-curated layer); every finding carries full provenance (source, DOI/PMID/URL, license, confidence).
{
"findings": [ /* finding objects (same shape as REST /findings) */ ],
"returned_count": 12,
"has_more": true,
"query_metadata": { "tool": "search_inactive_compounds", "limit": 25, "offset": 0 },
"coverage_note": "…" // present only for thin Phase-1 modalities
}
This envelope is also returned as MCP structured output: every tool declares an outputSchema, and tools/call returns the same object as structuredContent alongside the text block — so structure-aware clients get a typed result without parsing JSON out of a string. All tools are read-only (annotated readOnlyHint).
Small molecule
| Tool | Returns |
|---|
search_inactive_compounds | Inactive compound–target pairs. |
search_failed_selectivity | Small molecules that failed selectivity. |
search_admet_failures | Small-molecule ADMET failures (hepatotox, cardiotox, oral bioavailability, BBB, …). |
CRISPR
| Tool | Returns |
|---|
search_failed_guides | Failed / ineffective guide RNAs. |
search_failed_essentiality_screens | Non-dependency / failed essentiality screens. |
search_ancestry_specific_failures | Ancestry-specific CRISPR failures. |
Antibody
| Tool | Returns |
|---|
search_developability_failures | Developability failures: aggregation, polyreactivity, expression, thermostability. |
search_failed_clinical_antibodies | Discontinued / terminated clinical antibodies. |
Peptide
| Tool | Returns |
|---|
search_failed_peptide_therapeutics | Failed peptide therapeutics. |
search_peptide_stability_issues | Peptide stability / half-life failures. |
PROTAC
| Tool | Returns |
|---|
search_failed_protacs | PROTACs that failed degradation / ternary / permeability. |
search_protac_e3_issues | E3-ligase recruitment / ternary-complex failures. |
Oligonucleotide
| Tool | Returns |
|---|
search_failed_oligonucleotides | ASOs / siRNAs that failed engagement or developability. |
search_oligo_delivery_failures | Oligonucleotide delivery failures. |
Vaccine, ADC & bispecific
| Tool | Returns |
|---|
search_failed_vaccines | Failed / terminated vaccines (by pathogen or indication). |
search_vaccine_immunogenicity_failures | Failed vaccine immunogen designs. |
search_failed_adcs | ADCs that failed at any stage. |
search_adc_linker_failures | ADC failures attributed to linker chemistry. |
search_failed_bispecifics | Bispecifics that failed at any stage. |
search_bispecific_format_failures | Bispecific format / chain-pairing failures. |
Cross-cutting
| Tool | Returns |
|---|
search_admet_failures_all_modalities | ADMET failures across every modality. |
search_drug_drug_interaction_failures | Drug–drug interaction failures (PK/PD). |
search_mechanism_failures | Mechanism-of-action failures. |
search_failed_replications | Findings that failed to replicate. |
search_safety_failures | Clinical / preclinical safety failures across modalities. |
Cross-modality history
These answer “what's been tried” across every modality. Each takes one required argument.
| Tool | Returns |
|---|
search_target_history | All failed approaches against a target. Requires target (UniProt accession is fastest). |
search_indication_history | All failed approaches for an indication. Requires indication. |
search_pathogen_history | Vaccine / antimicrobial failures for a pathogen. Requires pathogen. |
Direct lookups
| Tool | Returns |
|---|
get_compound | A molecule's full negative profile across sources. One of inchi_key, chembl_id, or pubchem_cid. |
get_finding_provenance | A single finding with full provenance. Requires id (finding UUID). |
get_coverage | Per-modality and per-source coverage counts. No arguments. |
Example: get_compound
// tools/call → get_compound
{ "chembl_id": "CHEMBL941" }
// →
{
"compound": { "pref_name": "IMATINIB", "chembl_id": "CHEMBL941",
"inchi_key": "KTUFNOKKBVMGRW-UHFFFAOYSA-N", "max_phase": 4 },
"returned_count": 200,
"findings": [ /* every negative finding for this molecule, across sources */ ]
}
Prefer raw HTTP? The same data is available without MCP — see the REST API reference.