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
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.