
Security News
/Company News
Securing the Financial Frontier: How Capital One Uses Socket for Open Source Security
Capital One is partnering with Socket to proactively secure its open source supply chain.
@parlayx/mcp
Advanced tools
Model Context Protocol server for the ParlayX public API, a single trading interface over aggregated prediction markets. It gives an MCP client 30 read tools covering identity, the server clock, sports discovery, orders, fills, positions and balances, and 19 trading tools that stay unregistered unless you opt in.
Full guides, authentication and the API reference live at docs.parlayx.com.
Node.js 20 or newer, and a ParlayX API key. Requests are signed with Ed25519 via
node:crypto, so the server runs on a machine, not in a browser or an edge
runtime. The private key never leaves your machine and never travels on the
wire, only the signature does.
The server runs over stdio and reads its credentials from the client's env block. Nothing is passed as a tool argument.
Claude Code:
claude mcp add --env PARLAYX_KEY_ID=your-key-id --env PARLAYX_PRIVATE_KEY_HEX=your-seed \
--transport stdio parlayx -- npx -y @parlayx/mcp
The -- separator is required, and at least one other option has to sit between
the last --env and the server name, or the CLI reads the name as another
env pair.
Claude Desktop, in
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"parlayx": {
"command": "npx",
"args": ["-y", "@parlayx/mcp"],
"env": {
"PARLAYX_KEY_ID": "your-key-id",
"PARLAYX_PRIVATE_KEY_HEX": "your-seed"
}
}
}
}
Cursor, in .cursor/mcp.json, takes the same shape and additionally resolves
${env:NAME}, so the seed can stay in your shell environment instead of in a
file:
{
"mcpServers": {
"parlayx": {
"command": "npx",
"args": ["-y", "@parlayx/mcp"],
"env": {
"PARLAYX_KEY_ID": "${env:PARLAYX_KEY_ID}",
"PARLAYX_PRIVATE_KEY_HEX": "${env:PARLAYX_PRIVATE_KEY_HEX}"
}
}
}
}
| Variable | Required | Meaning |
|---|---|---|
PARLAYX_KEY_ID | yes | The key id issued with your signing keypair. |
PARLAYX_PRIVATE_KEY_HEX | yes | The Ed25519 private key seed, 64 lowercase hex characters. |
PARLAYX_MCP_ALLOW_TRADING | no | Set to 1 to register the trading tools. Off by default. |
The trading tools place real orders against real money. They register only
when both halves of the gate are satisfied: PARLAYX_MCP_ALLOW_TRADING=1 is set
in the client's env block, and the key itself carries the trade capability.
Without both, none of the *_submit_order, *_cancel_order or
limitless_replace_order* tools are advertised at all, so no model and no
auto-approval rule can reach them.
Both halves are resolved once at startup, so the tool list a client sees cannot change under it mid-session. Leave the opt-in off unless you intend an agent to trade, and keep a human in front of every order when you turn it on.
Read tools, always registered:
| Tool | Does |
|---|---|
whoami | Identify the calling key, its pod, scope and capabilities |
get_time | Read the server clock in Unix seconds |
list_sports | List the sports on the discovery surface |
list_competitions | List competitions, optionally filtered to one sport |
list_events | List the events in a competition |
list_event_markets | List an event's markets, outcomes and per-venue listings |
lookup_market | Resolve one venue identifier to its canonical markets |
polymarket_list_orders | Page through Polymarket orders |
polymarket_get_order | Read one Polymarket order |
polymarket_get_order_fills | List the fills on one Polymarket order |
polymarket_list_positions | List open Polymarket positions |
polymarket_get_balance | Read the Polymarket balance |
kalshi_list_orders | Page through Kalshi orders |
kalshi_get_order | Read one Kalshi order |
kalshi_get_order_fills | List the fills on one Kalshi order |
kalshi_list_order_queue_positions | Page through the queue position of each resting Kalshi order |
kalshi_list_positions | List open Kalshi positions |
kalshi_get_balance | Read the Kalshi balance |
prophetx_list_orders | Page through ProphetX orders |
prophetx_get_order | Read one ProphetX order |
prophetx_get_order_fills | List the fills on one ProphetX order |
prophetx_list_positions | List open ProphetX positions |
prophetx_get_balance | Read the ProphetX balance |
prophetx_get_ladder | List every price ProphetX accepts |
limitless_list_markets | Page through the tradeable Limitless markets |
limitless_list_orders | Page through Limitless orders |
limitless_get_order | Read one Limitless order |
limitless_get_order_fills | List the fills on one Limitless order |
limitless_list_positions | List open Limitless positions |
limitless_get_balance | Read the Limitless balance |
Trading tools, registered only behind the opt-in above:
| Tool | Does |
|---|---|
polymarket_submit_order | Place a Polymarket order |
polymarket_submit_orders | Place up to 15 Polymarket orders under one idempotency key |
polymarket_cancel_order | Cancel a Polymarket order |
polymarket_cancel_orders | Cancel resting Polymarket orders, all or by token or market |
kalshi_submit_order | Place a Kalshi order |
kalshi_submit_orders | Place up to 20 Kalshi orders under one idempotency key |
kalshi_amend_order | Reprice or resize a resting Kalshi order |
kalshi_decrease_order | Shrink a resting Kalshi order to an absolute count |
kalshi_cancel_order | Cancel a Kalshi order |
kalshi_cancel_orders | Cancel resting Kalshi orders, all or by ticker |
prophetx_submit_order | Place a ProphetX order |
prophetx_submit_orders | Place up to 20 GTC ProphetX orders under one idempotency key |
prophetx_cancel_order | Cancel a ProphetX order |
prophetx_cancel_orders | Cancel resting ProphetX orders, all or by strike |
limitless_submit_order | Place a Limitless order |
limitless_cancel_order | Cancel a Limitless order |
limitless_cancel_orders | Cancel resting Limitless orders, all, by id or by market |
limitless_replace_order | Cancel a Limitless order and replace it |
limitless_replace_orders | Cancel several Limitless orders and replace them |
The order-list tools return one page and hand back a nextPageToken; pass it
back as pageToken to read the next one.
Listings report venue as POLYMARKET, KALSHI or PROPHETX, while the tools
that place orders are named polymarket_*, kalshi_* and prophetx_*. Read the
venue off the listing and pick the matching tool. Limitless markets are not
carried by the discovery surface; read them with limitless_list_markets.
Everything the server logs goes to stderr, never to stdout, which belongs to the
protocol. Claude Desktop collects it in
~/Library/Logs/Claude/mcp-server-parlayx.log. Startup logs the server and SDK
versions, the key id, the pod and actor, and whether the trading tools
registered. Each call logs its tool name, duration and error code. Arguments,
response bodies and the private key are never logged, and the configured signing
key is replaced with [redacted] before anything is written.
If every call comes back unauthorized, check the host clock first: signed requests are only valid within 30 seconds of the ParlayX server clock, and the server tells you which of the two problems it is.
If the server never starts, the log names the reason:
startup identity check timed out after 10000ms means the ParlayX API did not
answer at all. Check network egress from the host; the process exits non-zero
rather than waiting for a handshake that will not come.If the server starts and then goes quiet, a line beginning transport error
reports a failure on the stdio connection itself, which is otherwise invisible
to the client.
MIT. See LICENSE.
FAQs
Model Context Protocol server for the ParlayX prediction-market API.
We found that @parlayx/mcp demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
/Company News
Capital One is partnering with Socket to proactively secure its open source supply chain.

Security News
Socket CTO Ahmad Nassri discusses how to keep AI agents from bypassing package blocks, limit credential access, and monitor their actions.

Security News
GPT-6 Astra tried to plant malicious code in simulated open source projects using fake GitHub accounts and deceptive PRs during an assigned CTF challenge.