atv

atv

Provides AI-native access to Aarna's tokenized yield vaults on Ethereum and Base, with tools for vault discovery, performance metrics, transaction building, and portfolio tracking.

Category
访问服务器

README

ATV — DeFi Yield Vault MCP Server

npm version npm downloads smithery badge MCP Registry License: MIT TypeScript GitHub

AI-native access to Aarna's tokenized yield vaults on Ethereum and Base. 20 tools for vault discovery, performance metrics, transaction building, and portfolio tracking.

API Base URL: https://atv-api.aarna.ai MCP Endpoint: https://atv-api.aarna.ai/mcp (Streamable HTTP) API Docs: https://atv-api.aarna.ai/docs

API Access

The hosted API at https://atv-api.aarna.ai is available to anyone with a valid API key. All requests require an x-api-key header.

To get an API key, reach out to us at dev@aarnalab.dev.

Quick Start (30 seconds)

Once you have your API key, add the config to your client:

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "atv": {
      "url": "https://atv-api.aarna.ai/mcp",
      "headers": { "x-api-key": "YOUR_API_KEY" }
    }
  }
}

Claude Code

claude mcp add atv --transport http https://atv-api.aarna.ai/mcp --header "x-api-key: YOUR_API_KEY"

Cursor

Create .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "atv": {
      "url": "https://atv-api.aarna.ai/mcp",
      "headers": { "x-api-key": "YOUR_API_KEY" }
    }
  }
}

VS Code (Copilot)

Add to .vscode/settings.json:

{
  "mcp": {
    "servers": {
      "atv": {
        "url": "https://atv-api.aarna.ai/mcp",
        "headers": { "x-api-key": "YOUR_API_KEY" }
      }
    }
  }
}

mcp-remote (fallback for stdio-only clients)

{
  "mcpServers": {
    "atv": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://atv-api.aarna.ai/mcp", "--header", "x-api-key:YOUR_API_KEY"]
    }
  }
}

Available Tools (19)

Discovery & Metadata

Tool Description
list_vaults List all vaults, optionally filter by chain
get_vault Get metadata for a specific vault by address

Performance Metrics

Tool Description
get_vault_nav Current NAV (Net Asset Value) in USD
get_vault_tvl Current TVL (Total Value Locked) in USD
get_vault_apy APY breakdown: base + reward + total

Operational Status

Tool Description
get_deposit_status Whether deposits are paused
get_withdraw_status Whether withdrawals are paused
get_queue_withdraw_status Whether queued withdrawals are paused

Transaction Builders (Instant)

Tool Description
build_deposit_tx Build approve + deposit transaction steps
build_withdraw_tx Build withdrawal transaction steps
build_stake_tx Build approve + stake steps (timelock vaults)
build_unstake_tx Build unstake step (timelock vaults)

Transaction Builders (Queued)

Tool Description
build_queue_withdraw_tx Initiate a queued withdrawal
build_unqueue_withdraw_tx Cancel a pending queued withdrawal
build_redeem_withdraw_tx Claim a completed queued withdrawal

Analytics

Tool Description
get_vault_portfolio Underlying token portfolio
get_historical_nav NAV data points over a period (7, 30, 60, 360, max)
get_historical_tvl TVL data points over a period (7, 30, 60, 360, max)
get_total_tvl Platform-wide or per-vault TVL
get_user_investments User portfolio and positions

Example Prompts

  • "What DeFi vaults are available on Base?"
  • "What's the current APY for vault 0x...?"
  • "Build a deposit of 1000 USDC into vault 0x..."
  • "Show my portfolio across all Aarna vaults"
  • "Is the queue-withdraw paused on vault 0x...?"

REST API

All endpoints require x-api-key header and are prefixed with /v1.

Vault Endpoints

Method Path Description
GET /v1/vaults List all available vaults
GET /v1/vaults/tvl Platform-wide TVL
GET /v1/vaults/:address Vault metadata
GET /v1/vaults/:address/nav NAV price
GET /v1/vaults/:address/tvl Vault TVL
GET /v1/vaults/:address/apy APY breakdown
GET /v1/vaults/:address/deposit-status Deposit pause status
GET /v1/vaults/:address/withdraw-status Withdraw pause status
GET /v1/vaults/:address/queue-withdraw-status Queue-withdraw pause status
GET /v1/vaults/:address/portfolio Token portfolio
GET /v1/vaults/:address/historical-nav Historical NAV (days: 7,30,60,360,max)
GET /v1/vaults/:address/historical-tvl Historical TVL (days: 7,30,60,360,max)

Transaction Endpoints

Method Path Description
GET /v1/deposit-tx Build deposit calldata
GET /v1/withdraw-tx Build withdraw calldata
GET /v1/stake-tx Build stake calldata
GET /v1/unstake-tx Build unstake calldata
GET /v1/queue-withdraw-tx Build queue-withdraw calldata
GET /v1/unqueue-withdraw-tx Build unqueue-withdraw calldata
GET /v1/redeem-withdraw-tx Build redeem-withdraw calldata

Other Endpoints

Method Path Description
GET /v1/user-investments User portfolio data
ALL /mcp MCP server (Streamable HTTP)

Unauthenticated

Method Path Description
GET /health Health check
GET /openapi.json OpenAPI 3.1 spec
GET /docs Interactive API reference
GET /llms.txt LLM-friendly documentation (llms.txt spec)
GET /.well-known/agent.json A2A agent card

TypeScript SDK

import { AtvClient } from '@atv/sdk';

const client = new AtvClient({
  apiKey: 'atv_...',
  baseUrl: 'https://atv-api.aarna.ai',
});

const vaults = await client.vaults.list({ chain: 'base' });
const nav = await client.vaults.nav('0xVaultAddress');

Self-Hosting

docker build -t atv-api \
  --build-arg AWS_ACCESS_KEY_ID=... \
  --build-arg AWS_SECRET_ACCESS_KEY=... \
  --build-arg AWS_DEFAULT_REGION=us-east-1 .

docker run -p 3000:3000 atv-api

Required environment variables (set in AWS Secrets Manager under atv-sdk):

  • DATABASE_URL — PostgreSQL connection string
  • REDIS_URL — Redis host:port
  • RPC_URL_ETHEREUM — Ethereum JSON-RPC endpoint
  • RPC_URL_BASE — Base JSON-RPC endpoint
  • STRAPI_URL — CMS URL
  • STRAPI_API_TOKEN — CMS API token
  • ENGINE_BASE_URL — Aarna engine API

Development

Prerequisites

  • Node.js 20+
  • pnpm
  • PostgreSQL
  • Redis

Setup

pnpm install
cp .env.example apps/api/.env
# Fill in environment variables
pnpm migrate
pnpm dev

API: http://localhost:3000 | Docs: http://localhost:3000/docs

Repository Structure

atv-sdk/
├── apps/api/              # Express API server + MCP server
├── packages/sdk/          # TypeScript SDK (@atv/sdk)
├── packages/mcp-server/   # npm connector package (@aarna-ai/mcp-server-atv)
├── server.json            # MCP registry manifest
└── docs/                  # Guides

Build

pnpm build
# API: apps/api/dist/
# SDK: packages/sdk/dist/ (CJS + ESM)

Customer Onboarding

See docs/customer-onboarding.md for how to generate API keys, manage tiers, revoke access, and run admin queries.

License

MIT — see LICENSE.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选