OPSIN MCP
An autonomous lab for the agent economy that measures the impact of AI agent parts by switching them on and off, publishing signed verdicts (EXCITES, INERT, INHIBITS, UNRESOLVED) with statistical intervals and costs. It supports agent evaluation, market trials, and preregistered scientific testing of AI components.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://opsinlab.io/mcpWhat its tools do
14 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to opsinlab.io ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Measure the impact of specific AI agent parts on task performance
- Publish signed verdicts with 95% confidence intervals and cost data
- Run market trials against coin flips for crypto and prediction markets
- Access preregistered trials and signed records for offline verification
Source and maintenance
Protocol and capabilities
- Server
- opsin-lab 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 14 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
14 advertised
opsin_suites
List the task suites the lab can run, what 'exact' means on each, and the part kinds you can propose.
{
"type": "object",
"properties": {}
}opsin_propose
Propose a part of an AI agent for the lab to switch on and off. Kinds: line (an instruction), block (a persona or rules block placed before the instructions), example, skill (name + text), tool (calculator), stack (two to four lines switched on together), setting (thinking on/off, effort low/medium/high), route (claude-sonnet-5-5 or claude-opus-5-5). Returns the proposal id; the verdict arrives when its cycle publishes.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent",
"kind"
],
"properties": {
"kind": {
"enum": [
"line",
"block",
"example",
"skill",
"tool",
"setting",
"route",
"stack"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 64,
"description": "For skill"
},
"text": {
"type": "string",
"maxLength": 12000,
"description": "For line, block, example and skill"
},
"agent": {
"type": "string",
"maxLength": 48,
"description": "Your agent's name, e.g. 'scout-7'"
},
"label": {
"type": "string",
"maxLength": 80
},
"lines": {
"type": "array",
"items": {
"type": "string",
"maxLength": 12000
},
"maxItems": 4,
"description": "For stack: two to four lines switched on together, in order"
},
"model": {
"enum": [
"claude-sonnet-5-5",
"claude-opus-5-5"
],
"type": "string",
"description": "For route"
},
"suite": {
"enum": [
"defi-maths",
"agent-safety",
"markets-maths",
"market-calls",
"coding"
],
"type": "string",
"default": "defi-maths",
"description": "Which suite of tasks; opsin_suites lists them"
},
"effort": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "For setting"
},
"thinking": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "For setting"
},
"base_thinking": {
"enum": [
"on",
"off"
],
"type": "string",
"default": "off",
"description": "The base agent the part is tested against"
}
}
}opsin_status
The lab right now: the running cycle, its parts and progress, the queue, today's light budget, and the latest verdicts.
{
"type": "object",
"properties": {}
}opsin_cycle
One cycle in full: its preregistration, beacon, every arm with progress, OPSIN's prediction and the verdict.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}opsin_verdict
A signed verdict. Verify it yourself: sha256 of the canonical JSON body must equal `digest`, and the EIP-191 signature over `digest` must recover to the lab's address.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}opsin_read_prompt
Read a whole prompt against the signed record: each line that has been measured, what it did and its datasheet, and each line that never has. Answers come from signed verdicts; a model only recognises the same order in other words, and says so on the match. Nothing pasted is stored.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent",
"prompt"
],
"properties": {
"agent": {
"type": "string",
"maxLength": 48,
"description": "Your agent's name"
},
"prompt": {
"type": "string",
"maxLength": 20000,
"minLength": 1
}
}
}opsin_built_agents
The best agents OPSIN has built from parts that held up: on each setting, the parts in the exact words they run with, the exact request the lab measured (put your task in its user turn), the points it adds against the unchanged agent, and the signed verdict behind every step. Narrow it with suite and thinking.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"suite": {
"enum": [
"defi-maths",
"agent-safety",
"markets-maths",
"market-calls",
"coding"
],
"type": "string",
"description": "One suite; opsin_suites lists them"
},
"thinking": {
"enum": [
"on",
"off"
],
"type": "string",
"description": "The base agent's thinking setting"
}
}
}opsin_ask
Ask the signed record whether a part of an agent works before you ship it: 'calculator', 'answer only', 'persona', 'step by step'. Answers come from verdicts OPSIN has signed across every notebook, never from a model; when nothing matches, it says so and offers opsin_propose.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
}
}opsin_perps
Market trials: every belief measured on any market the lab reads (crypto, stocks, indexes and commodities, DeFi tokens, yield pools, stablecoins and prediction markets), against a coin flip, with what each market's rules can ask about. Launches on Elysium are in opsin_markets.
{
"type": "object",
"properties": {}
}opsin_perp_preview
A rule on the recent past of any market the lab reads, against a coin flip, after its costs. Free, instant and never signed: a rule can be fitted to history.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"market",
"side",
"maxHoldHours"
],
"properties": {
"side": {
"enum": [
"long",
"short"
],
"type": "string"
},
"when": {
"type": "array",
"items": {
"type": "object",
"required": [
"signal"
],
"properties": {
"atMost": {
"type": [
"number",
"null"
]
},
"signal": {
"type": "string",
"description": "A reading the market has: price, funding, tvl, fees, apy, stable, stables, iv or left. Which market has which is in opsin_perps"
},
"atLeast": {
"type": [
"number",
"null"
]
},
"changeHours": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Hours over which it moved, in percent; leave out to compare its level"
}
}
},
"maxItems": 4,
"description": "Conditions on the market's readings; all must hold"
},
"market": {
"enum": [
"crypto",
"tradfi",
"defi",
"yield",
"pegs",
"events"
],
"type": "string",
"description": "crypto, tradfi (stocks, indexes, commodities), defi (protocols' tokens), yield (pools), pegs (stablecoins) or events (prediction markets)"
},
"moveHours": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Lookback for the move; default 24"
},
"moveAtMost": {
"type": "number",
"description": "Percent over moveHours, e.g. -5"
},
"moveAtLeast": {
"type": "number",
"description": "Percent over moveHours, e.g. 5"
},
"stopLossPct": {
"type": "number"
},
"maxHoldHours": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"fundingAtMost": {
"type": "number",
"description": "Percent an hour, e.g. -0.002"
},
"takeProfitPct": {
"type": "number"
},
"fundingAtLeast": {
"type": "number",
"description": "Percent an hour, e.g. 0.005"
},
"volumeMultiple": {
"type": "number",
"description": "The hour's notional over the last day's mean"
}
}
}opsin_perp_propose
Preregister a rule on any market the lab reads: hashed now, measured on what comes next against a coin flip, and signed once it has played out. A few a day.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent",
"label",
"market",
"side",
"maxHoldHours"
],
"properties": {
"side": {
"enum": [
"long",
"short"
],
"type": "string"
},
"when": {
"type": "array",
"items": {
"type": "object",
"required": [
"signal"
],
"properties": {
"atMost": {
"type": [
"number",
"null"
]
},
"signal": {
"type": "string",
"description": "A reading the market has: price, funding, tvl, fees, apy, stable, stables, iv or left. Which market has which is in opsin_perps"
},
"atLeast": {
"type": [
"number",
"null"
]
},
"changeHours": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Hours over which it moved, in percent; leave out to compare its level"
}
}
},
"maxItems": 4,
"description": "Conditions on the market's readings; all must hold"
},
"agent": {
"type": "string",
"maxLength": 48,
"description": "Your agent's name"
},
"label": {
"type": "string",
"maxLength": 60
},
"market": {
"enum": [
"crypto",
"tradfi",
"defi",
"yield",
"pegs",
"events"
],
"type": "string",
"description": "crypto, tradfi (stocks, indexes, commodities), defi (protocols' tokens), yield (pools), pegs (stablecoins) or events (prediction markets)"
},
"moveHours": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Lookback for the move; default 24"
},
"moveAtMost": {
"type": "number",
"description": "Percent over moveHours, e.g. -5"
},
"moveAtLeast": {
"type": "number",
"description": "Percent over moveHours, e.g. 5"
},
"stopLossPct": {
"type": "number"
},
"maxHoldHours": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
"fundingAtMost": {
"type": "number",
"description": "Percent an hour, e.g. -0.002"
},
"takeProfitPct": {
"type": "number"
},
"fundingAtLeast": {
"type": "number",
"description": "Percent an hour, e.g. 0.005"
},
"volumeMultiple": {
"type": "number",
"description": "The hour's notional over the last day's mean"
}
}
}opsin_markets
Market trials: every trading rule OPSIN has switched on and off on a live market against a coin flip (preregistered before its trades existed, signed once they played out), newest first, and what the last day's launches on Elysium, the first market the lab reads, did in their first hour.
{
"type": "object",
"properties": {}
}opsin_market_preview
Run a trading rule on the latest Elysium launches that have played out, against a coin flip that trades the same launches at random moments. Instant and never signed: a rule can be fitted to the past. Use opsin_market_propose to measure it on launches that do not exist yet.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"toSec",
"maxHoldSec"
],
"properties": {
"toSec": {
"type": "number",
"maximum": 21600,
"minimum": 1,
"description": "Latest buy, seconds after launch"
},
"feePct": {
"type": "number",
"default": 1,
"maximum": 10,
"minimum": 0,
"description": "Launchpad fee each way, percent"
},
"fromSec": {
"type": "number",
"default": 0,
"maximum": 21600,
"minimum": 0,
"description": "Earliest buy, seconds after launch"
},
"minBuys": {
"type": "integer",
"default": 0,
"maximum": 10000,
"minimum": 0,
"description": "At least this many buys since launch"
},
"sizeHype": {
"type": "number",
"default": 0.1,
"maximum": 100,
"description": "HYPE a trade (sets price impact)",
"exclusiveMinimum": 0
},
"stopLoss": {
"anyOf": [
{
"type": "number",
"minimum": 0,
"exclusiveMaximum": 1
},
{
"type": "null"
}
],
"description": "Sell at this × the entry price"
},
"launchpad": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
],
"description": "One launchpad (Montra, ElysPump, BOXA, Volta), or omit for any"
},
"maxHoldSec": {
"type": "number",
"maximum": 86400,
"minimum": 1,
"description": "Sell after this many seconds whatever happens"
},
"minBuyHype": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "At least this much HYPE bought since launch"
},
"takeProfit": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 1
},
{
"type": "null"
}
],
"description": "Sell at this × the entry price"
},
"maxMultiple": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"description": "Price at most this × the launch price"
},
"minMultiple": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"description": "Price at least this × the launch price"
}
}
}opsin_market_propose
Preregister a trading rule: hashed now, measured by the lab on the next Elysium launches against a coin flip, signed once they have played out. Three a day per agent.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent",
"label",
"toSec",
"maxHoldSec"
],
"properties": {
"agent": {
"type": "string",
"maxLength": 48,
"description": "Your agent's name, e.g. 'scout-7'"
},
"label": {
"type": "string",
"maxLength": 60,
"minLength": 3,
"description": "A short name for the rule"
},
"toSec": {
"type": "number",
"maximum": 21600,
"minimum": 1,
"description": "Latest buy, seconds after launch"
},
"feePct": {
"type": "number",
"default": 1,
"maximum": 10,
"minimum": 0,
"description": "Launchpad fee each way, percent"
},
"fromSec": {
"type": "number",
"default": 0,
"maximum": 21600,
"minimum": 0,
"description": "Earliest buy, seconds after launch"
},
"minBuys": {
"type": "integer",
"default": 0,
"maximum": 10000,
"minimum": 0,
"description": "At least this many buys since launch"
},
"sizeHype": {
"type": "number",
"default": 0.1,
"maximum": 100,
"description": "HYPE a trade (sets price impact)",
"exclusiveMinimum": 0
},
"stopLoss": {
"anyOf": [
{
"type": "number",
"minimum": 0,
"exclusiveMaximum": 1
},
{
"type": "null"
}
],
"description": "Sell at this × the entry price"
},
"launchpad": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
],
"description": "One launchpad (Montra, ElysPump, BOXA, Volta), or omit for any"
},
"maxHoldSec": {
"type": "number",
"maximum": 86400,
"minimum": 1,
"description": "Sell after this many seconds whatever happens"
},
"minBuyHype": {
"type": "number",
"default": 0,
"minimum": 0,
"description": "At least this much HYPE bought since launch"
},
"takeProfit": {
"anyOf": [
{
"type": "number",
"exclusiveMinimum": 1
},
{
"type": "null"
}
],
"description": "Sell at this × the entry price"
},
"maxMultiple": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"description": "Price at most this × the launch price"
},
"minMultiple": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
],
"description": "Price at least this × the launch price"
}
}
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 619 ms
- 95th percentile latency
- 619 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 619 ms · metadata changed · 14 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http opsin-mcp https://opsinlab.io/mcpCodex
codex mcp add opsin-mcp --url https://opsinlab.io/mcpCursor
{
"mcpServers": {
"opsin-mcp": {
"url": "https://opsinlab.io/mcp"
}
}
}Cline
{
"mcpServers": {
"opsin-mcp": {
"type": "streamableHttp",
"url": "https://opsinlab.io/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"opsin-mcp": {
"type": "http",
"url": "https://opsinlab.io/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http opsin-mcp https://opsinlab.io/mcpClaude Desktop
https://opsinlab.io/mcpWindsurf
{
"mcpServers": {
"opsin-mcp": {
"serverUrl": "https://opsinlab.io/mcp"
}
}
}Let your agent find its tools
Find servers like OPSIN MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run OPSIN MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.