Kunkafa
Market forecasts with their own track record, inside Claude, ChatGPT and other MCP apps.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"kunkafa": {
"url": "https://kunkafa.com/mcp"
}
}
}Remote endpoints
https://kunkafa.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢list_markets(cursor, limit)
Markets this account can read, each with the durations that have forecasts now, and what it follows. Page with page.nextCursor.
Input Schema
{
"type": "object",
"properties": {
"cursor": {
"description": "page.nextCursor from the previous reply, to read the next page; omit for the first page",
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[A-Za-z0-9_-]+$"
},
"limit": {
"description": "Items per page, 1 to 50; default 50",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_outlooks(market, durations, minDuration, maxDuration, maxDurationExclusive, ...)
Current forecasts for one market; one market per call by design, so data is not pulled in bulk. Choose durations (exact or a range) and optionally direction, confidence or target filters. At most 6 durations and 72 forecasts per call; calls can run in parallel.
Input Schema
{
"type": "object",
"properties": {
"market": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Market slug from list_markets, for example bitcoin"
},
"durations": {
"description": "Exact duration labels from list_markets, for example [\"1 hour\", \"6 hours\"]",
"minItems": 1,
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 24,
"pattern": "^\\d{1,5}\\s*[A-Za-z]{1,8}$"
}
},
"minDuration": {
"description": "Shortest duration to include, for example \"1 hour\"",
"type": "string",
"minLength": 2,
"maxLength": 24,
"pattern": "^\\d{1,5}\\s*[A-Za-z]{1,8}$"
},
"maxDuration": {
"description": "Longest duration to include, for example \"1 day\"",
"type": "string",
"minLength": 2,
"maxLength": 24,
"pattern": "^\\d{1,5}\\s*[A-Za-z]{1,8}$"
},
"maxDurationExclusive": {
"description": "true for \"less than maxDuration\"; default includes maxDuration",
"type": "boolean"
},
"direction": {
"description": "Default both",
"type": "string",
"enum": [
"up",
"down",
"both"
]
},
"minProbabilityPercent": {
"description": "Only forecasts whose probability (Kunkafa's confidence) is at least this",
"type": "number",
"minimum": 0,
"maximum": 100
},
"maxProbabilityPercent": {
"description": "Only forecasts whose probability is at most this",
"type": "number",
"minimum": 0,
"maximum": 100
},
"minTargetPercent": {
"description": "Only targets at least this far from the reference price, in percent",
"type": "number",
"minimum": 0,
"maximum": 10000
},
"maxTargetPercent": {
"description": "Only targets at most this far from the reference price, in percent",
"type": "number",
"minimum": 0,
"maximum": 10000
}
},
"required": [
"market"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_performance(market, probabilityPercent)
How often past forecasts touched their target, by confidence level and period. Pass probabilityPercent for the matching row (headline).
Input Schema
{
"type": "object",
"properties": {
"market": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Market slug from list_markets, for example bitcoin"
},
"probabilityPercent": {
"description": "A forecast's confidence; the headline shows past results at the nearest published level at or below it",
"type": "number",
"minimum": 0,
"maximum": 100
}
},
"required": [
"market"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_results(market, durations)
Recent example forecasts with their outcomes; not a full record.
Input Schema
{
"type": "object",
"properties": {
"market": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Market slug from list_markets, for example bitcoin"
},
"durations": {
"description": "Only these duration labels, for example [\"1 hour\", \"1 day\"]; default every duration",
"minItems": 1,
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"maxLength": 24,
"pattern": "^\\d{1,5}\\s*[A-Za-z]{1,8}$"
}
}
},
"required": [
"market"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_usage(cursor, limit)
Remaining allowances, what one get_outlooks call returns, and this connection's permissions, canFollow and expiry. Uses no allowance.
Input Schema
{
"type": "object",
"properties": {
"cursor": {
"description": "page.nextCursor from the previous reply, to read the next page; omit for the first page",
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "^[A-Za-z0-9_-]+$"
},
"limit": {
"description": "Items per page, 1 to 50; default 50",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🔴follow_market(market, confirmReplacement)
Follow a market for this account. Check canFollow in get_usage first. Replacing a followed market is allowed once every 30 days: ask the user, then call with confirmReplacement true.
Input Schema
{
"type": "object",
"properties": {
"market": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Market slug from list_markets, for example bitcoin"
},
"confirmReplacement": {
"description": "Set true only after the user agreed to replace a market they already follow",
"type": "boolean"
}
},
"required": [
"market"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🔴unfollow_market(market)
Stop following a market; its data stops being readable. Check canFollow in get_usage first.
Input Schema
{
"type": "object",
"properties": {
"market": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
"description": "Market slug from list_markets, for example bitcoin"
}
},
"required": [
"market"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_glossary
What every Kunkafa term and number means and how to read them. Call once before explaining results. No sign-in needed.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_account_links
Links to create an account, sign in and manage connections.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence