Kxcoscan AI Tools
A production-ready MCP server that wraps the Kxcoscan blockchain explorer API into structured endpoints for AI agents. It enables users to query wallet balances, transaction histories, token transfers, and contract details via natural language.
README
Kxcoscan AI Tools
A production-ready AI tool server that wraps the Kxcoscan blockchain explorer API into clean, structured endpoints that any AI agent (Claude, GPT-4, etc.) can call directly.
Built with Next.js 14, deployed on Vercel, and includes an MCP (Model Context Protocol) server.
Architecture
kxcoscan-ai-tools/
├── app/
│ ├── api/
│ │ ├── balance/ GET /api/balance
│ │ ├── transactions/ GET /api/transactions
│ │ ├── token-transfers/ GET /api/token-transfers
│ │ ├── tx/ GET /api/tx
│ │ ├── contract/ GET /api/contract
│ │ ├── logs/ GET /api/logs
│ │ ├── token-info/ GET /api/token-info
│ │ ├── wallet-summary/ GET /api/wallet-summary
│ │ └── mcp/ POST /api/mcp (MCP JSON-RPC)
│ ├── page.tsx Interactive frontend dashboard
│ └── layout.tsx
├── components/
│ ├── ApiTester.tsx Interactive tool tester (client)
│ └── JsonDisplay.tsx Syntax-highlighted JSON viewer
├── lib/
│ ├── kxcoscan.ts Core API wrapper + utilities
│ └── cache.ts Edge cache response helpers
├── mcp/
│ └── server.ts MCP tool definitions
├── config/
│ └── modules.json Supported modules & AI tool manifest
├── types/
│ └── explorer.ts Full TypeScript types
└── vercel.json
Key design decisions
| Concern | Solution |
|---|---|
| No API key needed | Open requests with a descriptive User-Agent |
| Parallel fetches | Promise.allSettled — one failed upstream call won't break the response |
| AI-friendly output | Wei → KXCO conversion, ISO timestamps, human-readable status strings |
| Caching | Vercel edge Cache-Control: s-maxage headers (10s–1hr by tier) |
| MCP | Stateless JSON-RPC 2.0 handler — no persistent process needed on Vercel |
| CORS | * on all /api/* routes so any AI agent can call from any origin |
API Reference
All endpoints return JSON. All require a GET request with query parameters.
GET /api/balance
| Param | Required | Description |
|---|---|---|
address |
✅ | Wallet address 0x... |
{
"wallet": "0xABC...",
"balance": "102.345678",
"symbol": "KXCO",
"balanceRaw": "102345678000000000000"
}
GET /api/transactions
| Param | Required | Default | Description |
|---|---|---|---|
address |
✅ | — | Wallet address |
page |
1 | Page number | |
offset |
10 | Results per page (max 100) | |
sort |
desc | asc or desc |
|
startblock |
— | Filter from block | |
endblock |
— | Filter to block |
GET /api/token-transfers
| Param | Required | Description |
|---|---|---|
address |
✅ | Wallet address |
contractaddress |
Filter to a specific token | |
page |
Page number | |
offset |
Results per page |
GET /api/tx
| Param | Required | Description |
|---|---|---|
txhash |
✅ | Transaction hash 0x... (64 hex chars) |
Returns status: "success" | "failed" | "pending".
GET /api/contract
| Param | Required | Description |
|---|---|---|
address |
✅ | Contract address |
Returns abi, sourceCode, contractName, isVerified.
GET /api/logs
| Param | Required | Description |
|---|---|---|
address |
✅ | Contract address |
fromBlock |
Start block (default: 0) | |
toBlock |
End block (default: latest) | |
topic0 |
Event signature hash filter |
GET /api/token-info
| Param | Required | Description |
|---|---|---|
contractaddress |
✅ | Token contract address |
Returns name, symbol, decimals, totalSupply, totalSupplyFormatted.
GET /api/wallet-summary ⭐ AI-optimised
| Param | Required | Description |
|---|---|---|
address |
✅ | Wallet address |
Returns balance + last 5 transactions + last 5 token transfers + a natural-language summary string.
MCP Server
The /api/mcp endpoint implements Model Context Protocol over stateless HTTP.
Available tools
| Tool | Description |
|---|---|
wallet_balance |
Get native KXCO balance |
wallet_transactions |
List transactions |
token_transfers |
List token transfers |
wallet_summary |
Full wallet overview |
transaction_info |
Tx status by hash |
contract_abi |
Contract ABI + source |
token_info |
Token metadata |
event_logs |
Contract event logs |
Claude Desktop configuration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"kxcoscan": {
"url": "https://your-app.vercel.app/api/mcp",
"transport": "http"
}
}
}
Manual JSON-RPC call
# List tools
curl -X POST https://your-app.vercel.app/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# Call a tool
curl -X POST https://your-app.vercel.app/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"id": 1,
"params": {
"name": "wallet_summary",
"arguments": { "address": "0xYOUR_ADDRESS" }
}
}'
Deployment
Deploy to Vercel (recommended)
# 1. Install Vercel CLI
npm i -g vercel
# 2. Clone and install
git clone <this-repo>
cd kxcoscan-ai-tools
npm install
# 3. Deploy
vercel
# Follow prompts — no environment variables required.
# The API is open (no key needed).
Local development
npm install
npm run dev
# → http://localhost:3000
Build check
npm run build
npm run type-check
How AI agents call these tools
Option 1 — Direct HTTP (any agent framework)
import httpx
BASE = "https://your-app.vercel.app"
# Get wallet summary
r = httpx.get(f"{BASE}/api/wallet-summary", params={"address": "0xABC..."})
data = r.json()
print(data["summary"]) # Natural language overview
Option 2 — Claude tool use (Anthropic SDK)
import anthropic, httpx
client = anthropic.Anthropic()
def wallet_summary(address: str) -> dict:
return httpx.get(
"https://your-app.vercel.app/api/wallet-summary",
params={"address": address}
).json()
tools = [{
"name": "wallet_summary",
"description": "Get a comprehensive overview of a KXCO wallet",
"input_schema": {
"type": "object",
"properties": {
"address": {"type": "string", "description": "Wallet address 0x..."}
},
"required": ["address"]
}
}]
response = client.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
tools=tools,
messages=[{
"role": "user",
"content": "Analyse wallet 0xABC..."
}]
)
# Handle tool_use blocks
for block in response.content:
if block.type == "tool_use" and block.name == "wallet_summary":
result = wallet_summary(block.input["address"])
# Continue conversation with result...
Option 3 — MCP (Claude Desktop / Claude Code)
See MCP Server section above.
Adding new tools
- Add the new module/action to
config/modules.json - Create
app/api/<tool-name>/route.tsfollowing the existing pattern - Add the tool definition to
mcp/server.ts - Add the tool card to
components/ApiTester.tsx
The config/modules.json file serves as the canonical manifest — you can also parse it programmatically to auto-discover available tools.
Caching tiers
| Tier | s-maxage |
stale-while-revalidate |
Used for |
|---|---|---|---|
realtime |
10s | 30s | Live data |
short |
60s | 120s | Balances, transactions |
medium |
5min | 10min | Token metadata |
long |
1hr | 2hr | Contract ABIs (immutable) |
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.