Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ internal/tools/
get_address.go # Derive address for any supported chain
get_eth_balance.go # Query native ETH balance
get_token_balance.go # Query ERC-20 token balance
find_token.go # Token discovery via CoinGecko API
search_token.go # Token discovery via CoinGecko API
internal/coingecko/client.go # CoinGecko REST API client
internal/blockchair/client.go # Blockchair UTXO chain API client (via Vultisig proxy)
internal/tools/
Expand Down
2 changes: 1 addition & 1 deletion internal/skills/files/evm-token-transfer.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Build an unsigned ERC-20 token transfer transaction, ready for signing.
If you only have a token name or symbol, look it up:

```
find_token(query: "USDC")
search_token(query: "USDC")
```

Note the `contract_address` and `decimals` from the result.
Expand Down
2 changes: 1 addition & 1 deletion internal/skills/files/spark-savings.md
Original file line number Diff line number Diff line change
Expand Up @@ -311,4 +311,4 @@ To redeem all shares, first query `balanceOf(address)` to get the exact share co
- **DO NOT** call admin functions: `setDepositCap`, `setVsr`, `setVsrBounds`, `grantRole`, `revokeRole`, `take`, `drip`, `upgradeToAndCall`. These require privileged roles the user does not have.
- **DO NOT** mix up decimals. Use the Decimals column in the address tables above. When in doubt, query `decimals()` on the vault.
- **DO NOT** deposit more than `maxDeposit(address)` returns for the receiver. The vault may have a deposit cap.
- **DO NOT** use `find_token` to look up Spark vault tokens (spUSDT, spUSDC, etc.). They are not listed on CoinGecko. Use the addresses in this skill directly.
- **DO NOT** use `search_token` to look up Spark vault tokens (spUSDT, spUSDC, etc.). They are not listed on CoinGecko. Use the addresses in this skill directly.
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ var platformToChain = map[string]string{
"zcash": "Zcash",
}

func newFindTokenTool() mcp.Tool {
return mcp.NewTool("find_token",
func newSearchTokenTool() mcp.Tool {
return mcp.NewTool("search_token",
mcp.WithDescription(
"Search for tokens by ticker symbol, name, or contract address. "+
"Returns token metadata and all known contract deployments across chains, "+
Expand All @@ -64,7 +64,7 @@ func newFindTokenTool() mcp.Tool {
)
}

func handleFindToken(cgClient *coingecko.Client) server.ToolHandlerFunc {
func handleSearchToken(cgClient *coingecko.Client) server.ToolHandlerFunc {
return func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
query, err := req.RequireString("query")
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion internal/tools/tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ func RegisterAll(s *server.MCPServer, store *vault.Store, ethClient *ethereum.Cl
s.AddTool(newGetAddressTool(), handleGetAddress(store))
s.AddTool(newGetETHBalanceTool(), handleGetETHBalance(store, ethClient))
s.AddTool(newGetTokenBalanceTool(), handleGetTokenBalance(store, ethClient))
s.AddTool(newFindTokenTool(), handleFindToken(cgClient))
s.AddTool(newSearchTokenTool(), handleSearchToken(cgClient))
s.AddTool(newGetUTXOBalanceTool(), handleGetUTXOBalance(store, bcClient))
s.AddTool(newGetUTXOTransactionsTool(), handleGetUTXOTransactions(store, bcClient))
s.AddTool(newListUTXOsTool(), handleListUTXOs(store, bcClient))
Expand Down
2 changes: 1 addition & 1 deletion internal/types/tokenresult.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/mark3labs/mcp-go/mcp"
)

// TokenSearchResult is the top-level JSON envelope returned by find_token.
// TokenSearchResult is the top-level JSON envelope returned by search_token.
type TokenSearchResult struct {
Tokens []TokenInfo `json:"tokens"`
}
Expand Down