# ai.nullary/nullary (remote · mcp.nullary.ai)

Negative results intelligence for drug discovery — query measured failures via MCP.

- Trust score: 74/100 (medium)
- Change this week: +8
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.nullary.ai`: 74/100 (this document), [markdown](https://verifymcp.io/servers/ai-nullary-nullary/mcp.md), [page](https://verifymcp.io/servers/ai-nullary-nullary/mcp)

## Channel facts

- Endpoint: `https://mcp.nullary.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 4999 tokens (~142/item across 35 items; 35 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http ai-nullary-nullary https://mcp.nullary.ai/mcp
```

### Codex

```toml
[mcp_servers.ai-nullary-nullary]
url = "https://mcp.nullary.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-nullary-nullary": {
      "type": "remote",
      "url": "https://mcp.nullary.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-nullary-nullary --url https://mcp.nullary.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-nullary-nullary:
    url: "https://mcp.nullary.ai/mcp"
```

### Other

```json
{
  "mcpServers": {
    "ai-nullary-nullary": {
      "type": "http",
      "url": "https://mcp.nullary.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 72, +4)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 66, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 66)

First indexed and scored.

## MCP tools (35)

### `search_inactive_compounds` (~162 tokens)

Inactive small-molecule compound-target pairs.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_selectivity` (~159 tokens)

Small molecules that failed selectivity.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_admet_failures` (~160 tokens)

Small-molecule ADMET failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_guides` (~161 tokens)

Failed/ineffective CRISPR guides.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_essentiality_screens` (~164 tokens)

Non-dependency / failed essentiality screens.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_ancestry_specific_failures` (~164 tokens)

Ancestry-specific CRISPR failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_developability_failures` (~160 tokens)

Antibody developability failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_clinical_antibodies` (~163 tokens)

Discontinued/terminated clinical antibodies.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_peptide_therapeutics` (~161 tokens)

Failed peptide therapeutics.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_peptide_stability_issues` (~163 tokens)

Peptide stability/half-life failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_protacs` (~167 tokens)

PROTACs that failed degradation/ternary/permeability.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_protac_e3_issues` (~170 tokens)

PROTAC E3-ligase recruitment / ternary failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_oligonucleotides` (~168 tokens)

ASOs/siRNAs that failed engagement/developability.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_oligo_delivery_failures` (~162 tokens)

Oligonucleotide delivery failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_vaccines` (~155 tokens)

Failed/terminated vaccines (by pathogen/indication).

Input parameters:

- `indication` (string): disease/indication
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_vaccine_immunogenicity_failures` (~163 tokens)

Failed vaccine immunogen designs.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_adcs` (~160 tokens)

ADCs that failed at any stage.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_adc_linker_failures` (~161 tokens)

ADC failures attributed to linker chemistry.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_bispecifics` (~163 tokens)

Bispecifics that failed at any stage.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_bispecific_format_failures` (~162 tokens)

Bispecific format/engineering failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_admet_failures_all_modalities` (~163 tokens)

ADMET failures across ALL modalities.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_drug_drug_interaction_failures` (~150 tokens)

Drug-drug interaction failures.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_mechanism_failures` (~165 tokens)

Approaches that failed for a mechanism (by target).

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_failed_replications` (~158 tokens)

Findings that failed to replicate.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_safety_failures` (~161 tokens)

Clinical/preclinical safety failures across modalities.

Input parameters:

- `compound` (string): compound name, ChEMBL ID, or InChIKey
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `outcome` (string): outcome filter (inactive, failed_safety, terminated, …)
- `target` (string): UniProt accession or gene symbol
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_target_history` (~124 tokens)

ALL failed approaches against a target across every modality.

Input parameters:

- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `target` (string, required): UniProt accession or gene symbol (required)
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_indication_history` (~120 tokens)

ALL failed approaches for an indication across every modality.

Input parameters:

- `indication` (string, required): indication (required)
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `search_pathogen_history` (~121 tokens)

Vaccine + antimicrobial + antibody failures for a pathogen.

Input parameters:

- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `pathogen` (string, required): pathogen name (required)
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `coverage_note` (string): Honest coverage caveat for thin Phase-1 modalities (present only when relevant).
- `findings` (array): Matching negative findings (same shape as the REST /findings endpoint).
- `has_more` (boolean): True when more results exist beyond this page.
- `query_metadata` (object): Echo of the resolved query — tool, limit, offset, and any applied presets.
- `returned_count` (integer): Findings returned in this page.

### `get_compound` (~189 tokens)

A compound (structure, name, max clinical phase) + its full negative profile across modalities/sources.

Input parameters:

- `chembl_id` (string): ChEMBL molecule ID, e.g. CHEMBL941.
- `inchi_key` (string): Compound InChIKey (provide one of inchi_key, chembl_id, or pubchem_cid).
- `limit` (integer): Maximum number of findings to return (1–100, default 25).
- `offset` (integer): Number of findings to skip before this page, for pagination (default 0).
- `pubchem_cid` (integer): PubChem Compound ID (CID).
- `tier` (string): Confidence tier. 'curated' (default) returns the credible layer; 'all' also includes high-volume screening-grade rows (PubChem HTS inactives, CRISPR non-essential tails).

Output parameters:

- `compound` (object): Identity: pref_name, chembl_id, inchi_key, max_phase.
- `findings` (array): Every negative finding for this molecule.
- `query_metadata` (object): Echo of the resolved query.
- `returned_count` (integer)

### `get_finding_provenance` (~32 tokens)

Full provenance + detail for a single finding by id.

Input parameters:

- `id` (string, required): finding UUID

Output parameters:

- `finding` (object): The finding with source, DOI/PMID, assay context, and confidence tier.
- `query_metadata` (object): Echo of the resolved query.

### `get_target_landscape` (~91 tokens)

Target 'graveyard' / exhaustion index: how many distinct compounds/agents have been tried against a target and failed, broken down by modality and outcome. Answers 'how picked-over is this target?'. Accepts a gene symbol (e.g. EGFR) or a UniProt accession (e.g. P00533).

Input parameters:

- `target` (string, required): gene symbol or UniProt accession (required)

Output parameters:

- `by_modality` (array): Per-modality failed-agent counts.
- `by_outcome` (array): Per-outcome counts.
- `query_metadata` (object): Echo of the resolved query.
- `summary` (string): One-line natural-language summary.

### `list_top_targets` (~91 tokens)

Coverage browse: the most heavily-pursued ('graveyard') targets, ranked by recorded negative findings. Optional family filter (kinase, gpcr, protease, nuclear_receptor, ion_channel, transporter, phosphatase, other).

Input parameters:

- `family` (string): target family filter (optional)
- `limit` (integer): Maximum number of findings to return (1–100, default 25).

Output parameters:

- `query_metadata` (object): Echo of the resolved query.

### `list_models` (~39 tokens)

Summary of the Layer-1 inactivity-scoring model registry: how many per-target models, split by family, and median scaffold-split ROC-AUC.

Output parameters:

- `query_metadata` (object): Echo of the resolved query.

### `get_model_card` (~79 tokens)

Per-target Layer-1 model card: training counts and held-out scaffold-split metrics (ROC-AUC, PR-AUC, Brier, calibration). Accepts a gene symbol (e.g. EGFR) or UniProt accession (e.g. P00533).

Input parameters:

- `target` (string, required): gene symbol or UniProt accession (required)

Output parameters:

- `query_metadata` (object): Echo of the resolved query.

### `get_coverage` (~25 tokens)

Per-modality and per-source coverage stats (honest Phase-1 numbers).

Output parameters:

- `by_modality` (array): Per-modality finding counts.
- `by_source_type` (array): Per-source finding counts.
- `curated_total` (integer)
- `query_metadata` (object): Echo of the resolved query.
- `total` (integer)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-nullary-nullary/mcp#diagnostics

## Score history

- 2026-08-03: 74
- 2026-08-02: 73
- 2026-08-01: 73
- 2026-07-31: 72
- 2026-07-30: 68
- 2026-07-29: 68
- 2026-07-28: 67
- 2026-07-27: 66
- 2026-07-26: 66

## Links

- Remote endpoint: https://mcp.nullary.ai/mcp
- Repository: https://github.com/nullary-ai/nullary
- Changelog RSS feed: https://verifymcp.io/servers/ai-nullary-nullary/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-nullary-nullary/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-nullary-nullary/mcp
