Koskamo

Prediction Market X Sentiment MCP

An MCP server that provides live sentiment scores for Polymarket and Kalshi prediction markets by analyzing X (Twitter) chatter using Grok. It offers free access to daily scores and paid access to detailed sentiment analysis, shifts, and market briefs via the x402 payment protocol on Base.

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.

Prediction Market X Sentiment MCP logo, by wballztrading1Community listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by wballztrading1
MCP endpoint (Streamable HTTP)
https://prediction-bot-iggf.onrender.com/mcp
Vendor documentation

What its tools do

9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

9 of 9 have a description · 9 of 9 declare behavior hints · 3 of 3 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve latest daily X-sentiment scores for tracked prediction markets
  • Get full Grok sentiment scores (-100 to 100) for specific market questions
  • Analyze sentiment shifts compared to prior cached scores
  • Obtain market briefs with scores, catalysts, and live odds

Source and maintenance

Community listingRegistry 0.2.0
Maintenance checked

Protocol and capabilities

Server
prediction-bot 0.2.0
MCP protocol negotiated in check
2025-11-25
Tools
9 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Polymarket/Kalshi prediction-market sentiment scored from live X (Twitter) chatter via Grok. Start with get_daily_scores (free: today's scores for the markets we track). Other free tools: get_catalog, get_pricing, get_sample, get_health. Paid tools (get_market_sentiment, get_market_brief, get_sentiment_shift, get_top_markets) settle in USDC on Base via x402 and return a payment quote unless the operator configured a wallet.

Tools

9 advertised

get_daily_scores — Daily market scores (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free. Latest daily X (Twitter) sentiment score for each prediction market we track (Polymarket), with the change since the previous day, the catalyst and the market's Yes price. For a fresh score on any other question use get_market_sentiment.

get_daily_scores input schema
{
  "type": "object",
  "title": "get_daily_scoresArguments",
  "properties": {}
}
get_daily_scores output schema
{
  "type": "object",
  "$defs": {
    "ScoredMarket": {
      "type": "object",
      "title": "ScoredMarket",
      "properties": {
        "label": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Label",
          "default": null,
          "description": "Short market label"
        },
        "score": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Score",
          "default": null,
          "description": "X sentiment: -100 very bearish .. +100 very bullish"
        },
        "shift": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Shift",
          "default": null,
          "description": "score minus score_before"
        },
        "stale": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Stale",
          "default": null,
          "description": "True when the score is more than 36 hours old"
        },
        "catalyst": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Catalyst",
          "default": null,
          "description": "One-sentence driver of the chatter"
        },
        "question": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Question",
          "default": null,
          "description": "Market question"
        },
        "market_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Market Id",
          "default": null,
          "description": "Polymarket market id"
        },
        "scored_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Scored At",
          "default": null,
          "description": "ISO-8601 UTC time of the score"
        },
        "score_before": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Score Before",
          "default": null,
          "description": "Previous daily score, if any"
        },
        "volume_signal": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Volume Signal",
          "default": null,
          "description": "rising, falling or flat"
        },
        "prior_scored_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Prior Scored At",
          "default": null
        },
        "polymarket_yes_price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Polymarket Yes Price",
          "default": null,
          "description": "Polymarket Yes price (0..1) at scoring time"
        }
      },
      "additionalProperties": true
    }
  },
  "title": "DailyScores",
  "properties": {
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Note",
      "default": null
    },
    "as_of": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "As Of",
      "default": null,
      "description": "Time of the newest score"
    },
    "count": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Count",
      "default": null
    },
    "markets": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ScoredMarket"
      },
      "title": "Markets"
    }
  },
  "additionalProperties": true
}
get_daily_scores annotations
{
  "title": "Daily market scores (free)",
  "readOnlyHint": true,
  "openWorldHint": true
}
get_catalog — Route catalog (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free. Machine-readable catalog of every route, price, network and pay-to address.

get_catalog input schema
{
  "type": "object",
  "title": "get_catalogArguments",
  "properties": {}
}
get_catalog output schema
{
  "type": "object",
  "title": "Catalog",
  "properties": {
    "free": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Free",
      "default": null,
      "description": "Free routes"
    },
    "paid": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Paid",
      "default": null,
      "description": "Paid routes with prices"
    },
    "asset": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Asset",
      "default": null
    },
    "pay_to": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Pay To",
      "default": null
    },
    "network": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Network",
      "default": null,
      "description": "Payment network (CAIP-2), e.g. eip155:8453 for Base"
    },
    "service": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Service",
      "default": null
    },
    "base_url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Base Url",
      "default": null
    }
  },
  "additionalProperties": true
}
get_catalog annotations
{
  "title": "Route catalog (free)",
  "readOnlyHint": true,
  "openWorldHint": true
}
get_pricing — Current prices (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free. Current USDC prices for the paid tools.

get_pricing input schema
{
  "type": "object",
  "title": "get_pricingArguments",
  "properties": {}
}
get_pricing output schema
{
  "type": "object",
  "title": "Pricing",
  "properties": {
    "ladder": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Ladder",
      "default": null
    },
    "network": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Network",
      "default": null
    },
    "currency": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Currency",
      "default": null
    },
    "price_lite": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Lite",
      "default": null,
      "description": "Price of /top and /shift, e.g. $0.35"
    },
    "price_brief": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Brief",
      "default": null,
      "description": "Price of /sentiment and /brief, e.g. $0.35"
    }
  },
  "additionalProperties": true
}
get_pricing annotations
{
  "title": "Current prices (free)",
  "readOnlyHint": true,
  "openWorldHint": true
}
get_sample — Example response (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free. Static example of a sentiment response (not live data) to preview the shape.

get_sample input schema
{
  "type": "object",
  "title": "get_sampleArguments",
  "properties": {}
}
get_sample output schema
{
  "type": "object",
  "title": "Sample",
  "properties": {
    "demo": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Demo",
      "default": null
    },
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Note",
      "default": null
    },
    "example_request": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Example Request",
      "default": null
    },
    "example_response": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Example Response",
      "default": null
    }
  },
  "additionalProperties": true
}
get_sample annotations
{
  "title": "Example response (free)",
  "readOnlyHint": true,
  "openWorldHint": true
}
get_health — Service status (free)
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Free. Service status, prices and the routes available.

