# Genomic Intelligence (remote · mcp.genomicintelligence.ai)

Hosted DNA language models: promoter, splice, enhancer, chromatin, expression, annotation

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

## Components

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

## Channel facts

- Endpoint: `https://mcp.genomicintelligence.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## 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**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 15 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - 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**: 79/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3033 tokens (~144/item across 21 items; 15 tools + 6 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 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-genomicintelligence-genomic-intelligence https://mcp.genomicintelligence.ai/mcp
```

### Codex

```toml
[mcp_servers.ai-genomicintelligence-genomic-intelligence]
url = "https://mcp.genomicintelligence.ai/mcp"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add ai-genomicintelligence-genomic-intelligence --url https://mcp.genomicintelligence.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-genomicintelligence-genomic-intelligence:
    url: "https://mcp.genomicintelligence.ai/mcp"
```

### Other

```json
{
  "mcpServers": {
    "ai-genomicintelligence-genomic-intelligence": {
      "type": "http",
      "url": "https://mcp.genomicintelligence.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-02 (score 67, +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 66, 0)

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

### 2026-07-30 (score 66, +1)

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

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

- [functional improvement] Stability: unverified → 0.03

### 2026-07-27 (score 64)

First indexed and scored.

## MCP tools (15)

### `list_models` (~78 tokens)

List available models for a task.

        Use to discover model ids before passing one as the `model`
        argument to a predict tool. The same catalog is also available
        as the resource `gi://models`.

Input parameters:

- `task` (string, required): Task name. One of: promoter, splice, enhancer, chromatin, expression, annotation.

### `fetch_ensembl_sequence` (~142 tokens)

Fetch a gene's reference sequence from Ensembl and store it.

        Returns a handle ({ref, name, length, preview, ...}). Pass the
        `ref` to predict_* tools — the bases stay server-side. For
        expression, use fetch_gene_for_expression instead (it prepares
        the TSS-centred window that model needs).

Input parameters:

- `flank_bp` (integer): Extra bp added on each side of the gene body.
- `gene` (string, required): Gene symbol (e.g. 'TP53') or Ensembl ID.
- `species` (string): Species name, e.g. 'human', 'mouse'.

### `fetch_region` (~264 tokens)

Fetch a genomic region by coordinates from Ensembl and store it.

        For "find the genes in chr8:127,680,000-127,800,000"-style requests:
        resolves a coordinate range to reference sequence and returns a handle
        ({ref, name, length, ...}) to pass to find_genes / predict_* — the bases
        stay server-side. Plus strand by default, which is what the gene-finder
        expects. For a gene by name use fetch_ensembl_sequence; for expression
        use fetch_gene_for_expression.

Input parameters:

- `flank_bp` (integer): Extra bp added on each side of the region.
- `region` (string, required): Genomic coordinates, e.g. 'chr8:127,680,000-127,800,000'. Commas, en/em dashes and '..' are accepted; the 'chr' prefix is optional.
- `species` (string): Species name, e.g. 'human', 'mouse'.
- `strand` (integer): 1 = plus (default), -1 = minus. find_genes (gene finding) is plus-oriented — keep 1 for annotation; use -1 only for a strand-sensitive task on a known minus-strand locus.

### `fetch_gene_for_expression` (~88 tokens)

Fetch a gene's sequence prepared for expression prediction.

        Resolves the gene's TSS via Ensembl and returns the exact
        TSS-centred window the expression model needs, as a handle to
        pass to predict_expression(sequence_ref=...).

Input parameters:

- `gene` (string, required): Gene symbol (e.g. 'HBB').
- `species` (string): Species name.

### `load_demo_sequence` (~161 tokens)

