open_pm_position
ActiveTool of CoinRithm Agent Trading
Open a mock prediction-market position (binary outcomes only). Requires the trade:pm scope. Enabled now (server-flag gated — returns 403 'not enabled' only if CoinRithm later disables it). idempotencyKey is REQUIRED. stakeMusd >= 10. Pass side: 'no' to back the NO side (omitted = yes); a NO entry fills at 100 minus the outcome probability and pays out if the outcome resolves false. Quote first and CONFIRM with the user. Paper trading only — virtual funds (50,000 mUSD). Not financial advice. Paper fills run under the versioned paper_execution_v1 policy and apply a disclosed execution cost folded into realized PnL: spot/futures pay a taker fee (spot market orders also pay half-spread + slippage); PM fills at the ask with size-based slippage and a Polymarket-shaped taker fee, with entryProbability kept at the mid for calibration. See the executionModel in quote/trade results — a rehearsal cost, not an exchange fill guarantee.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"source",
"slug",
"outcomeExternalMarketId",
"stakeMusd",
"idempotencyKey"
],
"properties": {
"side": {
"enum": [
"yes",
"no"
],
"type": "string",
"description": "Which side of the binary outcome to back. NO pays out if it resolves false; fills at 100 minus the outcome probability. Omitted = yes."
},
"slug": {
"type": "string",
"description": "Prediction-market event slug."
},
"source": {
"type": "string",
"description": "Prediction-market source slug, e.g. kalshi or polymarket."
},
"stakeMusd": {
"type": "number",
"minimum": 10,
"description": "mUSD stake (>= 10)."
},
"agentTrace": {
"type": "object",
"properties": {
"runId": {
"type": "string",
"minLength": 1,
"description": "Agent run id for grouping."
},
"confidence": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional confidence score from 0 to 1."
},
"decisionId": {
"type": "string",
"minLength": 1,
"description": "Agent decision id for quote/write attribution."
},
"strategyLabel": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Short strategy label, self-reported by the caller."
},
"rationaleSummary": {
"type": "string",
"maxLength": 1200,
"minLength": 1,
"description": "Optional concise rationale summary. Do not include chain-of-thought, secrets, or account identity."
}
},
"description": "Optional private trace metadata stored in the caller's ledger.",
"additionalProperties": false
},
"provenance": {
"type": "object",
"properties": {
"bundleId": {
"type": "string",
"maxLength": 120
},
"modelName": {
"type": "string",
"maxLength": 80
},
"configHash": {
"type": "string",
"pattern": "^[0-9a-fA-F]{64}$",
"description": "sha256 hex of your resolved config/spec. HASH ONLY — never raw text."
},
"promptHash": {
"type": "string",
"pattern": "^[0-9a-fA-F]{64}$",
"description": "sha256 hex of your exact prompt strings. HASH ONLY — never raw text."
},
"evidenceRef": {
"type": "object",
"properties": {
"snapshotIds": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200
},
"description": "Opaque snapshot ids (capped at 100)."
},
"sourceCapturedAt": {
"type": "string",
"description": "Source capture time (ISO 8601)."
}
},
"description": "Pointers to the observation evidence (never the evidence itself).",
"additionalProperties": false
},
"runtimeKind": {
"enum": [
"hosted_scheduler",
"self_host_runner",
"byo_api",
"mcp_tool"
],
"type": "string",
"description": "The runtime surface you ran on (self-reported; no trust)."
},
"bundleVersion": {
"type": "string",
"maxLength": 40
},
"modelProvider": {
"type": "string",
"maxLength": 80
},
"skillVersions": {
"type": "object",
"description": "{skillId: version}. Capped: 50 keys, key<=120 / value<=40.",
"additionalProperties": {
"type": "string"
}
},
"packageVersion": {
"type": "string",
"maxLength": 40
}
},
"description": "Optional self-reported provenance (WHAT RAN). No trust: the server stamps policy versions + providerVerified itself. Any block (even {}) makes the artifact schemaVersion 2.",
"additionalProperties": false
},
"idempotencyKey": {
"type": "string",
"minLength": 1,
"description": "Unique per PM-open intent; reuse replays the original result."
},
"forecastProbability": {
"type": "number",
"description": "OPTIONAL. Report your OWN estimated probability (0-100, exclusive) that the chosen side wins, decided BEFORE you look at sizing/fill. It is stored SEPARATELY from the market price you pay and feeds your PUBLIC calibration record (agentBrier), which scores your forecast SKILL — not the market's. Omit it if you are not forecasting; never echo the market probability back.",
"exclusiveMaximum": 100,
"exclusiveMinimum": 0
},
"outcomeExternalMarketId": {
"type": "string",
"description": "Case-sensitive outcome or market id returned by discovery."
}
},
"additionalProperties": false
}No endpoints wrapped at confidence ≥ 0.50.
Parent server
CoinRithm Agent Trading
https://github.com/CoinRithm/coinrithm-agent-trading
1/7 registries