nodusai-mcp-server

NodusAI MCP Server
AI-Powered Signals for Prediction Markets — accessible to any AI agent via MCP.
AI agents connect to this server to get Oracle signals for Polymarket and Kalshi prediction markets. Signals are generated by Gemini 2.5 Flash with real-time web grounding.
How it works
Agent → nodusai.app → connect wallet → pay $1 USDC → get session token
↓
Agent → MCP Server (nodus_get_signal) → nodusai.app/api/prediction → signalVisit nodusai.app and connect your wallet
Paste a Polymarket or Kalshi market URL
(Optional) Add your desired outcome (YES / NO)
Pay $1 USDC — confirmed on-chain
Get a session token good for 3 queries
Use the session token with
nodus_get_signalin any MCP client
Related MCP server: telekash-mcp-server
Payment model
Cost: $1 USDC = 3 Oracle signal queries
Networks: Base, Ethereum, Avalanche (any EVM chain)
Token: USDC
Non-custodial: payments go directly on-chain via nodusai.app
Session: one payment = one session token = 3 queries (24h validity)
Available tools
Tool | Description |
| View pricing and how to get a session token |
| Get an Oracle signal using your session token |
| Audit grounding sources of a past signal |
| Your recent query history |
| Platform-wide stats (admin) |
| Full query registry dump (admin) |
Signal format
Every Oracle response follows NodusAI's structured schema:
{
"market_name": "Will the Fed cut rates in June 2026?",
"predicted_outcome": "YES",
"probability": 0.73,
"confidence_score": "HIGH",
"key_reasoning": "Recent FOMC minutes and inflation data suggest...",
"grounding_sources": [
{ "title": "Reuters: Fed signals rate path", "url": "https://..." },
{ "title": "AP: CPI data June 2026", "url": "https://..." }
]
}Deploy in 5 minutes
Option 1 — Railway (recommended)
Fork this repo on GitHub
Go to railway.app → New Project → Deploy from GitHub repo
Select your fork
Add environment variable:
NODUSAI_API_BASE=https://nodusai.appRailway auto-detects
railway.jsonand deploysCopy your Railway URL
Option 2 — Render (free tier)
Fork this repo
Go to render.com → New Web Service → connect your fork
Set Build command:
npm installand Start command:node src/server-http.jsAdd env var:
NODUSAI_API_BASE=https://nodusai.app
Option 3 — Fly.io
fly launch --name nodusai-mcp
fly secrets set NODUSAI_API_BASE=https://nodusai.app
fly deployConnect AI agents
Claude Desktop
File: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"nodusai": {
"url": "https://nodusai-mcp-production.up.railway.app/sse"
}
}
}Cursor
File: ~/.cursor/mcp.json
{
"mcpServers": {
"nodusai": {
"url": "https://nodusai-mcp-production.up.railway.app/sse",
"transport": "sse"
}
}
}Windsurf
File: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"nodusai": {
"serverUrl": "https://nodusai-mcp-production.up.railway.app/sse"
}
}
}Claude Code (CLI)
claude mcp add --transport sse nodusai https://nodusai-mcp-production.up.railway.app/sseCustom JS agent
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const client = new Client({ name: "my-agent", version: "1.0.0" }, { capabilities: {} });
await client.connect(new SSEClientTransport(new URL("https://nodusai-mcp-production.up.railway.app/sse")));
// Step 1 — get a session token at https://nodusai.app ($1 USDC)
// Step 2 — query the Oracle
const result = await client.callTool({
name: "nodus_get_signal",
arguments: {
marketUrl: "https://polymarket.com/event/...",
sessionToken: "your-session-token-from-nodusai.app",
desiredOutcome: "YES", // optional
}
});Custom Python agent
from mcp.client.sse import sse_client
from mcp import ClientSession
async with sse_client("https://nodusai-mcp-production.up.railway.app/sse") as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Get a session token at https://nodusai.app first ($1 USDC)
result = await session.call_tool("nodus_get_signal", {
"marketUrl": "https://kalshi.com/markets/...",
"sessionToken": "your-session-token-from-nodusai.app",
"desiredOutcome": "YES", # optional
})Local development
git clone https://github.com/NodusAI-Your-Prediction-Broker/nodusai-mcp
cd nodusai-mcp
npm install
# Dev mode (mock oracle — no real API calls needed)
npm run dev:httpTest with:
curl http://localhost:3000/health
curl http://localhost:3000/infoAvailable Tools
6 toolsnodus_admin_queriesC
[ADMIN] Full query registry dump.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral disclosure. The [ADMIN] prefix hints at authorization requirements and 'dump' implies read-only bulk retrieval, but there is no disclosure regarding pagination behavior, default limits, performance impact of a full dump, or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at only four words with zero filler text. The [ADMIN] tag is appropriately front-loaded to signal privilege requirements immediately. However, the brevity crosses into under-specification given the lack of schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter administrative tool with no output schema and no annotations, the description provides only the bare minimum functional identifier. It fails to explain the scope of the registry, return structure, or the undocumented limit parameter, leaving significant gaps for an admin-level tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 0% description coverage for the 'limit' parameter, and the description makes no mention of this parameter whatsoever. With zero schema documentation, the description fails to compensate by explaining what 'limit' constrains (e.g., number of queries, registry entries) or its default behavior when omitted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the tool performs a 'Full query registry dump' with an [ADMIN] prefix indicating privileged access, which specifies verb and resource. However, it fails to differentiate from sibling 'nodus_query_history' which also relates to queries, leaving ambiguity about when to use which.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus siblings (e.g., when to dump registry vs. query history), no prerequisites mentioned beyond the implicit [ADMIN] tag, and no warnings about the 'limit' parameter usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodus_admin_statsA
[ADMIN] Platform stats: total queries, breakdown by platform.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full disclosure burden. It successfully indicates the return data structure (aggregate totals and platform breakdowns) but omits safety details like read-only nature, rate limits, or authentication requirements beyond the '[ADMIN]' hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every word earns its place: the '[ADMIN]' tag immediately scopes privilege level, 'Platform stats' declares the action and resource, and 'total queries, breakdown by platform' specifies the return data. Zero redundancy in a single efficient sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters) and lack of output schema, the description adequately explains what data will be returned (aggregated statistics). It could be improved by noting whether data is real-time or cached.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema contains zero properties with 100% description coverage. Per the baseline rules for zero-parameter tools, this earns a default score of 4 since no parameter explanation is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '[ADMIN] Platform stats: total queries, breakdown by platform' provides a specific verb (stats), clear resource (platform), and distinguishes itself from siblings like nodus_get_signal (individual records) and nodus_query_history (historical logs vs aggregate statistics).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The '[ADMIN]' prefix implies administrative context and privilege requirements, but there is no explicit guidance on when to use this versus nodus_admin_queries or other sibling tools, nor when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodus_get_signalA
Get an Oracle signal for a Polymarket or Kalshi prediction market. Requires a session token from nodusai.app ($1 USDC = 3 queries). Optionally pass a desiredOutcome (YES/NO) to focus the analysis. Returns probability, confidence, reasoning, and grounding sources.
| Name | Required | Description | Default |
|---|---|---|---|
| marketUrl | Yes | Full URL of the Polymarket or Kalshi market | |
| sessionToken | Yes | Session token from nodusai.app (pay $1 USDC to get one) | |
| desiredOutcome | No | (Optional) Desired outcome to analyze e.g. YES or NO | |
| walletAddress | No | (Optional) Your wallet address for query history | |
| agentName | No | (Optional) Name for your agent in the registry |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden and succeeds well: it reveals the cost structure ($1 USDC = 3 queries), authentication requirement, and specific return structure (probability, confidence, reasoning, grounding sources). Minor gap: no mention of rate limits, caching behavior, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-structured sentences: (1) purpose and scope, (2) prerequisites/cost and optional inputs, (3) return values. No redundancy or wasted words; information density is high with front-loaded purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description fully compensates by detailing the return structure. It covers the critical business logic (payment), platform constraints (Polymarket/Kalshi), and optional parameters. Slight gap: no mention of error handling or rate limits, but acceptable for a query tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds value by clarifying the pricing unit (3 queries per dollar, resolving schema ambiguity) and adding behavioral context for desiredOutcome ('to focus the analysis'). It does not mention walletAddress or agentName, but these are optional and adequately described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') with a clear resource ('Oracle signal') and scope ('Polymarket or Kalshi prediction market'). It strongly distinguishes from sibling admin tools (admin_queries, admin_stats, pricing, history) by focusing on the core data retrieval use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: requires session token from nodusai.app, includes pricing model ($1 USDC = 3 queries), and guides optional parameter usage ('to focus the analysis'). However, it does not explicitly contrast with nodus_verify_signal or nodus_query_history to clarify when to get new signals versus verify existing ones or check history.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodus_pricingA
View NodusAI pricing and how to get started. Pay $1 USDC on nodusai.app → get a session token → use it for 3 Oracle signal queries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses critical behavioral context: external payment requirement ($1 USDC), external domain interaction (nodusai.app), token mechanics, and rate limits (3 queries per dollar). Sufficient for a zero-param info tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero waste. Arrow notation efficiently conveys procedural flow. Front-loaded with purpose, followed by specific mechanics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Appropriate for a zero-parameter informational tool. Explains cost structure and onboarding workflow comprehensively. Minor gap: doesn't specify output format (text vs structured), but sufficient given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters present; per scoring rules, baseline is 4. No additional parameter semantics required or possible to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'View' + resource 'NodusAI pricing' clearly identifies the tool's function. Distinguishes decisively from operational siblings (get_signal, query_history, etc.) by identifying itself as the informational/pricing entry point.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Establishes clear workflow dependency: explains the payment-token-query chain ('Pay $1 USDC → get session token → use for 3 Oracle signal queries'), implicitly guiding users to invoke this before paid operations. Lacks explicit 'when not to use' language.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodus_query_historyC
View your recent NodusAI oracle query history.
| Name | Required | Description | Default |
|---|---|---|---|
| walletAddress | Yes | Your wallet address | |
| limit | No | Max records (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal safety or operational context. While 'View' implies read-only, it doesn't confirm idempotency, mention authentication requirements beyond the wallet parameter, explain what 'recent' means temporally, or disclose pagination/sorting behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with efficient front-loading (verb-first). No redundant or wasted text. However, given the absence of annotations and the presence of similar sibling tools, the brevity arguably contributes to under-specification rather than optimal clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a low-complexity tool (2 flat parameters, no output schema) but leaves gaps due to missing annotations. The description identifies the return concept (history) but doesn't address scope limitations, error conditions, or the specific nature of 'oracle queries' within the NodusAI system.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, establishing a baseline of 3. The description adds 'your recent' which semantically links the walletAddress parameter to ownership and the limit parameter to recency, but this adds minimal explanatory value beyond the schema's own descriptions ('Your wallet address', 'Max records').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses specific verb 'View' and identifies the resource as 'NodusAI oracle query history'. The possessive 'your' effectively distinguishes this user-scoped tool from the sibling 'nodus_admin_queries'. However, it doesn't clarify the relationship to 'nodus_get_signal' or 'nodus_verify_signal' which operate on similar domain objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to use this tool versus siblings, particularly 'nodus_admin_queries'. It states what the tool does but offers no conditions, prerequisites (beyond the implicit wallet address), or workflow guidance for an agent navigating the available tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nodus_verify_signalA
Retrieve grounding sources for a past signal to verify the Oracle's reasoning.
| Name | Required | Description | Default |
|---|---|---|---|
| queryId | Yes | queryId from a previous nodus_get_signal call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden. It identifies the operation as a retrieval and mentions the domain concept ('grounding sources'), but omits safety profile (idempotency, rate limits), data retention policies, or what format/structure the grounding sources take.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single 12-word sentence with zero waste. Front-loaded with the action verb 'Retrieve,' immediately communicating the tool's function without filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter retrieval tool without output schema, the description adequately covers the core intent but leaves significant gaps: it does not explain what 'grounding sources' contain (citations, documents, confidence scores) or hint at the return structure, which would be valuable given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, documenting that queryId comes from a previous nodus_get_signal call. The description references 'past signal' which conceptually aligns with this parameter reference, but adds no syntax, format details, or examples beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb ('Retrieve'), resource ('grounding sources'), and scope ('for a past signal'). It distinguishes from nodus_get_signal by emphasizing 'verify' and 'past signal' versus getting a new signal, though it could explicitly name the sibling relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through 'to verify the Oracle's reasoning' and 'past signal,' suggesting this is for auditing existing results rather than new queries. However, there is no explicit 'Use this when...' guidance or direct comparison to nodus_get_signal in the description text (only in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes: admin queries vs. admin stats, get_signal vs. verify_signal, pricing vs. query history. However, 'nodus_admin_queries' and 'nodus_admin_stats' could be slightly confused as both provide administrative data, though their specific focuses differ.
All tool names follow a consistent 'nodus_' prefix with descriptive suffixes in snake_case, such as 'nodus_admin_queries', 'nodus_get_signal', and 'nodus_verify_signal'. This pattern is uniform across all six tools, making them predictable and easy to identify.
With 6 tools, the server is well-scoped for its purpose of providing Oracle signals and related administrative and historical functions. Each tool serves a clear role without unnecessary bloat, covering core operations like signal retrieval, verification, pricing, and history.
The tool set covers key aspects: signal retrieval, verification, pricing, query history, and admin functions. A minor gap is the lack of a tool for managing session tokens or handling payments directly, but agents can work around this using the provided pricing and signal tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live prediction markets: Polymarket + Kalshi prices, odds, order books. Pay-per-call USDC, no key.
Pay-per-call DeFi and macro intel for AI agents. x402 USDC tools via streamable HTTP /api/mcp.
Calibrated probabilistic foresight for AI agents, powered by live prediction-market signal.
Calibrated world model for AI agents. 40 tools: world state, markets, trading. Kalshi + Polymarket.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceReal-time prediction market intelligence for AI agents. Query Polymarket and Kalshi markets, wallet profiles, smart money leaderboards, social pulse signals, price candlesticks, and orderbook data — 13 agents, one MCP connection. Powered by 1.1TB+ of historical data.MIT
- AlicenseAqualityDmaintenancePrediction market probability oracle for AI agents. 26 tools across 500+ live markets from Kalshi and Polymarket. Cross-source arbitrage detection, structured TPF signals, Kelly Criterion sizing, agent performance tracking, and webhook alerts.9671MIT
- FlicenseNot gradedqualityBmaintenanceA monetizable remote MCP server that provides prediction-market intelligence tools for AI agents, enabling discovery, evaluation, and mispricing detection across venues like Polymarket and Kalshi with per-call payment.1

Veynor MCP Serverofficial
FlicenseNot gradedqualityDmaintenancePrediction market intelligence for AI agents, enabling real-time access to whale trades, market data, signals, and AI-synthesized analysis from Kalshi and Polymarket via a standardized protocol.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/NodusAI-Your-Prediction-Broker/nodusai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server