Skip to main content
Glama
Seitrace

Seitrace Insights MCP Server

Official
by Seitrace
README.md
<img src="https://assets.seitrace.com/seitrace-mcp.gif?v=10" width="1280"></img>

# Seitrace MCP

The essential MCP (Model Context Protocol) server for the Sei blockchain.

## Available tools 🧰

**Five tools that form the resource-based interface (use in order 1→2→3→4):**

- `list_resources` — list available resources (start here)
- `list_resource_actions` — list actions for a resource
- `get_resource_action_schema` — **REQUIRED** get the JSON Schema for an action before invoking
- `invoke_resource_action` — invoke an action with payload matching the schema
- `get_resource_action_snippet` — (optional) generate a code snippet to perform a resource action in the specified language

**Supported resources**

**General**

- `general_faucet` - enable requesting faucet for developers
- `general_rpc_lcd` - enable general rpc/lcd inquiries for the agents, and execute the rpc/lcd requests based on the demands
- `general_associations` — query hybrid associations (EOA/assets/txs) across EVM and native Sei. Returns simplified pointer/pointee fields when applicable.

**Insights**

- `insights_address` — Query address data: details, transactions, token transfers.
- `insights_erc20` — Query ERC-20 tokens: info, balances, transfers, holders.
- `insights_cw20` — Query CW20 tokens: info, balances, transfers, holders.
- `insights_native` — Query native tokens: info, transfers, balances, holders.
- `insights_ics20` — Query ICS20 tokens: info, transfers, balances, holders.
- `insights_erc721` — Query ERC-721 tokens: info, holders, instances, balances, transfers.
- `insights_erc1155` — Query ERC-1155 tokens: info, holders, instances, balances, transfers.
- `insights_cw721` — Query CW721 tokens: info, instances, balances, holders, transfers.
- `insights_smart_contract` — Query smart contract details.
- `insights_assets` — Search official assets by name/symbol/identifier and get asset details by identifier. Uses Sei gateway endpoints; search is performed offline over the fetched assets list.
- `insights_earnings` — Search/list earnings pools (APR/APY) for pacific-1 and fetch a pool by address. Returns simplified fields: name, address, url, image, provider, tvl, apr, apy.
- `insights_transactions` — Query transaction details by hash via gateway (pacific-1, atlantic-2, arctic-1).

**Smart Contract**

- `smart_contract` — Query smart contract state via Multicall3, search verified contracts, or download smart contract ABI from Seitrace (pacific-1, atlantic-2, arctic-1).

## Getting started

Make sure you obtain an API Key for free [here](https://seitrace.com/insights)

Check [installation guide](./INSTALL.md)

## Highlights ✨

What MCP provides to end users and assistants:

- Natural‑language access to Seitrace insights. The assistant performs API calls on your behalf.
- Self‑describing tool flow: enumerate actions, retrieve the input schema, then invoke.
- Input validation and clear error messages using per‑action JSON Schemas.
- Concise discovery: minimal list output; detailed payloads only when invoking actions.
- Integration with MCP‑enabled VS Code extensions (e.g., Continue, Cline).
- Simple, secure API key handling via environment variables (sent as `x-api-key`).
- Quick start via npx: `npx -y @seitrace/mcp`.

## Typical Flow 🔁

Using the MCP SDK, drive the resource-based flow via the five tools. **Important:** Always follow this sequence, especially step 3:

```js
// 1) Discover available resources
const resources = await client.callTool({ name: 'list_resouces', arguments: {} });
// -> { resources: ['erc20', 'erc721', 'native', ...] }

// 2) List actions for a resource
const actions = await client.callTool({
  name: 'list_resouce_actions',
  arguments: { resource: 'insights_erc20' },
});
// -> { resource: 'erc20', actions: [{ name, description }, ...] }

// 3) **REQUIRED** Get the JSON Schema for a specific action
// This step is critical - parameter names in descriptions may differ from actual schema
const schema = await client.callTool({
  name: 'get_resource_action_schema',
  arguments: { resource: 'insights_erc20', action: 'get_erc20_token_info' },
});
// -> { resource: 'insights_erc20', action: 'get_erc20_token_info', schema }
// The schema reveals exact parameter names like "q" instead of "query", "chain" instead of "chain_id", etc.

// 4) Invoke the action with payload matching the schema structure
const res = await client.callTool({
  name: 'invoke_resource_action',
  arguments: {
    resource: 'insights_erc20',
    action: 'get_erc20_token_info',
    payload: { chain: 'pacific-1', contract_address: '0x...' },
  },
});
// res.content[0].text -> "API Response (Status: 200):\n{ ... }"

// 5) Optionally, generate a code snippet for an action
const snippet = await client.callTool({
  name: 'get_resource_action_snippet',
  arguments: { resource: 'insights_erc20', action: 'get_erc20_token_info', language: 'node' },
});
// -> { resource, action, language, snippet }
```

The server validates `payload` against the action’s schema and returns a pretty-printed JSON body when applicable.

## Requirements 🔧

- Node.js 20+
- A Seitrace Insights API key (optional for discovery, required for most live calls), obtain it [here](https://seitrace.com/insights?chain=pacific-1)

## Install 📦

```bash
npm install
```

## Configure 🔐

Copy `.env.example` to `.env` and set your values as needed.

Environment variables:

- `API_BASE_URL` (optional) — defaults to `https://seitrace.com/insights`
- `SECRET_APIKEY` — Seitrace API key; used to set header `x-api-key`

## Build and Run 🏃

```bash
# Type-check and compile to build/
npm run build

# Run the MCP server over stdio (used by MCP clients)
npm start
```

This server is designed to be launched by an MCP-compatible client (e.g., via a command/args configuration). It communicates over stdio.

## End-to-End Test ✅

Run the E2E to verify the root resource flow and (optionally) a live positive-call:

```bash
# Optionally provide your API key so the positive path runs
SEITRACE_API_KEY=your_key_here npm run test:e2e
```

## Troubleshooting 🛠️

Make sure you run our e2e test to see the common errors we covered.

- E2E: `npm run test:e2e` (optional `E2E_DEBUG=1` for `[E2E]` logs).
- Node: Use v20+.

## Contributing 🤝

- Keep `tools/list` output compact. Do not embed per-action details there—fetch them via `getResourceActionSchema`.
- New endpoints should appear under the correct resource; root tool methods should provide discovery and invocation consistently.
- Prefer small, focused modules in `src/lib/` for shared logic.

## License 📄

See [LICENSE](./LICENSE)

## Support 📨

Please shoot emails to dev@cavies.xyz

TDQS

B3.2/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: list_resources enumerates available resources, list_resource_actions enumerates actions for a resource, get_resource_action_schema retrieves schema details, get_resource_action_snippet generates code, and invoke_resource_action executes the action. The descriptions clearly differentiate their functions, eliminating any ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, with verbs like 'get', 'list', and 'invoke' paired with descriptive nouns (e.g., 'resource_action_schema', 'resource_action_snippet'). This uniformity makes the set predictable and easy to understand.

Tool Count5/5

With 5 tools, the set is well-scoped for a server focused on resource action management. Each tool serves a specific role in the workflow (listing, schema retrieval, snippet generation, invocation), and none feel redundant or missing, making the count appropriate for the domain.

Completeness5/5

The tool surface provides complete coverage for interacting with resource actions: listing resources and their actions, retrieving schemas and code snippets, and invoking actions. This covers the full lifecycle from discovery to execution, with no apparent gaps for the server's purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues