Install
$ agentstack add mcp-augmnt-baton ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Baton
CLI toolkit and MCP server for the Tempo blockchain.
Features
- 126 MCP Tools - Complete blockchain operations accessible via Model Context Protocol
- CLI Interface - Command-line interface for all operations
- TIP-20 Token Operations - Transfer, approve, mint, burn, and role management
- DEX Integration - Swap, limit orders, and price calculations
- Account Management - Balances, nonces, fee tokens
- Access Key Management - Authorize and revoke access keys
- Policy System - Create and manage transfer policies (TIP-403)
- Rewards Distribution - Claim and distribute rewards
- Testnet Faucet - Fund addresses on testnet
Installation
CLI Usage (Recommended)
Install globally to use the baton command anywhere:
npm install -g @augmnt-sh/baton
Or run directly with npx (no installation required):
npx @augmnt-sh/baton
Programmatic Usage
Install as a project dependency:
npm install @augmnt-sh/baton
From Source
git clone https://github.com/augmnt/baton.git
cd baton
npm install
npm run build
Quick Start
The fastest way to get started is using the interactive setup wizard:
baton init
This will guide you through:
- Creating a new wallet or importing an existing one
- Choosing your network (testnet or mainnet)
- Saving your configuration to
.env - Optionally funding your wallet from the testnet faucet
Example Setup Flow
$ baton init
██████╗ █████╗ ████████╗ ██████╗ ███╗ ██╗
██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗████╗ ██║
██████╔╝███████║ ██║ ██║ ██║██╔██╗ ██║
██╔══██╗██╔══██║ ██║ ██║ ██║██║╚██╗██║
██████╔╝██║ ██║ ██║ ╚██████╔╝██║ ╚████║
╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
Welcome to Baton Setup
? How would you like to set up your wallet?
❯ Create a new wallet
Import existing wallet (private key)
Import from mnemonic phrase
? Generate recovery phrase (mnemonic)? Yes
✓ Wallet generated successfully!
Address: 0x742d35Cc6634C0532925a3b844Bc454e4438f44e
Mnemonic: word1 word2 word3 ... word12
⚠️ IMPORTANT: Write down your mnemonic phrase and store it safely!
? Which network would you like to use?
❯ Testnet (recommended for getting started)
Mainnet
? Save configuration to .env file? Yes
✓ Configuration saved to .env
? Fund wallet from testnet faucet? Yes
✓ Funded successfully!
🚀 You're all set!
Updating Configuration
To update your configuration later:
# Interactive configuration menu
baton config
# Or use specific commands:
baton config show # View current config
baton config set-key # Update private key (secure input)
baton config set-network # Change network
Security Note: The set-key command uses secure password-style input - your private key is never visible on screen or saved to shell history.
Configuration
Environment Variables
Baton uses the following environment variables:
| Variable | Required | Description | |----------|----------|-------------| | TEMPO_PRIVATE_KEY | For write ops | Private key for signing transactions | | TEMPO_RPC_URL | No | Custom RPC endpoint (defaults to Tempo testnet) | | TEMPO_EXPLORER_URL | No | Custom block explorer URL | | TEMPO_NETWORK | No | mainnet or testnet (default: testnet) |
Configuration Methods
Option 1: MCP Server Config (Recommended for Claude)
Pass environment variables directly when adding the MCP server:
claude mcp add baton -e TEMPO_PRIVATE_KEY=0x... -- npx @augmnt-sh/baton mcp
This is the most secure method as the key is stored in Claude's MCP configuration and not exposed in shell history or environment.
Option 2: Shell Profile
Add to ~/.zshrc or ~/.bashrc:
export TEMPO_PRIVATE_KEY=0x...
export TEMPO_NETWORK=testnet
Option 3: .env File
Create a .env file in the working directory:
TEMPO_PRIVATE_KEY=0x...
TEMPO_RPC_URL=https://rpc.moderato.tempo.xyz
TEMPO_NETWORK=testnet
Note: For MCP servers, the .env file must be in the directory where Claude is running (your project directory), not the baton installation directory.
CLI Usage
Setup Commands
# Interactive setup wizard (recommended for new users)
baton init
# Configuration management
baton config # Interactive config menu
baton config show # View current configuration
baton config set-key # Update private key (secure input)
baton config set-network # Change network (mainnet/testnet)
Wallet Operations
# Generate a new wallet
baton wallet new
# Generate with mnemonic
baton wallet new --mnemonic
# Derive address from private key
baton wallet derive
# Derive from mnemonic
baton wallet from-mnemonic "word1 word2 ..."
Account Operations
# Get all balances
baton balances
# Get specific token balance
baton account balance --token
# Get account info
baton account info
# Get nonce
baton account nonce
Token Operations
# Get token info
baton token info
# Transfer tokens
baton token transfer
# Transfer with memo
baton token transfer --memo "Payment for services"
# Approve spender
baton token approve
# Get allowance
baton token allowance
# Mint tokens (requires MINTER_ROLE)
baton token mint
# Burn tokens
baton token burn
DEX Operations
# Get swap quote
baton dex quote
# Execute swap
baton dex swap
# Place limit order
baton dex order --buy
baton dex order --sell
# Cancel order
baton dex cancel
# Get order info
baton dex order-info
# Price utilities
baton dex price --tick 100
baton dex price --price 1.01
Chain Operations
# Get chain info
baton chain info
# Get block number
baton chain block-number
# Get block
baton chain block
# Get transaction
baton chain tx
Faucet (Testnet)
# Fund address
baton faucet fund
# Check faucet status
baton faucet status
# Check cooldown
baton faucet cooldown
Global Options
# Use testnet
baton --network testnet
# Use custom RPC
baton --rpc https://custom-rpc.example.com
# JSON output
baton -o json
MCP Server
Starting the Server
baton mcp
Integration with Claude Code
Basic setup (read-only operations):
claude mcp add baton -- npx @augmnt-sh/baton mcp
With private key for write operations:
claude mcp add baton -e TEMPO_PRIVATE_KEY=0x... -- npx @augmnt-sh/baton mcp
For testnet:
claude mcp add baton -e TEMPO_NETWORK=testnet -e TEMPO_PRIVATE_KEY=0x... -- npx @augmnt-sh/baton mcp
To update configuration, remove and re-add:
claude mcp remove baton
claude mcp add baton -e TEMPO_PRIVATE_KEY=0x... -- npx @augmnt-sh/baton mcp
User-level (available in all projects):
claude mcp add -s user baton -e TEMPO_PRIVATE_KEY=0x... -- npx @augmnt-sh/baton mcp
Integration with Claude Desktop
Add the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"baton": {
"command": "node",
"args": ["/path/to/baton/dist/src/mcp-server.js"],
"env": {
"TEMPO_NETWORK": "testnet",
"TEMPO_PRIVATE_KEY": "0x..."
}
}
}
}
Or if installed globally via npm:
{
"mcpServers": {
"baton": {
"command": "npx",
"args": ["@augmnt-sh/baton", "mcp"],
"env": {
"TEMPO_NETWORK": "testnet"
}
}
}
}
Available Tools
The MCP server provides 126 tools organized by domain:
| Domain | Tools | Description | |--------|-------|-------------| | Chain | 5 | Block and transaction queries | | Wallet | 6 | Wallet generation and derivation | | Account | 13 | Balance and account info | | Token | 14 | TIP-20 token operations | | DEX | 10 | Swap and order management | | Fees | 9 | Fee token management | | Fee AMM | 7 | Fee liquidity operations | | Keychain | 11 | Access key management | | Policy | 8 | Transfer policy management | | Rewards | 10 | Rewards distribution | | History | 7 | Transfer history | | Faucet | 8 | Testnet faucet | | Contracts | 8 | Generic contract operations | | Utils | 10 | Utility functions |
Resources
tempo://tokens/known- Known token addressestempo://contracts/addresses- Contract addressestempo://contracts/abis/tip20- TIP-20 ABItempo://config/network- Current network config
Prompts
transfer-tokens- Guided token transfer workflowswap-tokens- Guided swap workflowcheck-account- Complete account overviewnew-wallet- Generate and fund new wallet
Programmatic Usage
import {
generateWallet,
getBalances,
transfer,
getSwapQuote,
swap,
} from '@augmnt-sh/baton'
// Generate wallet
const wallet = generateWallet()
console.log(wallet.address)
// Get balances
const balances = await getBalances('0x...')
// Transfer tokens
const result = await transfer({
token: '0x20c0000000000000000000000000000000000001',
to: '0x...',
amount: 100000000n, // 100 tokens (6 decimals)
})
// Swap tokens
const quote = await getSwapQuote({
tokenIn: '0x20c0000000000000000000000000000000000000',
tokenOut: '0x20c0000000000000000000000000000000000001',
amountIn: 100000000n,
})
const swapResult = await swap({
tokenIn: '0x20c0000000000000000000000000000000000000',
tokenOut: '0x20c0000000000000000000000000000000000001',
amountIn: 100000000n,
})
Key Concepts
6 Decimal Places
All TIP-20 tokens use 6 decimal places. Amounts in the CLI are human-readable:
# Transfer 100.5 tokens
baton token transfer 100.5
In code, use the smallest unit:
import { parseAmount, formatAmount } from '@augmnt-sh/baton'
const amount = parseAmount('100.5') // 100500000n
const formatted = formatAmount(100500000n) // "100.5"
Memo Encoding
Memos are encoded as bytes32:
# String memo (max 31 chars)
baton token transfer 100 --memo "Payment"
# Or hex bytes32
baton token transfer 100 --memo "0x..."
Tick Pricing
DEX prices use tick values:
import { priceToTick, tickToPrice } from '@augmnt-sh/baton'
const tick = priceToTick(1.0001) // Get tick for price
const price = tickToPrice(100) // Get price from tick
Known Tokens
| Token | Address | |-------|---------| | pathUSD | 0x20c0000000000000000000000000000000000000 | | AlphaUSD | 0x20c0000000000000000000000000000000000001 | | BetaUSD | 0x20c0000000000000000000000000000000000002 | | ThetaUSD | 0x20c0000000000000000000000000000000000003 |
Contract Addresses
| Contract | Address | |----------|---------| | TIP20FACTORY | 0x20fc000000000000000000000000000000000000 | | STABLECOINDEX | 0xdec0000000000000000000000000000000000000 | | FEEMANAGER | 0xfeec000000000000000000000000000000000000 | | ACCOUNTKEYCHAIN | 0xAAAAAAAA00000000000000000000000000000000 | | FEEAMM | 0xfee0000000000000000000000000000000000000 | | POLICYREGISTRY | 0x403000000000000000000000000000000000000 | | MULTICALL3 | 0xcA11bde05977b3631167028862bE2a173976CA11 |
Security
- Never share your private key
- Private keys are read from
TEMPO_PRIVATE_KEYenvironment variable - Keys are never logged or stored
- Use access keys for delegated permissions
License
MIT
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: augmnt
- Source: augmnt/baton
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.