MIKO MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MIKO MCP Servershow me the trending narratives"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

@projectmiko/mcp-server
MIKO exposed as a Model Context Protocol server. Any MCP-aware client (Claude Desktop, Claude Code, Cursor, OpenAI Agents, Gemini, or a custom runtime) can call MIKO's capabilities as tools. Each tool forwards to the MIKO REST API, which enforces auth, tier, and quota.
Two transports, one package:
stdio (default) — the client runs the server locally via
npx.Streamable HTTP — a hosted endpoint (
https://mcp.mikoprotocol.com/mcp) for clients that connect over the network.
Quick start
npx -y @projectmiko/mcp-serverOr point your client at the hosted endpoint — no install at all:
https://mcp.mikoprotocol.com/mcpBoth need a wallet-signed JWT (see Auth).
Related MCP server: x402 On-Chain Data MCP Server
Tools
Tool | REST endpoint | Min tier |
|
| Pro |
|
| Pro |
|
| Pro |
|
| Pro |
|
| Holder |
|
| Holder |
Tiers are set by the wallet's $MIKO holdings: Holder (≥ $100), Pro
(≥ $1,000), Whale (≥ $2,000). A tool admits its listed tier and above;
below it the call returns 403 tier_insufficient. Higher tiers also get larger
daily quotas.
Each tool result carries _meta with the call's tier, quota_remaining,
cache_status, and cache_age (from the REST response headers).
miko.narrative takes the token by address:
{ "token_address": "<token address>" }The former mint_address argument remains accepted as a deprecated alias. Do
not provide both names with different values.
Auth
Every call needs a wallet-signed JWT. Obtain one either from the dashboard
(https://api.mikoprotocol.com/dashboard — connect, sign, copy the token) or
via the REST auth flow:
POST /auth/noncewith{ "wallet": "<wallet address>" }→{ nonce }.Sign the nonce with the EVM wallet holding your $MIKO on Robinhood Chain — a standard EIP-191 personal signature (MetaMask's
personal_sign).POST /auth/verifywith{ wallet, signature, nonce }→{ jwt, tier, expires_at, quota }.
The JWT is valid ~24h. Supply it to the server as described below.
Client config
stdio (local, via npx)
{
"mcpServers": {
"miko": {
"command": "npx",
"args": ["-y", "@projectmiko/mcp-server"],
"env": { "MIKO_JWT": "<your_wallet_jwt>" }
}
}
}Claude Desktop config path: ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS), %APPDATA%\Claude\claude_desktop_config.json (Windows).
Streamable HTTP (hosted)
{
"mcpServers": {
"miko": {
"type": "http",
"url": "https://mcp.mikoprotocol.com/mcp",
"headers": { "Authorization": "Bearer <your_wallet_jwt>" }
}
}
}Environment variables
Var | Default | Purpose |
| — | wallet-signed JWT (stdio; for HTTP it comes from the request header) |
|
| REST API base URL |
|
| upstream request timeout |
| — | set |
|
| HTTP bind host |
|
| HTTP bind port |
| — | comma-separated Origin allowlist (browser callers) |
Develop / run
npm install
npm run check # syntax check
npm test # smoke tests (no network)
MIKO_JWT=<jwt> node src/index.js # stdio
node src/index.js --http # Streamable HTTP on 127.0.0.1:8091Self-hosting the HTTP endpoint
deploy/miko-mcp.service.example (systemd) runs the HTTP transport bound to
localhost; deploy/nginx-mcp.conf.example terminates TLS and reverse-proxies
/mcp, forwarding the Authorization header and disabling buffering for SSE.
Point MIKO_API_BASE at your REST API endpoint.
MIKO Protocol
Website · Docs · Insight Dashboard · REST API reference · Open model — Hugging Face · Ollama · X
Available Tools
6 toolsmiko.factcheckMIKO Fact-checkARead-only
Verify a factual claim through MIKO's multi-provider fact-check.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | The claim to verify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds 'multi-provider' context but does not disclose other behaviors like response format, sources used, or any constraints. With annotations present, the description provides minimal added value.
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?
The description is a single concise sentence with no wasted words, effectively conveying the core 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?
For a tool with one required parameter and no output schema, the description is minimally adequate. However, it lacks information about the response structure or possible return values, which would help an agent understand the output. Given the simplicity, this is a noticeable gap.
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 coverage is 100% with one parameter 'claim' described as 'The claim to verify'. The description does not add any meaning beyond what the schema provides, so baseline score of 3 is appropriate.
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 clearly states the tool's purpose: 'Verify a factual claim through MIKO's multi-provider fact-check.' This uses a specific verb ('verify') and resource ('claim'), and the tool name includes 'factcheck', distinguishing it from siblings like miko.persona or miko.narrative.
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 description implies usage for verifying claims but provides no explicit guidance on when to use this tool versus alternatives, nor does it mention any limitations or prerequisites. Usage is inferred from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miko.insightsMIKO InsightsBRead-only
Get MIKO's insights on a token symbol, token address, or narrative topic.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Token symbol, token address, or narrative topic |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The 'readOnlyHint' and 'openWorldHint' annotations are already present; the description adds context that insights are domain-specific but lacks details on behavior (e.g., data source, freshness, or output format). No contradictions with annotations.
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, front-loaded with core purpose. Efficient, but could be slightly improved by adding more specificity without extra length.
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?
With only one parameter and no output schema, the description is minimally adequate but does not explain what the insight output looks like, leaving the agent uncertain about the result format.
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 coverage is 100%, and the description repeats the schema's parameter description ('token symbol, token address, or narrative topic') without adding new semantic meaning. Baseline of 3 is appropriate.
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 clearly states the tool gets 'MIKO's insights' on a token symbol, address, or narrative topic. The verb and resource are specific, but the term 'insights' is broad and does not strongly differentiate from siblings like miko.narrative, which may also provide topic insights.
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 description implies the tool should be used for insights on specific tokens or narratives, but it does not provide explicit guidance on when to use it versus alternatives like miko.factcheck or miko.narrative, nor any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miko.narrativeMIKO Token NarrativeARead-only
Get MIKO's narrative read of a token address: what the token is doing on-chain right now, as a one-paragraph interpretation plus concrete observations. Use token_address; mint_address remains a deprecated compatibility alias.
| Name | Required | Description | Default |
|---|---|---|---|
| mint_address | No | Deprecated alias for token_address | |
| token_address | No | Token address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. Description adds that output is a narrative plus observations, but no further behavioral traits (e.g., data freshness, rate limits, or side effects) beyond what annotations cover.
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 sentences with no wasted words. Purpose and parameter guidance front-loaded. Every sentence earns its place.
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 no output schema, description adequately explains return format. Lacks error handling or edge-case info, but for a read-only tool with good annotations, this is sufficient.
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 coverage is 100%, so baseline is 3. Description adds value by marking mint_address as a deprecated alias and recommending token_address, which goes beyond 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?
Description clearly states the tool gets a narrative read of a token address with output format (one-paragraph interpretation plus observations). Distinguishes from siblings by its unique function, but does not explicitly contrast with miko.insights or miko.persona, leaving some ambiguity.
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 clear guidance to use token_address over deprecated mint_address. However, lacks explicit when-to-use versus alternatives like miko.insights, and no when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miko.narratives_trendingMIKO Trending NarrativesARead-only
Get the top narratives in the requested window, ranked by importance and uniqueness.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | Aggregation window (1d..7d) | 1d |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint) already indicate safety and non-exhaustiveness. The description adds that results are 'ranked by importance and uniqueness', which informs agents of the sorting behavior beyond what annotations provide. No contradictions.
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?
The description is a single concise sentence that front-loads the action and key details. No unnecessary words.
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 simple read-only list tool with one optional parameter and safety annotations, the description is largely adequate. It does not describe the output structure, but the tool's simplicity and lack of output schema make this a minor gap.
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 single parameter 'window' is fully described in the schema (enum, default, description). The tool description adds no additional semantic value beyond the schema, so baseline 3 is appropriate.
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 clearly states the tool retrieves 'top narratives', specifies the filtering by 'requested window', and notes they are 'ranked by importance and uniqueness', providing a distinct purpose from sibling tools like miko.narrative or miko.factcheck.
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 description does not provide guidance on when to use this tool versus alternatives such as miko.narrative or miko.factcheck, nor does it mention any prerequisites or exclusions. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miko.personaMIKO PersonaARead-only
Generate a short response in Miko's voice. Pass the content to react to or the topic to write about; the persona is built into the model. The call blocks until the text is ready; the first call after idle can take several minutes while the model starts.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | What Miko should respond to or write about |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds important behavioral details beyond annotations: the call blocks until ready and the first call after idle can take minutes. This complements the readOnlyHint and openWorldHint annotations without contradiction.
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 sentences, front-loaded with purpose, followed by essential behavioral context. No unnecessary words 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?
Given a single parameter with full schema coverage and no output schema, the description covers purpose, input, and blocking behavior. It does not specify output format or error conditions, but is adequate for the tool's simplicity.
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 coverage is 100% with a clear description for the only parameter. The tool description restates the same concept, adding no new semantic meaning beyond 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 clearly states it generates a short response in Miko's voice, specifying the verb and resource. It does not explicitly differentiate from sibling tools, but the unique persona focus is implied.
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?
No guidance on when to use this tool versus alternatives like miko.narrative or miko.insights. The description only says to pass content to react to or write about, lacking exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
miko.watchlistMIKO WatchlistARead-only
Tokens currently on the watchlist, each with a plain-language summary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds that each token has a plain-language summary, which is useful behavioral context beyond the annotations.
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?
A single, clear sentence with no wasted words. It is front-loaded and efficiently communicates the tool's function.
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 simple nature (no parameters, no output schema), the description adequately covers what the tool returns. It could mention if the list is sorted or paginated, but it is sufficient for most use cases.
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?
There are no parameters, and schema coverage is 100%. The description adds no parameter info, which is acceptable per the baseline of 4 for zero-parameter tools.
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 clearly states it retrieves tokens on the watchlist with plain-language summaries. It distinguishes well from sibling tools like factcheck, persona, and insights, which have different purposes.
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 description implies usage for checking the current watchlist but gives no explicit guidance on when to use it versus siblings or any prerequisites. Context signals show no parameters, but usage could be clearer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.2.2- First observed
miko.factcheck - First observed
miko.insights - First observed
miko.narrative - First observed
miko.narratives_trending - First observed
miko.persona - First observed
miko.watchlist
TDQS
Scored across 6 tools
Each tool serves a distinct purpose: fact-checking claims, generating persona responses, reading token narratives, providing insights, listing trending narratives, and managing watchlists. No functional overlap.
All tool names follow the consistent pattern 'miko.<action_noun>', using lowercase with a period separator, which is predictable and easy to understand.
With 6 tools, the server is well-scoped for a specialized crypto analysis agent. Each tool contributes meaningfully to the domain without being excessive or insufficient.
Core operations for token analysis (narrative, insights, trending, watchlist) and fact-checking are covered. Minor gaps include lack of watchlist management (add/remove) and detailed token metrics, but these are not essential for the intended use.
Maintenance
Related MCP Connectors
8 pay-per-call web intel tools over MCP. Free discovery, calls settle in USDC on Base (x402).
Pay-per-call DeFi and macro intel for AI agents. x402 USDC tools via streamable HTTP /api/mcp.
Production-grade MCP gateway delivering 8 real-time AI tools with instant x402 micropayments settled in USDC on Base Mainnet or SPL-USDC on Solana. Features Basescan contract auditing, wallet analytics, headless browser scraping, and pre-scraped oracle data feeds.
Production-grade MCP gateway delivering 8 real-time AI tools with instant x402 micropayments settled in USDC on Base Mainnet or SPL-USDC on Solana. Features Basescan contract auditing, wallet analytics, headless browser scraping, and pre-scraped oracle data feeds.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceExposes Musashi market intelligence as MCP tools for clients like Claude and ChatGPT, enabling text analysis, arbitrage detection, market movers, wallet activity, and smart money tracking.-
- FlicenseAqualityDmaintenancePay-per-call MCP server for on-chain blockchain data including wallet profiles, token metrics, protocol TVL, and gas prices.5-
- AlicenseAqualityBmaintenanceEnables Telegram analytics (channel stats, search, sentiment) via MCP tools with pay-per-call in USDC, no API keys needed.20581MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP tools to be gated behind per-call USDC micropayments with direct on-chain verification and settlement, removing the need for third-party payment facilitators.MIT