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
Visit Server

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.

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

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.

Official
Featured