Pre-trade gate for agents on Robinhood Chain: signed ALLOW, REVIEW or DENY before a token buy.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Stops checks and events for a mandate, e.g. after selling the token.
mnd_…
The secret returned by create_mandate
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http actuary https://actuaryai.pro/mcp
Stops checks and events for a mandate, e.g. after selling the token.
| Argument | Type | Description |
|---|---|---|
| id* | string | mnd_… |
| secret* | string | The secret returned by create_mandate |
{
"type": "object",
"required": [
"id",
"secret"
],
"properties": {
"id": {
"type": "string",
"description": "mnd_…"
},
"secret": {
"type": "string",
"description": "The secret returned by create_mandate"
}
}
}For a token you hold: $0.05 per 7 days over x402 (pay via the REST API or the stdio MCP server). Re-checks a token against the policy about every 30 minutes. Changes (decision, owner, implementation, mint/pause/blacklist, supply) are recorded as events you poll with mandate_events; optionally also POSTed to an https webhook. Every event carries a signed signal: exit, watch or hold. Returns an id and a secret: keep the secret.
| Argument | Type | Description |
|---|---|---|
| token* | string | |
| policy | any | A preset name ("actuary-default-v1", "no-clones-v1") or a policy object. Default: actuary-default-v1. See gate_facts. |
| exit_on | string | When the signal says exit: on DENY (default) or on REVIEW too. |
| webhook_url | string | Optional public https URL. Leave out to poll events instead. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string"
},
"policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"policy": {
"type": "string",
"description": "Short name, e.g. my-agent-v1"
},
"deny_if": {
"type": "array",
"items": {
"type": "string"
},
"description": "e.g. \"mint_with_live_owner\", \"first_hour_swaps < 20\", \"!in_collector\""
},
"unknown": {
"enum": [
"review",
"deny",
"allow"
],
"type": "string",
"description": "What a deny rule with missing data means. Default review."
},
"review_if": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
],
"description": "A preset name (\"actuary-default-v1\", \"no-clones-v1\") or a policy object. Default: actuary-default-v1. See gate_facts."
},
"exit_on": {
"enum": [
"deny",
"review"
],
"type": "string",
"description": "When the signal says exit: on DENY (default) or on REVIEW too."
},
"webhook_url": {
"type": "string",
"description": "Optional public https URL. Leave out to poll events instead."
}
}
}Call BEFORE buying a token on Robinhood Chain. Returns ALLOW, DENY or REVIEW, every check with the fact it read, and an EIP-712 signed receipt. Missing data never gives ALLOW unless the policy says so.
| Argument | Type | Description |
|---|---|---|
| token* | string | Token contract address (0x…) |
| policy | any | A preset name ("actuary-default-v1", "no-clones-v1") or a policy object. Default: actuary-default-v1. See gate_facts. |
{
"type": "object",
"required": [
"token"
],
"properties": {
"token": {
"type": "string",
"description": "Token contract address (0x…)"
},
"policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"policy": {
"type": "string",
"description": "Short name, e.g. my-agent-v1"
},
"deny_if": {
"type": "array",
"items": {
"type": "string"
},
"description": "e.g. \"mint_with_live_owner\", \"first_hour_swaps < 20\", \"!in_collector\""
},
"unknown": {
"enum": [
"review",
"deny",
"allow"
],
"type": "string",
"description": "What a deny rule with missing data means. Default review."
},
"review_if": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
],
"description": "A preset name (\"actuary-default-v1\", \"no-clones-v1\") or a policy object. Default: actuary-default-v1. See gate_facts."
}
}
}Gate up to 10 tokens against one policy in one call, one receipt each. Counts as one Gate call per token.
| Argument | Type | Description |
|---|---|---|
| policy | any | A preset name ("actuary-default-v1", "no-clones-v1") or a policy object. Default: actuary-default-v1. See gate_facts. |
| tokens* | array |
{
"type": "object",
"required": [
"tokens"
],
"properties": {
"policy": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"policy": {
"type": "string",
"description": "Short name, e.g. my-agent-v1"
},
"deny_if": {
"type": "array",
"items": {
"type": "string"
},
"description": "e.g. \"mint_with_live_owner\", \"first_hour_swaps < 20\", \"!in_collector\""
},
"unknown": {
"enum": [
"review",
"deny",
"allow"
],
"type": "string",
"description": "What a deny rule with missing data means. Default review."
},
"review_if": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
],
"description": "A preset name (\"actuary-default-v1\", \"no-clones-v1\") or a policy object. Default: actuary-default-v1. See gate_facts."
},
"tokens": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10
}
}
}Every fact a policy rule may use (name, type, meaning), the rule syntax, the presets, and current pricing.
No arguments.
{
"type": "object",
"properties": {}
}A stored decision receipt by id (rcpt_…).
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
}Events a mandate recorded since a unix time (0 = all). Use next_since for the following poll.
| Argument | Type | Description |
|---|---|---|
| id* | string | mnd_… |
| since | number | |
| secret* | string | The secret returned by create_mandate |
{
"type": "object",
"required": [
"id",
"secret"
],
"properties": {
"id": {
"type": "string",
"description": "mnd_…"
},
"since": {
"type": "number"
},
"secret": {
"type": "string",
"description": "The secret returned by create_mandate"
}
}
}The newest signed signal for a mandate: exit, watch or hold, from its last decision, valid for one hour. Verify it, then your own code decides whether to sell; Actuary never trades.
| Argument | Type | Description |
|---|---|---|
| id* | string | mnd_… |
| secret* | string | The secret returned by create_mandate |
{
"type": "object",
"required": [
"id",
"secret"
],
"properties": {
"id": {
"type": "string",
"description": "mnd_…"
},
"secret": {
"type": "string",
"description": "The secret returned by create_mandate"
}
}
}Current decision, delivery mode, last check and failures of a mandate.
| Argument | Type | Description |
|---|---|---|
| id* | string | mnd_… |
| secret* | string | The secret returned by create_mandate |
{
"type": "object",
"required": [
"id",
"secret"
],
"properties": {
"id": {
"type": "string",
"description": "mnd_…"
},
"secret": {
"type": "string",
"description": "The secret returned by create_mandate"
}
}
}Checks that a receipt was signed by Actuary and that nothing in it changed. Pass the receipt object or its id.
| Argument | Type | Description |
|---|---|---|
| receipt* | any | A receipt object, or its id (rcpt_…) |
{
"type": "object",
"required": [
"receipt"
],
"properties": {
"receipt": {
"description": "A receipt object, or its id (rcpt_…)"
}
}
}Checks that a mandate signal was signed by Actuary, that nothing in it changed and that it is still fresh. Act only on valid and fresh.
| Argument | Type | Description |
|---|---|---|
| signal* | object | The signal object from an event or mandate_signal |
{
"type": "object",
"required": [
"signal"
],
"properties": {
"signal": {
"type": "object",
"description": "The signal object from an event or mandate_signal"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
Takes a password, API key or token as an argument, so the secret passes through the model's context and chat logs.
Fix: Read credentials from the server's own configuration (environment, OAuth) instead of a tool argument.