Load a bundled demo reference sequence and return a handle.

        The server ships one curated, task-correct positive control per task
        (list them via the gi://sequences resource) — e.g.
        `expression_hbb_k562` is a ready-to-use K562 expression window for
        predict_expression. Stores the demo and returns a handle to pass to a
        predict_* tool: no Ensembl fetch, no quota. Handy for smoke-testing a
        prediction end-to-end.

Input parameters:

- `name` (string, required): Demo name from gi://sequences, e.g. 'expression_hbb_k562', 'promoter_tp53', or 'annotation_hbb_chr11'. A gene token like 'TP53' also resolves.

### `store_inline_sequence` (~158 tokens)

Store a human-pasted sequence and return a handle to re-use it.

        For a sequence you've already pasted into the conversation, this
        gives back a short handle so you can run several tasks on it
        without re-pasting the bases in each predict_* call. Note that the
        full sequence still passes through the LLM on THIS call — it does
        not save context on its own. For large sequences, prefer
        fetch_ensembl_sequence / fetch_gene_for_expression / load_local_fasta,
        which acquire the bases server-side and never round-trip them.

Input parameters:

- `name` (string): Label for this sequence.
- `sequence` (string, required): DNA bases to store and get a handle for.

### `predict_promoter` (~164 tokens)

Predict promoter regions (G0). Up to 500,000 bp.

        Returns the {data, meta} envelope: data.regions lists predicted
        promoters with start/end/score.

Input parameters:

- `model`: Optional model id; omit for the task default. See list_models.
- `sequence`: DNA bases A/C/G/T/N (case-insensitive). Mutually exclusive with `sequence_ref`.
- `sequence_name` (string): Label echoed back in the response (ignored when `sequence_ref` is used).
- `sequence_ref`: Handle (seq_…) from any acquisition tool (fetch_ensembl_sequence, fetch_region, fetch_gene_for_expression, load_demo_sequence, load_local_fasta, store_inline_sequence). Mutually exclusive with `seque…

### `predict_splice` (~145 tokens)

Predict splice donor/acceptor sites (G0 BigBird). Up to 500,000 bp.

Input parameters:

- `model`: Optional model id; omit for the task default. See list_models.
- `sequence`: DNA bases A/C/G/T/N (case-insensitive). Mutually exclusive with `sequence_ref`.
- `sequence_name` (string): Label echoed back in the response (ignored when `sequence_ref` is used).
- `sequence_ref`: Handle (seq_…) from any acquisition tool (fetch_ensembl_sequence, fetch_region, fetch_gene_for_expression, load_demo_sequence, load_local_fasta, store_inline_sequence). Mutually exclusive with `seque…

### `predict_enhancer` (~143 tokens)

Predict enhancer activity (G0 DeepSTARR). Up to 500,000 bp.

Input parameters:

- `model`: Optional model id; omit for the task default. See list_models.
- `sequence`: DNA bases A/C/G/T/N (case-insensitive). Mutually exclusive with `sequence_ref`.
- `sequence_name` (string): Label echoed back in the response (ignored when `sequence_ref` is used).
- `sequence_ref`: Handle (seq_…) from any acquisition tool (fetch_ensembl_sequence, fetch_region, fetch_gene_for_expression, load_demo_sequence, load_local_fasta, store_inline_sequence). Mutually exclusive with `seque…

### `predict_chromatin` (~146 tokens)

Chromatin annotation across 919 features (G0 DeepSEA). Up to 500,000 bp.

Input parameters:

- `model`: Optional model id; omit for the task default. See list_models.
- `sequence`: DNA bases A/C/G/T/N (case-insensitive). Mutually exclusive with `sequence_ref`.
- `sequence_name` (string): Label echoed back in the response (ignored when `sequence_ref` is used).
- `sequence_ref`: Handle (seq_…) from any acquisition tool (fetch_ensembl_sequence, fetch_region, fetch_gene_for_expression, load_demo_sequence, load_local_fasta, store_inline_sequence). Mutually exclusive with `seque…

### `predict_expression` (~287 tokens)

Predict a gene's expression from a TSS-centred input window.

        Expression is cell-type-specific, so `description` (cell type /
        assay context, e.g. 'K562 cell line') is REQUIRED — the API
        rejects requests without it. Requires exactly 9,198 bp centred on
        the TSS; call fetch_gene_for_expression(gene) to get a
        correctly-prepared handle. For a raw region or whole gene where
        you don't already have that window, use
        find_genes_and_predict_expression (it finds the genes for you).

Input parameters:

- `description`: REQUIRED experimental context — cell type / assay / conditions (e.g. 'K562 cell line', 'liver tissue'). Expression is cell-type-specific; the API rejects requests without it.
- `model`: Optional model id; omit for the task default. See list_models.
- `sequence`: DNA bases A/C/G/T/N (case-insensitive). Mutually exclusive with `sequence_ref`.
- `sequence_name` (string): Label echoed back in the response (ignored when `sequence_ref` is used).
- `sequence_ref`: Handle (seq_…) from any acquisition tool (fetch_ensembl_sequence, fetch_region, fetch_gene_for_expression, load_demo_sequence, load_local_fasta, store_inline_sequence). Mutually exclusive with `seque…

### `find_genes` (~466 tokens)

Find genes (transcript intervals) in a genomic region (async, ~8-25s).

        Gene-finding: detects transcript boundaries (TSS + PolyA) and returns
        one interval per predicted transcript — start/end, strand, a
        confidence score, and predicted TSS/PolyA positions (BED-style feature
        intervals, not free-text notes). Use this for "what genes are here",
        "find / locate genes", or "annotate this region".

        Each transcript also carries its type (mRNA/lnc_RNA) and internal
        exon/intron/CDS structure in `exons`/`introns`/`cds` arrays, plus a
        browser-ready GFF3 track in `data.formats.gff3`. To get each gene's
        *expression* from a raw region, use find_genes_and_predict_expression
        instead — expression needs a per-gene TSS window, so predict_expression
        cannot run on a whole region.

        Submits an async job internally. With wait=True (default), blocks and
        streams progress, then returns the result {data, meta} — it never
        returns a job_id on this path. (If a generous block ceiling is
        exceeded it returns a timeout error, not a job handle.) With
        wait=False (detached), returns {data: {job_id, status: 'submitted'}}
        immediately — poll it with get_job.

Input parameters:

- `model`: Optional model id; omit for the task default. See list_models.
- `sequence`: DNA bases A/C/G/T/N (case-insensitive). Mutually exclusive with `sequence_ref`.
- `sequence_name` (string): Label echoed back in the response (ignored when `sequence_ref` is used).
- `sequence_ref`: Handle (seq_…) from any acquisition tool (fetch_ensembl_sequence, fetch_region, fetch_gene_for_expression, load_demo_sequence, load_local_fasta, store_inline_sequence). Mutually exclusive with `seque…
- `wait` (boolean): Default True: block and stream progress until the result is ready. Set False for detached mode — returns a job_id immediately to poll with get_job.

### `find_genes_and_predict_expression` (~377 tokens)

Find genes in a sequence, then predict each gene's expression (composite).

        Server-side chaining in ONE call: finds genes (transcript intervals,
        with their TSS) in the sequence, then predicts expression off each
        discovered TSS in the given experimental context. This is the right
        tool whenever you want expression for a raw region or sequence — e.g.
        "find the genes in chr8:… and predict their expression in K562". You
        cannot call predict_expression on a whole region, because it needs a
        single per-gene 9,198 bp TSS window; this tool handles that for you.

        Runs async internally at every size (the annotate stage is slow even
        for small inputs), so progress always streams. With wait=True
        (default), blocks and streams progress, then returns the result
        {data, meta} — it never returns a job_id on this path. With wait=False
        (detached), returns {data: {job_id, status: 'submitted'}} immediately —
        poll it with get_job. Because it ends in expression, `description`
        (cell type / assay context) is REQUIRED.

Input parameters:

- `description`: REQUIRED experimental context — cell type / assay / conditions (e.g. 'K562 cell line'), applied to every found gene. The workflow ends in expression, which the API rejects without it.
- `sequence`: DNA bases. Mutually exclusive with sequence_ref.
- `sequence_name` (string): Label echoed back.
- `sequence_ref`: Stored sequence handle. Mutually exclusive with sequence.
- `wait` (boolean): Default True: block and stream progress until the result is ready. Set False for detached mode — returns a job_id immediately to poll with get_job.

### `get_job` (~69 tokens)

Poll an async job once.

        Returns the {data, meta} result if complete, a progress envelope
        if still running, or an error envelope if it failed.

Input parameters:

- `job_id` (string, required): Job id from an async tool (find_genes, find_genes_and_predict_expression).

### `list_jobs` (~39 tokens)

List the caller's recent async jobs (also available as gi://jobs/recent).

Input parameters:

- `limit` (integer): Max number of recent jobs to return.

## Diagnostics

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

## Score history

- 2026-08-03: 67
- 2026-08-02: 67
- 2026-08-01: 66
- 2026-07-31: 66
- 2026-07-30: 66
- 2026-07-28: 65
- 2026-07-27: 64

## Links

- Remote endpoint: https://mcp.genomicintelligence.ai/mcp
- Website: https://genomicintelligence.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-genomicintelligence-genomic-intelligence/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-genomicintelligence-genomic-intelligence/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-genomicintelligence-genomic-intelligence/mcp