get_health input schema
{
  "type": "object",
  "title": "get_healthArguments",
  "properties": {}
}
get_health output schema
{
  "type": "object",
  "title": "Health",
  "properties": {
    "routes": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Routes",
      "default": null
    },
    "status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Status",
      "default": null
    },
    "network": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Network",
      "default": null
    },
    "price_lite": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Lite",
      "default": null
    },
    "price_brief": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Brief",
      "default": null
    }
  },
  "additionalProperties": true
}
get_health annotations
{
  "title": "Service status (free)",
  "readOnlyHint": true,
  "openWorldHint": true
}
get_top_markets — Most-discussed markets on X
Advertised by the server during the last successful anonymous check.
Open-world

Paid (see get_pricing). The three Polymarket/Kalshi markets most discussed on X right now, each with a sentiment score (-100..100), catalyst and volume trend.

get_top_markets input schema
{
  "type": "object",
  "title": "get_top_marketsArguments",
  "properties": {}
}
get_top_markets output schema
{
  "type": "object",
  "$defs": {
    "PaymentOption": {
      "type": "object",
      "title": "PaymentOption",
      "properties": {
        "asset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Asset",
          "default": null
        },
        "pay_to": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pay To",
          "default": null
        },
        "scheme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Scheme",
          "default": null
        },
        "network": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Network",
          "default": null
        },
        "amount_usd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Usd",
          "default": null
        },
        "amount_atomic": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Atomic",
          "default": null
        }
      },
      "additionalProperties": true
    }
  },
  "title": "TopMarkets",
  "properties": {
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Url",
      "default": null
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error",
      "default": null,
      "description": "Set when a spend cap blocked the call"
    },
    "accepts": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentOption"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Accepts",
      "default": null
    },
    "markets": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Markets",
      "default": null,
      "description": "Up to 3 markets, each with score, catalyst, volume_signal"
    },
    "price_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Usd",
      "default": null
    },
    "scored_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Scored At",
      "default": null
    },
    "how_to_pay": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "How To Pay",
      "default": null
    },
    "payment_required": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Payment Required",
      "default": null,
      "description": "True when no payment was made; accepts and how_to_pay say how to pay"
    }
  },
  "additionalProperties": true
}
get_top_markets annotations
{
  "title": "Most-discussed markets on X",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_sentiment_shift — Sentiment change for a market
Advertised by the server during the last successful anonymous check.
Open-world

Paid (see get_pricing). Change in X sentiment for a market question since its previous score, with both timestamps and the catalyst.

get_sentiment_shift input schema
{
  "type": "object",
  "title": "get_sentiment_shiftArguments",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "title": "Q",
      "maxLength": 200,
      "minLength": 1,
      "description": "A Polymarket or Kalshi market question in plain words, e.g. 'Will the Fed cut rates in October 2026'. Up to 200 characters."
    }
  }
}
get_sentiment_shift output schema
{
  "type": "object",
  "$defs": {
    "PaymentOption": {
      "type": "object",
      "title": "PaymentOption",
      "properties": {
        "asset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Asset",
          "default": null
        },
        "pay_to": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pay To",
          "default": null
        },
        "scheme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Scheme",
          "default": null
        },
        "network": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Network",
          "default": null
        },
        "amount_usd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Usd",
          "default": null
        },
        "amount_atomic": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Atomic",
          "default": null
        }
      },
      "additionalProperties": true
    }
  },
  "title": "SentimentShift",
  "properties": {
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Url",
      "default": null
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error",
      "default": null,
      "description": "Set when a spend cap blocked the call"
    },
    "shift": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Shift",
      "default": null
    },
    "accepts": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentOption"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Accepts",
      "default": null
    },
    "catalyst": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Catalyst",
      "default": null
    },
    "question": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Question",
      "default": null
    },
    "price_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Usd",
      "default": null
    },
    "score_now": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Score Now",
      "default": null
    },
    "scored_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Scored At",
      "default": null
    },
    "how_to_pay": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "How To Pay",
      "default": null
    },
    "score_before": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Score Before",
      "default": null
    },
    "prior_scored_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Prior Scored At",
      "default": null
    },
    "payment_required": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Payment Required",
      "default": null,
      "description": "True when no payment was made; accepts and how_to_pay say how to pay"
    }
  },
  "additionalProperties": true
}
get_sentiment_shift annotations
{
  "title": "Sentiment change for a market",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_market_sentiment — Live sentiment for a market
Advertised by the server during the last successful anonymous check.
Open-world

Paid (see get_pricing). Fresh X (Twitter) sentiment for any Polymarket or Kalshi market question: score -100..100, the catalyst driving the chatter and the volume trend.

get_market_sentiment input schema
{
  "type": "object",
  "title": "get_market_sentimentArguments",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "title": "Q",
      "maxLength": 200,
      "minLength": 1,
      "description": "A Polymarket or Kalshi market question in plain words, e.g. 'Will the Fed cut rates in October 2026'. Up to 200 characters."
    }
  }
}
get_market_sentiment output schema
{
  "type": "object",
  "$defs": {
    "PaymentOption": {
      "type": "object",
      "title": "PaymentOption",
      "properties": {
        "asset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Asset",
          "default": null
        },
        "pay_to": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pay To",
          "default": null
        },
        "scheme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Scheme",
          "default": null
        },
        "network": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Network",
          "default": null
        },
        "amount_usd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Usd",
          "default": null
        },
        "amount_atomic": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Atomic",
          "default": null
        }
      },
      "additionalProperties": true
    }
  },
  "title": "MarketSentiment",
  "properties": {
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Url",
      "default": null
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error",
      "default": null,
      "description": "Set when a spend cap blocked the call"
    },
    "score": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Score",
      "default": null,
      "description": "-100 very bearish .. +100 very bullish"
    },
    "accepts": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentOption"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Accepts",
      "default": null
    },
    "catalyst": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Catalyst",
      "default": null
    },
    "question": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Question",
      "default": null
    },
    "price_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Usd",
      "default": null
    },
    "scored_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Scored At",
      "default": null
    },
    "how_to_pay": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "How To Pay",
      "default": null
    },
    "volume_signal": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Volume Signal",
      "default": null,
      "description": "rising, falling or flat"
    },
    "payment_required": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Payment Required",
      "default": null,
      "description": "True when no payment was made; accepts and how_to_pay say how to pay"
    }
  },
  "additionalProperties": true
}
get_market_sentiment annotations
{
  "title": "Live sentiment for a market",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_market_brief — Market brief with live odds
Advertised by the server during the last successful anonymous check.
Open-world

Paid (see get_pricing). Full brief for a market question: score, catalyst, volume trend, change since the previous score, a one-line summary and live Polymarket and Kalshi odds.

get_market_brief input schema
{
  "type": "object",
  "title": "get_market_briefArguments",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "title": "Q",
      "maxLength": 200,
      "minLength": 1,
      "description": "A Polymarket or Kalshi market question in plain words, e.g. 'Will the Fed cut rates in October 2026'. Up to 200 characters."
    }
  }
}
get_market_brief output schema
{
  "type": "object",
  "$defs": {
    "PaymentOption": {
      "type": "object",
      "title": "PaymentOption",
      "properties": {
        "asset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Asset",
          "default": null
        },
        "pay_to": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pay To",
          "default": null
        },
        "scheme": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Scheme",
          "default": null
        },
        "network": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Network",
          "default": null
        },
        "amount_usd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Usd",
          "default": null
        },
        "amount_atomic": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Amount Atomic",
          "default": null
        }
      },
      "additionalProperties": true
    }
  },
  "title": "MarketBrief",
  "properties": {
    "url": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Url",
      "default": null
    },
    "odds": {
      "anyOf": [
        {
          "type": "object",
          "additionalProperties": true
        },
        {
          "type": "null"
        }
      ],
      "title": "Odds",
      "default": null,
      "description": "Live Polymarket and Kalshi Yes prices for the matched market"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Error",
      "default": null,
      "description": "Set when a spend cap blocked the call"
    },
    "score": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Score",
      "default": null,
      "description": "-100 very bearish .. +100 very bullish"
    },
    "shift": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Shift",
      "default": null,
      "description": "Change since the previous score"
    },
    "accepts": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PaymentOption"
          }
        },
        {
          "type": "null"
        }
      ],
      "title": "Accepts",
      "default": null
    },
    "summary": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Summary",
      "default": null,
      "description": "One-line summary"
    },
    "catalyst": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Catalyst",
      "default": null
    },
    "question": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Question",
      "default": null
    },
    "price_usd": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Price Usd",
      "default": null
    },
    "scored_at": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Scored At",
      "default": null
    },
    "how_to_pay": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "How To Pay",
      "default": null
    },
    "score_before": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Score Before",
      "default": null
    },
    "volume_signal": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Volume Signal",
      "default": null,
      "description": "rising, falling or flat"
    },
    "payment_required": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Payment Required",
      "default": null,
      "description": "True when no payment was made; accepts and how_to_pay say how to pay"
    }
  },
  "additionalProperties": true
}
get_market_brief annotations
{
  "title": "Market brief with live odds",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 1 of 1 checks answered
  2. 2026-11-09: 1 of 1 checks answered

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
907 ms
95th percentile latency
907 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 907 ms · metadata changed · 9 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http prediction-market-x-sentiment-mcp-onrender https://prediction-bot-iggf.onrender.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add prediction-market-x-sentiment-mcp-onrender --url https://prediction-bot-iggf.onrender.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable prediction-market-x-sentiment-mcp-onrender in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "prediction-market-x-sentiment-mcp-onrender": {
      "url": "https://prediction-bot-iggf.onrender.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "prediction-market-x-sentiment-mcp-onrender": {
      "type": "streamableHttp",
      "url": "https://prediction-bot-iggf.onrender.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start prediction-market-x-sentiment-mcp-onrender and inspect its tools.
VS Code configuration
{
  "servers": {
    "prediction-market-x-sentiment-mcp-onrender": {
      "type": "http",
      "url": "https://prediction-bot-iggf.onrender.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http prediction-market-x-sentiment-mcp-onrender https://prediction-bot-iggf.onrender.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://prediction-bot-iggf.onrender.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "prediction-market-x-sentiment-mcp-onrender": {
      "serverUrl": "https://prediction-bot-iggf.onrender.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Prediction Market X Sentiment MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.