Peptiter / DiscoveryLab
Platform
Platform & handoff

Agents — agent-facing operational surface.

The agent-facing surface used by automated reviewers and operators inside DiscoveryLab.

Agent surface · MCP-native, private infrastructure

Any AI agent can drive this lab — over a typed JSON-RPC bus, on your own machines.

Peptiter exposes 18 first-party tools across five MCP servers behind one composite dispatcher. Nothing in the audit path is third-party. Nothing requires an outbound network call. A single Swift binary, peptiter-mcp-stdio, speaks newline-delimited JSON-RPC over stdin/stdout — drop it into Claude Code's mcp.json or any other MCP-compliant agent host, point it at your cache directory, and the agent now has typed access to the entire research, verification, and lab-orchestration pipeline.

literature/*

Citation-grounded literature, four adapters behind one tool.

PubMed E-utilities, Semantic Scholar Graph, Europe PMC REST, plus a deterministic local fixture for tests. Every result is an EvidenceCard with provenance back to the originating LiteratureQuery; ClaimExtractor pulls typed (subject, predicate, object) triples in the predicate vocabulary the biology_v* TensorLang modules use, so claims project onto a BiologySpec without translation.

literature/searchliterature/list_adapters
lean/*

Mechanism receipts your model can read and verify.

Wraps the LeanExternalVerifier. lean/verify loads a TensorLang manifest and Lean source, optionally drives lake build, and returns a hash-bound receipt with native_decide proofs for every signed-sum and path-count theorem. Optional cachedHash short-circuits identical-artifact calls; noCache forces a fresh verification when you want to confirm the cached receipt is still accurate.

lean/verifylean/list_modules
lab_loop/*

Closed-loop wet-lab orchestration, gated by approval.

V3LabLoopOrchestrator behind a typed MCP surface. lab_loop/run composes AssayPlanDrafter + LabJobQueue + ActiveLearningEngine — a verified mechanism in, an approval-gated lab job and an updated Beta(α,β) belief out. lab_loop/inspect re-reads a cached Trace by fingerprint without re-dispatching; list_named_loops enumerates curated scenarios. No L5+ autonomy: every executable plan still routes to a human reviewer.

lab_loop/runlab_loop/inspectlab_loop/list_named_loops
improvement/*

Recursive discovery proposals, evaluated before promotion.

ImprovementMCPServer turns returned assays, verifier failures, reviewer corrections, and eval regressions into typed ImprovementProposal artifacts. Tools can propose, evaluate, verify, approve, promote, inspect, and rollback changes — but forbidden subsystems such as safety gates, claim thresholds, and wet-lab permissions cannot be promoted by the loop.

improvement/proposeimprovement/evaluateimprovement/verifyimprovement/approveimprovement/promoteimprovement/inspectimprovement/rollback
model/*

Local-model candidate emission, kept on the candidate side of the audit line.

Generative model outputs are explicitly positioned as candidates, not findings. model/emit_biology_spec proposes a BiologySpec; model/extract_claim_triples emits typed ClaimTriples; model/suggest_mechanism_canvas drafts a PathwayMechanismHypothesis. The runtime uses separate local fine-tuned adapters for peptide-aware retrieval work and strict structured JSON emission. Every draft must be passed through lean/verify before it counts as scientific output — generative breadth, formal narrowing, no shortcut between them.

model/emit_biology_specmodel/extract_claim_triplesmodel/suggest_mechanism_canvasmodel/list_training_sources
Fine-tuned local models

Two adapters, two jobs, one audit boundary.

DiscoveryLab does not ask one local model to be both a peptide librarian and a strict JSON compiler. The peptide-aware adapter is routed through retrieval; the structured adapter is routed through schema contracts. Both stay on the candidate side of the scientific ledger until verification accepts the claim.

Peptide-aware RAG adapter

Answers design and evidence questions from the local peptide evidence store, copying identifiers, citations, and source context from retrieval rather than relying on LoRA memory.

Structured candidate adapter

Emits compact BiologySpec, ClaimTriple, and mechanism-canvas JSON for downstream validation. It is optimized for schema discipline, not free-form evidence answers.

Evidence store

Desktop builds can point at the full local peptide SQLite pack; mobile builds keep the capped bundled pack. In both cases, retrieved evidence is the source of truth.

Promotion gates

Adapter outputs stay candidate_unverified until schema checks, citation checks, quality gates, TensorLang projection, and Lean verification accept the claim boundary.

Why it works on private infrastructure

Six properties that let the same surface ship to a researcher's laptop or an air-gapped server.

Most agent platforms assume a hosted API. Peptiter assumes the opposite — your data, your hardware, your audit trail. Each property below is enforced in code, not in a policy memo.

Stdio-only transport

no exposed ports, no network listener; the binary speaks newline-delimited JSON-RPC over stdin/stdout, so any agent host launches it as a child process

Runs on your machines

single Swift binary built locally — laptop, workstation, on-prem server, air-gapped lab; no SaaS round-trip for any tool call

First-party servers only

the five MCP servers in the catalog are all in-tree; no community MCP server sits between an agent and your sensitive data

Cache directory you control

--cache-dir <path> persists trace + receipt caches anywhere — a tmpfs in CI, an encrypted volume on a workstation, an NFS mount the team shares; --prune-cache evicts at startup

Audit ledger by construction

every JSON-RPC envelope flows through MCPDispatcher; every cache write is timestamped; tools/list-version is a stable SHA256 over the canonical catalog so an agent can pin the surface it expects

Agent-agnostic by protocol

MCP is a public spec — Claude Code today, any compliant client tomorrow; an agent that speaks newline JSON-RPC over stdio is already a compatible host

Wire any MCP host into the catalog

One config. One binary. Eighteen typed tools.

Drop the snippet into ~/.claude/mcp.json (or any host's equivalent) and the catalog appears as a tool group. The same binary serves dev, batch, and concurrent dispatch — pick args to taste.

{
  "mcpServers": {
    "peptiter": {
      "command": "REPO/.../peptiter-mcp-stdio",
      "args": ["--cache-dir", "~/.peptiter/cache",
               "--concurrent", "4"],
      "env": {}
    }
  }
}

Want to verify the catalog without launching the agent host?

peptiter-mcp-stdio --probe                # tools/list as JSON
peptiter-mcp-stdio --tools-list-version   # SHA256 you can pin in CI
A typical loop, from disease query to approved lab job

Five tool calls, five typed receipts, one auditable trace.

01
literature/search

Agent asks for ranked targets in a disease context. Server returns EvidenceCards with provenance and ClaimTriples ready for the graph bridge.

02
model/suggest_mechanism_canvas

Local model proposes a PathwayMechanismHypothesis from the cards. Output is explicitly a candidate — verification still required.

03
lean/verify

TensorLang manifest + Lean source verified end-to-end. Receipt carries hashesMatch, signed-sum proofs, and per-path attribution.

04
lab_loop/run

Verified mechanism becomes a draft AssayPlan, gated through the LabJobQueue. Belief state updates the next-experiment pick.

05
improvement/propose

Returned evidence or a failed gate becomes a typed improvement proposal with validation, approval, and rollback requirements.

# Same loop, raw JSON-RPC over stdio (one line per request)
{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"literature/search",
           "arguments":{"adapter":"pubmed","disease":"ulcerative colitis","limit":5}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call",
 "params":{"name":"model/suggest_mechanism_canvas",
           "arguments":{"target":"IL23R","diseaseContext":"ulcerative colitis"}}}
{"jsonrpc":"2.0","id":3,"method":"tools/call",
 "params":{"name":"lean/verify",
           "arguments":{"module":"biology_v3_signed","runLakeBuild":true}}}
{"jsonrpc":"2.0","id":4,"method":"tools/call",
 "params":{"name":"lab_loop/run",
           "arguments":{"loop":"v3-il23-axis","cachedFingerprint":"14ebfd30a3a9e488"}}}

The takeaway. If your agent can spawn a child process and write JSON to its stdin, it can drive a full drug-discovery loop on infrastructure you control — literature, mechanism verification, assay planning, active-learning belief updates, recursive improvement proposals — without sending a byte of internal data to anyone else's API. That is what advanced MCP support means here.