Keeta Network MCP Server
Enables cross-chain interoperability with the Ethereum blockchain, allowing for tokenized asset transfers and atomic swaps through Keeta's anchor system.
Integrates with Keeta's GitBook-hosted documentation to provide searchable protocol knowledge, architecture guides, and SDK references.
Supports the management, transfer, and tokenization of Tether (USDT) on the Keeta Network, including enforcement of protocol-level compliance and access controls.
Supports the use of the WebAuthn (SECP256R1) signature algorithm for secure, standards-based transaction signing and identity verification.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Keeta Network MCP Servercheck my balance and send 5 KTA to 0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Keeta Network MCP Server
A dynamic, self-describing MCP (Model Context Protocol) server that gives AI agents native access to the Keeta Network — a Layer 1 blockchain built for payments, asset transfers, cross-chain interoperability, and compliance-ready financial infrastructure.
This server is designed for autonomous agent use. It does not require updates when the Keeta SDK is expanded — new SDK methods are automatically discoverable at runtime through built-in introspection tools.
What is Keeta Network?
Keeta is a Layer 1 blockchain purpose-built for the global financial system:
10M+ TPS with 400ms settlement — faster than any traditional payment rail
Native tokenization — create tokens with built-in rules (transfer restrictions, allowlists, time locks) enforced at protocol level
Atomic swaps — instant exchange between any two assets on the network
Anchors — regulated entry/exit points that bridge Keeta to external systems (SWIFT, ACH, FedNow, other blockchains like Base/Ethereum). Any foreign asset tokenized on Keeta is 1:1 backed and can be returned to its native chain at any time
Built-in compliance — X.509 certificate-based identity for KYC/AML without storing PII on-chain
Permissions system — granular per-account and per-token access controls (ACCESS, ADMIN, SEND, RECEIVE, etc.)
DAG architecture — each account has its own chain, enabling parallel transaction processing
Multiple signature algorithms — ECDSA SECP256K1, SECP256R1 (WebAuthn), ED25519
Token: KTA (used for transaction fees and governance)
Networks: main (production), test (development with free faucet)
Related MCP server: Armor Crypto MCP
Quick Start
Install
git clone <this-repo>
cd kta-mcp
npm install
npm run buildConfigure (Recommended: Both MCP Servers)
Agents building on Keeta should use two MCP servers together:
keeta-docs— The Keeta documentation MCP (hosted by GitBook) provides searchable protocol knowledge: architecture, anchor system, SDK references, tutorialskeeta-sdk— This server provides the tools to execute operations on the network
Claude Code
# Add the Keeta docs MCP (read the docs, understand the protocol)
claude mcp add --transport http keeta-docs https://docs.keeta.com/~gitbook/mcp
# Add the Keeta SDK MCP (execute operations on the network)
claude mcp add keeta-sdk node /absolute/path/to/kta-mcp/build/index.jsClaude Desktop / Other MCP Clients
{
"mcpServers": {
"keeta-docs": {
"type": "url",
"url": "https://docs.keeta.com/~gitbook/mcp"
},
"keeta-sdk": {
"command": "node",
"args": ["/absolute/path/to/kta-mcp/build/index.js"]
}
}
}Why both? The docs MCP gives agents the knowledge to build correctly (protocol rules, anchor architecture, metadata formats, compliance requirements). The SDK MCP gives agents the tools to execute. Using only the SDK server without understanding the protocol is like having a hammer without knowing what you're building.
Development
npm run dev # Run with tsx (no build step)
npm run build # Compile TypeScript
npm start # Run compiled outputArchitecture: Dynamic & Future-Proof
This MCP server uses a discover-then-execute pattern instead of hardcoded tools. When the Keeta SDK adds new methods, classes, or features, agents discover them automatically without any server updates.
9 Tools — Organized in 3 Layers
┌─────────────────────────────────────────────────────────────────────┐
│ BOOTSTRAP TOOLS (entry points) │
│ keeta_generate_seed → create a cryptographic seed │
│ keeta_derive_account → derive account from seed + index │
│ keeta_request_test_tokens → fund an account on testnet │
│ keeta_get_network_config → get network ID, base token, etc. │
├─────────────────────────────────────────────────────────────────────┤
│ DISCOVERY TOOL (runtime introspection) │
│ keeta_list_sdk_methods → introspect any SDK object: │
│ "AnchorCatalog" → auto-discover ALL anchor services │
│ "AnchorService:<Name>" → drill into any service by name │
│ "AnchorLib:<Name>" → drill into any lib module by name │
│ "Client/UserClient/..." → core SDK introspection │
├─────────────────────────────────────────────────────────────────────┤
│ EXECUTION TOOLS (generic, call any SDK method by name) │
│ keeta_client_execute → read-only network queries │
│ keeta_user_client_execute → authenticated account operations │
│ keeta_builder_execute → batch operations → publish │
│ keeta_anchor_execute → ANY anchor service or lib module │
│ subtarget: "service" → dynamic: FX, KYC, AssetMovement... │
│ subtarget: "lib" → dynamic: Resolver, Certificates... │
│ subtarget: "metadata" → Resolver.Metadata shortcuts │
└─────────────────────────────────────────────────────────────────────┘Smart Argument Resolution
Arguments passed to execution tools are automatically resolved based on prefixes:
Pattern | Resolves To | Example |
|
| Token/account addresses |
|
| Token amounts, supplies |
|
| Permission sets |
|
| Key algorithm enums |
|
| Permission adjustment methods |
|
| Block operation types |
|
| Binary data |
Plain values | Pass through unchanged | Strings, numbers, booleans, objects |
Agent Workflow Guide
This section describes the recommended workflow for an AI agent using this MCP server. Follow these patterns for any Keeta operation.
Step 0: Read the Documentation (keeta-docs MCP)
Before writing any code, use the Keeta docs MCP server to understand the protocol:
# Via the keeta-docs MCP server (https://docs.keeta.com/~gitbook/mcp):
# - Search for "anchors" to understand the anchor system
# - Search for "block operations" to understand transaction types
# - Search for "permissions" to understand access control
# - Search for "certificates" to understand KYC/identity
# - Search for "tokenization" to understand native token creationThe docs MCP provides full access to https://docs.keeta.com/ — architecture guides, anchor system documentation, SDK references, and tutorials. This is essential context for building anything beyond basic transfers.
You can also read the keeta://docs/mcp-config resource from this server for setup details and key documentation links.
Step 1: Discover What's Available
Introspect the SDK to understand current capabilities:
keeta_list_sdk_methods({ target: "AnchorCatalog" }) → all anchor services & lib modules
keeta_list_sdk_methods({ target: "Client" }) → read-only methods
keeta_list_sdk_methods({ target: "UserClient" }) → authenticated methods
keeta_list_sdk_methods({ target: "Builder" }) → builder/batch methods
keeta_list_sdk_methods({ target: "Account" }) → account utilities + enums
keeta_list_sdk_methods({ target: "Block" }) → block types + operation types
keeta_list_sdk_methods({ target: "Config" }) → network configurationStep 2: Create an Account
keeta_generate_seed()
→ { seed: "A1B2C3..." }
keeta_derive_account({ seed: "A1B2C3...", index: 0 })
→ { address: "keeta_abc123...", algorithm: "SECP256K1", index: 0 }Step 3: Fund It (testnet)
keeta_request_test_tokens({ address: "keeta_abc123..." })
→ { status: "success", currentBalance: "5000000000000000000" }Step 4: Perform Operations
Read-only queries (no account needed):
keeta_client_execute({
network: "test",
method: "getAccountInfo",
args: ["keeta_abc123..."]
})
keeta_client_execute({
network: "test",
method: "getAllBalances",
args: ["keeta_abc123..."]
})Authenticated operations:
keeta_user_client_execute({
network: "test",
seed: "A1B2C3...",
accountIndex: 0,
method: "allBalances",
args: []
})
keeta_user_client_execute({
network: "test",
seed: "A1B2C3...",
method: "generateIdentifier",
args: ["ALGO:TOKEN"]
})Read UserClient properties:
keeta_user_client_execute({
network: "test",
method: "GET_PROPERTY",
args: ["baseToken"]
})Step 5: Batch Operations with Builder
The builder pattern is the most powerful way to perform multiple operations atomically:
keeta_builder_execute({
network: "test",
seed: "A1B2C3...",
accountIndex: 0,
operations: [
{
"method": "setInfo",
"args": [{
"name": "USDT",
"description": "Tether USD on Keeta",
"metadata": "eyJkZWNpbWFsUGxhY2VzIjo2fQ==",
"defaultPermission": "PERM:ACCESS"
}],
"options": { "account": "keeta_token_address..." }
},
{
"method": "modifyTokenSupply",
"args": ["BIGINT:1000000000000"],
"options": { "account": "keeta_token_address..." },
"computeAfter": true
},
{
"method": "send",
"args": ["keeta_recipient...", "BIGINT:500000000", "keeta_token_address..."]
}
],
autoPublish: true
})Key builder details:
computeAfter: trueforces block computation after that operation (important when later operations depend on earlier ones, e.g., minting supply before sending tokens)optionsis passed as the final argument — commonly{ account: "keeta_..." }to target a specific token/identifierautoPublish: true(default) callscomputeBlocks()andpublish()after all operations
Common Task Recipes
Create a Token
1. keeta_generate_seed() → seed
2. keeta_derive_account({ seed, index: 0 }) → ownerAddress
3. keeta_request_test_tokens({ address: ownerAddress })
4. keeta_user_client_execute({ network: "test", seed, method: "generateIdentifier", args: ["ALGO:TOKEN"] }) → tokenAddress
5. keeta_builder_execute({
network: "test", seed,
operations: [
{ method: "setInfo", args: [{ name: "MYTKN", description: "My Token", metadata: "<base64 of {decimalPlaces:6}>", defaultPermission: "PERM:ACCESS" }], options: { account: tokenAddress } },
{ method: "modifyTokenSupply", args: ["BIGINT:1000000000000"], options: { account: tokenAddress }, computeAfter: true },
{ method: "send", args: [ownerAddress, "BIGINT:100000000", tokenAddress] }
]
})Send Tokens
keeta_builder_execute({
network: "test", seed,
operations: [
{ method: "send", args: ["keeta_recipient...", "BIGINT:1000000", "keeta_token..."] }
]
})Atomic Swap
keeta_user_client_execute({
network: "test", seed,
method: "createSwapRequest",
args: [{
from: { account: "keeta_sender...", token: "keeta_tokenA...", amount: "BIGINT:1000" },
to: { account: "keeta_counterparty...", token: "keeta_tokenB...", amount: "BIGINT:500" }
}]
})FX Swap via Anchor
1. keeta_anchor_execute({ network: "test", subtarget: "service", serviceName: "FX", method: "getQuotes", args: [{ from: "keeta_kta...", to: "$USDC", amount: "BIGINT:1000000", affinity: "from" }] })
2. Use returned quote to execute the exchangeUpdate Permissions
keeta_user_client_execute({
network: "test", seed,
method: "updatePermissions",
args: ["keeta_principal...", "PERM:ADMIN,ACCESS", null, "ADJUST:SET"],
// optional: pass { account: "keeta_target..." } to target a specific token
})Resolve Anchor Metadata
keeta_anchor_execute({
network: "test",
subtarget: "lib",
libModule: "Resolver",
method: "getRootMetadata",
args: []
})KYC Identity Verification
// Discover KYC methods first
keeta_list_sdk_methods({ target: "AnchorKYCClient" })
// Start a KYC verification request
keeta_anchor_execute({
network: "test", seed, subtarget: "service", serviceName: "KYC",
method: "createVerification",
args: [{ account: "keeta_user...", countryCodes: ["US"] }]
})
// Get supported countries
keeta_anchor_execute({ network: "test", subtarget: "service", serviceName: "KYC", method: "getSupportedCountries", args: [] })Cross-Chain Asset Movement
// Find providers for a specific asset transfer
keeta_anchor_execute({
network: "test", seed, subtarget: "service", serviceName: "AssetMovement",
method: "getProvidersForTransfer",
args: [{ asset: { token: "keeta_usdc..." }, from: { location: "keeta" }, to: { location: "base" } }]
})
// Provider methods (after getting a provider): initiateTransfer, getTransferStatus,
// createPersistentForwardingAddress, listForwardingAddresses, listTransactions, shareKYCAttributesUsername Management
// Resolve a username to an account
keeta_anchor_execute({
network: "test", subtarget: "service", serviceName: "Username",
method: "resolve",
args: ["alice@provider"]
})
// Search usernames
keeta_anchor_execute({
network: "test", subtarget: "service", serviceName: "Username",
method: "search",
args: [{ search: "alice" }]
})
// Claim a username (requires funded account)
keeta_anchor_execute({
network: "test", seed, subtarget: "service", serviceName: "Username",
method: "claimUsername",
args: ["alice@provider", { account: "keeta_user..." }]
})Push Notifications
// Get notification providers
keeta_anchor_execute({
network: "test", subtarget: "service", serviceName: "Notification",
method: "getProviders",
args: []
})
// Provider methods: registerTarget, listTargets, deleteTarget,
// createSubscription, listSubscriptions, deleteSubscriptionEncrypted Containers & Certificates
// Create an encrypted container for sensitive data
keeta_anchor_execute({
network: "test", subtarget: "lib", libModule: "EncryptedContainer",
method: "fromPlaintext",
args: ["BUFFER_B64:aGVsbG8gd29ybGQ="]
})
// Parse a Keeta URI
keeta_anchor_execute({
network: "test", subtarget: "lib", libModule: "URI",
method: "parseKeetaURI",
args: ["keeta://..."]
})Building an Anchor (Agent Guide)
An anchor bridges the Keeta blockchain to an external system (another blockchain, a bank, a payment processor). Here's how an agent can build one:
What an Anchor Does
Holds liquidity — the anchor operator's account holds tokens on both sides
Provides FX quotes — tells users what exchange rate they'll get
Executes atomic swaps — uses Keeta's native swap mechanism to guarantee both sides complete
Exposes HTTP endpoints —
getEstimate,getQuote,createExchange,getExchangeStatus
Anchor Architecture
External System (e.g., Base chain)
↕ (bridge logic you build)
Anchor FX HTTP Server
├── /api/getEstimate → estimate conversion rate
├── /api/getQuote → firm quote with provider signature
├── /api/createExchange → execute the swap atomically
└── /api/getExchangeStatus → check swap status
↕ (Keeta SDK)
Keeta Network (native atomic swaps)Steps to Build an Anchor
Create anchor operator account — generate seed, derive account, fund it
Create or identify token pairs — the tokens being swapped (e.g., KTA ↔ USDC)
Fund liquidity — ensure the operator account holds enough of both tokens
Build an FX HTTP server — use
@keetanetwork/anchorSDK'sKeetaNetFXAnchorHTTPServerclass, providing yourgetConversionRateAndFeecallbackRegister anchor metadata — publish on-chain metadata with
setInfo()including the currency map and FX service endpointsTest — use the FX client tools to get quotes and execute swaps against your anchor
Registering Anchor Metadata On-Chain
keeta_user_client_execute({
network: "test", seed,
method: "setInfo",
args: [{
name: "MY_ANCHOR",
description: "My Custom FX Anchor",
metadata: "<use keeta_anchor_execute with subtarget 'metadata', method 'formatMetadata'>"
}]
})The metadata includes:
currencyMap— maps human-readable codes ($KTA,$USDC) to token addressesservices.fx.<ProviderName>— defines available conversion pairs and API endpoint URLs
Format Anchor Metadata
keeta_anchor_execute({
network: "test",
subtarget: "metadata",
method: "formatMetadata",
args: [{
version: 1,
currencyMap: { "$KTA": "keeta_kta...", "$USDC": "keeta_usdc..." },
services: {
fx: {
MyProvider: {
from: [{ currencyCodes: ["keeta_kta..."], to: ["keeta_usdc..."] }],
operations: {
getEstimate: "https://my-anchor.com/api/getEstimate",
getQuote: "https://my-anchor.com/api/getQuote",
createExchange: "https://my-anchor.com/api/createExchange",
getExchangeStatus: "https://my-anchor.com/api/getExchangeStatus/{exchangeID}"
}
}
}
}
}]
})SDK Discovery Targets
Core SDK
Target | What It Exposes | When To Use |
| Read-only methods: | Querying the network without an account |
| All Client methods plus: | Any operation requiring an account |
| Batch operations: | Multi-step operations that should execute atomically |
| Static utilities: | Account creation and key management |
| Block construction: | Low-level block building |
| Permission construction methods | Access control |
|
| Network configuration |
Anchor SDK (Fully Dynamic)
Anchor services and lib modules are not hardcoded — they are auto-discovered from SDK exports at runtime. When the SDK adds new services, they appear automatically.
Discovery flow:
keeta_list_sdk_methods({ target: "AnchorCatalog" })
→ lists all services and lib modules with their methods
keeta_list_sdk_methods({ target: "AnchorService:FX" })
→ drill into a specific service
keeta_list_sdk_methods({ target: "AnchorLib:Resolver" })
→ drill into a specific lib moduleExecution flow:
keeta_anchor_execute({
subtarget: "service",
serviceName: "FX", ← any service name from the catalog
method: "getQuotes",
args: [...]
})
keeta_anchor_execute({
subtarget: "lib",
libModule: "Resolver", ← any lib module from the catalog
method: "getRootMetadata",
args: []
})Currently discovered services (as of anchor SDK v0.0.49):
Service | Methods | Purpose |
|
| Foreign exchange and token swaps |
|
| Identity verification |
|
| Cross-chain/cross-rail transfers |
|
| On-chain usernames |
|
| Push notifications |
Currently discovered lib modules:
Module | Type | Key Members |
| class |
|
| namespace |
|
| class |
|
| namespace |
|
Future services and modules will auto-appear in the catalog without MCP server changes.
Project Structure
kta-mcp/
├── package.json # Dependencies: @keetanetwork/keetanet-client, @keetanetwork/anchor, @modelcontextprotocol/sdk
├── tsconfig.json # TypeScript ES2022 + Node16 modules
├── src/
│ ├── index.ts # MCP server entry point (stdio transport)
│ └── tools/
│ ├── helpers.ts # SDK wrappers, argument resolution, introspection, serialization
│ ├── bootstrap.ts # Essential tools: seed gen, account derivation, faucet, network config
│ ├── discovery.ts # keeta_list_sdk_methods — runtime SDK introspection
│ └── execute.ts # Generic execution: client, user_client, builder, anchor
└── build/ # Compiled JavaScript outputDependencies
@keetanetwork/keetanet-client— Core Keeta SDK (accounts, tokens, transactions, permissions)@keetanetwork/anchor— Anchor SDK (FX, KYC, asset movement, usernames, notifications, resolver, certificates, encrypted containers, URI)@modelcontextprotocol/sdk— MCP server frameworkzod— Schema validation for tool inputs
Resources
License
MIT
Available Tools
9 toolskeeta_anchor_executeA
Execute ANY anchor operation on the Keeta Network. Fully dynamic — auto-discovers services and lib modules from the SDK at runtime.
subtarget types:
"service" → call a method on any anchor service client (FX, KYC, AssetMovement, Username, Notification, or ANY future service). Set serviceName to the service name.
"lib" → call a method/function on any anchor lib module (Resolver, Certificates, EncryptedContainer, URI, or ANY future module). Set libModule to the module name.
"metadata" → shortcut to call Resolver.Metadata static methods (formatMetadata, fullyResolveValuizable)
Use keeta_list_sdk_methods with target "AnchorCatalog" to discover all available services and lib modules. Use "AnchorService:" or "AnchorLib:" to drill into specific ones.
Arguments are auto-resolved (see keeta_client_execute for resolution rules).
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network to use | |
| seed | No | Seed of the account. Omit for read-only operations. | |
| accountIndex | No | Account derivation index | |
| subtarget | Yes | Type of anchor operation: "service" for service clients, "lib" for lib modules, "metadata" for Resolver.Metadata shortcuts | |
| serviceName | No | Required when subtarget is "service". The anchor service name (e.g. "FX", "KYC", "AssetMovement", "Username", "Notification", or any new service). Use keeta_list_sdk_methods with target "AnchorCatalog" to see available services. | |
| libModule | No | Required when subtarget is "lib". The lib module name (e.g. "Resolver", "Certificates", "EncryptedContainer", "URI", or any new module). Use keeta_list_sdk_methods with target "AnchorCatalog" to see available modules. | |
| method | Yes | Method name to call on the target | |
| args | No | Arguments array — each element is auto-resolved | |
| rootAddress | No | Anchor root account address. Defaults to the network root. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by explaining the dynamic runtime discovery system, auto-resolution of arguments, and the three subtarget types with their specific behaviors. It mentions seed omission for read-only operations (implied in schema but reinforced here). Could improve by explicitly stating whether operations are read-only or mutating.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear opening statement, bulleted subtarget explanations, and specific guidance sentences. Every sentence serves a distinct purpose with zero wasted content, making it easy to parse despite the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 9-parameter tool with no annotations and no output schema, the description provides substantial context about the execution model, subtarget semantics, and discovery mechanisms. It references related tools for additional functionality. Could be more complete by explaining return value expectations or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3, but the description adds significant value by explaining the semantic meaning of subtarget types (service, lib, metadata) with concrete examples, clarifying the relationship between parameters, and providing discovery guidance that goes beyond schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes ANY anchor operation on the Keeta Network with fully dynamic runtime discovery. It distinguishes from siblings by specifying this is for anchor operations specifically, unlike keeta_client_execute or keeta_user_client_execute which handle different execution contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use different subtargets (service, lib, metadata) and directs users to keeta_list_sdk_methods for discovery. It also references keeta_client_execute for argument resolution rules, creating clear relationships with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_builder_executeA
Execute a sequence of operations using the UserClient Builder pattern, then optionally compute and publish.
The builder batches multiple operations into blocks for efficient on-chain execution. Each operation in the "operations" array is an object with "method" and "args".
Use keeta_list_sdk_methods with target "Builder" to discover available methods.
Common builder methods: send, setInfo, modifyTokenSupply, modifyTokenBalance, computeBlocks, receive.
The tool will:
Create a UserClient and initialize a builder
Call each operation in sequence
If autoPublish is true (default): call computeBlocks() then publish()
Return all computed block hashes
Example operations: [ { "method": "setInfo", "args": [{ "name": "TKNA", "description": "My Token" }], "options": { "account": "keeta_..." } }, { "method": "modifyTokenSupply", "args": ["BIGINT:50000000000"], "options": { "account": "keeta_..." } }, { "method": "send", "args": ["keeta_recipient...", "BIGINT:1000000", "keeta_token..."] } ]
Arguments are auto-resolved (see keeta_client_execute for resolution rules). The "options" field in each operation is passed as the last argument (common for { account: tokenAddress }).
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network to use | |
| seed | Yes | Seed of the account | |
| accountIndex | No | Account derivation index | |
| operations | Yes | Sequence of builder operations | |
| autoPublish | No | Automatically compute and publish blocks after all operations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the multi-step process (create client, call operations, optionally compute/publish) and mentions auto-resolving arguments, but lacks details on permissions, rate limits, error handling, or what happens if operations fail mid-sequence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose. Each sentence adds value: explaining the builder pattern, referencing discovery tools, listing common methods, detailing the execution flow, providing examples, and clarifying argument resolution. Minor room for tightening exists in the example section.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 5 parameters, no annotations, and no output schema, the description is adequate but has gaps. It covers the execution flow and parameter semantics well, but lacks information about return values (only mentions 'block hashes' briefly), error conditions, and operational constraints that would help an agent use it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining the structure of operations objects (method, args, options), providing example operations, clarifying that 'options' is passed as the last argument, and noting auto-resolving behavior. This compensates well beyond the schema's technical documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes a sequence of operations using the UserClient Builder pattern, with specific verbs ('execute', 'compute', 'publish') and resources ('operations', 'blocks'). It distinguishes from siblings like keeta_client_execute by focusing on the builder pattern for batching operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (for batching multiple operations into blocks) and references keeta_list_sdk_methods for discovering available methods. However, it doesn't explicitly state when NOT to use it or compare it to alternatives like keeta_client_execute for single operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_client_executeA
Execute any method on the Keeta Client (read-only network operations).
Use keeta_list_sdk_methods with target "Client" to discover available methods.
Common methods: getAccountInfo, getBalance, getAllBalances, getHeadBlock, getBlock, getHistory, getTokenSupply, getNetworkStatus, getPeers, getVersion, getLedgerChecksum, getAllCertificates, getAllRepresentativeInfo.
Arguments are auto-resolved:
Strings starting with "keeta_" become Account objects
"BIGINT:123" becomes BigInt(123)
"PERM:ACCESS,ADMIN" becomes a Permissions object
"ALGO:TOKEN" becomes AccountKeyAlgorithm.TOKEN
Plain strings, numbers, booleans, objects, arrays pass through as-is
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network to connect to | |
| method | Yes | Method name to call on Client | |
| args | No | Arguments array — each element is auto-resolved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it's for 'read-only network operations' (indicating safety), mentions auto-resolution of arguments (important behavioral detail), and lists common methods. However, it doesn't cover potential rate limits, error handling, or response formats, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. Each sentence adds essential information: purpose, discovery method, common examples, and argument resolution rules. There's no wasted text, and it efficiently communicates complex concepts in a compact form.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (executing arbitrary methods with auto-resolved arguments) and lack of annotations or output schema, the description does a good job of covering key aspects: purpose, usage, and parameter behavior. However, it doesn't explain return values or potential errors, which could be important for a tool with no output schema, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema by explaining how 'args' are auto-resolved with specific examples (e.g., strings starting with 'keeta_' become Account objects). This clarifies parameter semantics that aren't evident from the schema alone, though it doesn't detail 'network' or 'method' beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute any method on the Keeta Client (read-only network operations).' It specifies the exact resource (Keeta Client) and verb (execute methods), and distinguishes it from siblings by emphasizing 'read-only network operations' and referencing keeta_list_sdk_methods for discovery.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'Use keeta_list_sdk_methods with target "Client" to discover available methods.' It also lists common methods as examples, helping users understand typical use cases versus alternatives like keeta_user_client_execute or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_derive_accountA
Derive a Keeta account (public/private keypair) from a seed and index.
Each unique (seed, index, algorithm) combination produces a deterministic account. The returned address (keeta_...) is used in all other tools as account/token identifiers.
Supported algorithms:
SECP256K1 (default) — most common, Ethereum-compatible
SECP256R1 — WebAuthn/passkey compatible
ED25519 — fast signatures
Returns: { address: string, algorithm: string, index: number }
| Name | Required | Description | Default |
|---|---|---|---|
| seed | Yes | Seed string from keeta_generate_seed | |
| index | Yes | Derivation index (0, 1, 2, ...) | |
| algorithm | No | Key algorithm — defaults to SECP256K1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well. It discloses key behavioral traits: deterministic output based on seed/index/algorithm combinations, the format of the returned address ('keeta_...'), and its role as an identifier in other tools. It doesn't cover error cases, performance, or security implications, but provides solid operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: the first sentence states the core purpose, followed by key behavioral details, supported algorithms with brief context, and return format. Every sentence adds value with zero waste, and it's appropriately sized for a 3-parameter tool with no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a derivation tool with no annotations and no output schema, the description is quite complete. It explains the deterministic behavior, address format usage, algorithm options, and return structure. It doesn't cover error handling or edge cases, but given the straightforward schema and clear purpose, it provides sufficient context for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it mentions the seed comes from keeta_generate_seed and lists algorithm options with brief explanations, but doesn't provide additional syntax, constraints, or examples. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('derive a Keeta account'), the resource ('public/private keypair'), and the inputs ('from a seed and index'). It distinguishes from sibling tools like keeta_generate_seed (which creates seeds) and keeta_request_test_tokens (which requests tokens) by focusing on deterministic key derivation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: to create deterministic accounts from seeds and indices, with the returned address used in other tools. It doesn't explicitly state when not to use it or name alternatives among siblings, but the purpose naturally differentiates it from tools like keeta_generate_seed or execution tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_generate_seedA
Generate a new random cryptographic seed for the Keeta Network.
This is the starting point for all Keeta operations. A seed can derive unlimited accounts via keeta_derive_account. Store the seed securely — it controls all derived accounts and their funds.
Returns: { seed: string }
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: the tool generates a random seed, which is foundational for deriving accounts and controlling funds, and emphasizes security implications. It also specifies the return format. While it covers critical aspects, it lacks details like rate limits or error handling, but this is sufficient for a high score given the context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by essential context and a security warning, and ends with the return value. Every sentence adds value without waste, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (simple generation with no parameters), no annotations, no output schema, and rich sibling context, the description is complete. It explains what the tool does, its role in the ecosystem, security considerations, and the return format, providing all necessary information for an AI agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the schema description coverage is 100%, so the baseline is 4. The description does not need to add parameter information, and it appropriately focuses on the tool's purpose and output without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Generate') and resource ('new random cryptographic seed for the Keeta Network'). It distinguishes this from sibling tools like keeta_derive_account by explaining that the seed is the starting point for deriving accounts, making its role explicit and unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: as the 'starting point for all Keeta operations' and to derive accounts via keeta_derive_account. It includes a security warning about storing the seed securely. However, it does not explicitly state when not to use it or name alternatives, which prevents a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_get_network_configB
Get the configuration for a Keeta network, including the network ID, base token address, and network account address.
This is useful for understanding the network you are operating on before making transactions.
Returns: { networkAlias, networkId, baseToken, networkAddress }
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network alias |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s]' configuration and describes the return values, but it doesn't mention whether this is a read-only operation, if it requires authentication, potential rate limits, or error conditions. For a tool with zero annotation coverage, this leaves significant behavioral gaps, though it does add some context about the return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence clearly states the purpose, the second provides usage context, and the third specifies return values. Every sentence adds value without redundancy, and there's no wasted text. It efficiently conveys necessary information in a structured manner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no nested objects) and 100% schema coverage, the description is somewhat complete but has gaps. It explains the purpose and return values, but with no output schema and no annotations, it lacks details on behavioral aspects like safety or errors. For a simple read operation, this is adequate but not fully comprehensive, as it could benefit from more transparency about operational constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'network' parameter documented as 'Network alias' and an enum of ['main', 'test']. The description doesn't add any parameter-specific semantics beyond what the schema provides (e.g., it doesn't explain what 'main' or 'test' mean in context). Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't need to given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'configuration for a Keeta network', specifying what information is included (network ID, base token address, network account address). It distinguishes itself from siblings like keeta_anchor_execute or keeta_request_test_tokens by focusing on configuration retrieval rather than execution or token requests. However, it doesn't explicitly contrast with keeta_list_sdk_methods which might also provide informational content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by stating 'This is useful for understanding the network you are operating on before making transactions,' which suggests using this tool for preparatory checks. However, it lacks explicit alternatives (e.g., when to use keeta_derive_account instead) or clear exclusions (e.g., when not to use it if you already have the configuration). The guidance is helpful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_list_sdk_methodsA
Discover available methods and properties on Keeta SDK objects at runtime. Use this FIRST to understand what operations are available before calling execute tools.
The "target" parameter accepts:
Core SDK (fixed): "Client" → read-only network queries "UserClient" → authenticated operations "Builder" → batch transaction builder "Account" → account utilities + enums "Block" → block types + operation enums "Permissions" → permission construction "Config" → network configuration
Anchor SDK (dynamic — auto-discovers new services): "AnchorCatalog" → list ALL available anchor services and lib modules (start here!) "AnchorService:" → methods on a specific anchor service client (e.g. "AnchorService:FX", "AnchorService:KYC", "AnchorService:AssetMovement", "AnchorService:Username", "AnchorService:Notification", or ANY new service the SDK adds) "AnchorLib:" → methods on a specific anchor lib module (e.g. "AnchorLib:Resolver", "AnchorLib:Certificates", "AnchorLib:EncryptedContainer", "AnchorLib:URI", or ANY new module)
When in doubt, start with "AnchorCatalog" to see everything available, then drill into specific services/modules.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | SDK target to introspect. Fixed values: "Client", "UserClient", "Builder", "Account", "Block", "Permissions", "Config", "AnchorCatalog". Dynamic: "AnchorService:<Name>" or "AnchorLib:<Name>". | |
| network | No | Network for instantiation (needed for Client/UserClient/Builder) | test |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it's for runtime discovery, lists specific target categories (Core SDK fixed vs. Anchor SDK dynamic), and explains how dynamic targets auto-discover new services. However, it lacks details on output format, rate limits, or error handling, which are minor gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. Each sentence earns its place by providing essential information: purpose, usage guidelines, parameter details, and examples. It avoids redundancy and is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (runtime discovery with dynamic targets) and no output schema, the description is mostly complete. It covers purpose, usage, parameter semantics, and behavioral context. However, it doesn't describe the return format or what the discovered methods/properties look like, which is a minor gap given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining the semantics of the 'target' parameter in detail, categorizing Core SDK vs. Anchor SDK, listing fixed and dynamic values with examples, and providing usage tips (e.g., 'start with AnchorCatalog'). This goes well beyond the schema's enum and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Discover available methods and properties on Keeta SDK objects at runtime.' It specifies the verb ('discover') and resource ('methods and properties on Keeta SDK objects'), and distinguishes it from sibling tools like execute tools by advising to use it FIRST to understand available operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'Use this FIRST to understand what operations are available before calling execute tools.' It includes alternatives for dynamic targets ('start with "AnchorCatalog" to see everything available, then drill into specific services/modules') and clarifies usage contexts (e.g., 'When in doubt, start with...').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_request_test_tokensA
Request free KTA tokens from the Keeta test network faucet.
Only works on the test network. Sends 5 KTA to the given address for development/testing. KTA is needed for transaction fees on the network.
Returns: { status, address, amountRequested, currentBalance }
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Keeta address (keeta_...) to fund |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well: it discloses the network constraint (test only), the fixed amount (5 KTA), the purpose (development/testing), and what KTA is used for (transaction fees). It also describes the return structure. It doesn't mention rate limits or authentication needs, but covers key behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by constraints and return details. Every sentence earns its place: first states what it does, second specifies network and amount, third explains KTA's role, fourth documents returns. No wasted words, appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no annotations and no output schema, the description is quite complete: it explains purpose, constraints, amount, usage context, and return structure. The only minor gap is lack of explicit error cases or rate limit info, but it covers most essential context given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'address' documented as 'Keeta address (keeta_...) to fund'. The description adds that it's 'the given address' and implies it receives tokens, but doesn't provide additional syntax or format details beyond what the schema already states. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Request free KTA tokens'), resource ('from the Keeta test network faucet'), and scope ('Only works on the test network'). It distinguishes this tool from siblings like keeta_anchor_execute or keeta_builder_execute by focusing on faucet functionality rather than execution or account management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Only works on the test network' and mentions 'for development/testing', providing clear context for when to use this tool. However, it doesn't specify when NOT to use it (e.g., for production) or name alternatives explicitly, though the sibling tools suggest other options for different operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keeta_user_client_executeA
Execute any method on the Keeta UserClient (authenticated operations requiring an account).
Use keeta_list_sdk_methods with target "UserClient" to discover available methods.
Common methods: allBalances, balance, head, chain, history, state, send, setInfo, generateIdentifier, updatePermissions, createSwapRequest, transmit, listACLsByPrincipal, getCertificates, modifyCertificate, sync.
Properties you can read (pass method "GET_PROPERTY" with args ["propertyName"]): baseToken, networkAddress, network, account, signer.
Arguments are auto-resolved (see keeta_client_execute for resolution rules).
| Name | Required | Description | Default |
|---|---|---|---|
| network | Yes | Network to connect to | |
| seed | No | Seed of the account. Omit for read-only operations (null account). | |
| accountIndex | No | Account derivation index | |
| method | Yes | Method name to call on UserClient, or "GET_PROPERTY" to read a property | |
| args | No | Arguments array — each element is auto-resolved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds valuable context: it mentions 'authenticated operations requiring an account,' lists common methods and properties, and references auto-resolution rules via keeta_client_execute. However, it lacks details on error handling, rate limits, or specific authentication requirements beyond the seed parameter, leaving gaps for a mutation-capable tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. Each sentence adds value: the first defines the tool, the second guides usage, the third lists methods, the fourth details properties, and the fifth explains argument resolution. There's minimal waste, though the list of common methods is somewhat lengthy but informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no annotations, no output schema), the description is moderately complete. It covers purpose, usage, methods, properties, and argument resolution, but lacks details on return values, error cases, or specific behavioral traits like side effects or permissions. Without annotations or output schema, more context on what to expect from executions would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema: it explains that 'Arguments are auto-resolved (see keeta_client_execute for resolution rules),' clarifies that 'GET_PROPERTY' is used for reading properties with examples, and lists common methods and properties, enhancing understanding of the 'method' and 'args' parameters. This elevates the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Execute any method on the Keeta UserClient (authenticated operations requiring an account).' It specifies the verb ('execute'), resource ('Keeta UserClient'), and scope ('authenticated operations requiring an account'), distinguishing it from sibling tools like keeta_client_execute (which handles argument resolution) and keeta_list_sdk_methods (which lists methods).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: it directs users to 'Use keeta_list_sdk_methods with target "UserClient" to discover available methods,' naming a specific alternative tool. It also clarifies that it's for 'authenticated operations requiring an account,' implying keeta_client_execute might be for non-authenticated or general cases, though not explicitly stated as an exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, such as keeta_derive_account for key derivation and keeta_request_test_tokens for faucet access. However, keeta_anchor_execute, keeta_builder_execute, keeta_client_execute, and keeta_user_client_execute all involve executing SDK methods, which could cause confusion about which to use for specific operations, though their descriptions clarify different contexts (anchor operations, builder patterns, read-only client, authenticated client).
All tool names follow a consistent snake_case pattern with a 'keeta_' prefix and descriptive verb_noun combinations, such as keeta_anchor_execute, keeta_list_sdk_methods, and keeta_generate_seed. This uniformity makes the tool set predictable and easy to navigate.
With 9 tools, the server is well-scoped for interacting with the Keeta Network, covering essential operations like account management, network queries, transaction building, and SDK discovery. Each tool serves a clear purpose without redundancy, fitting typical MCP server ranges.
The tool set provides comprehensive coverage for the Keeta Network domain, including account derivation, seed generation, network configuration, SDK method discovery, test token acquisition, and various execution contexts (client, user client, anchor, builder). There are no obvious gaps, enabling full lifecycle management from setup to transaction execution.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Provide AI agents and automation tools with contextual access to blockchain data including balance…
AI agent infrastructure for discovery, authorization, execution, identity, and signed receipts.
Complete financial infrastructure for AI agents — payments, lending, escrow & more.
Connect AI agents to financial institution origination, analytics, and compliance workflows.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA comprehensive toolkit for building AI agents with blockchain capabilities, enabling interactions with multiple blockchain networks for tasks like wallet management, fund transfers, smart contract interactions, and cross-chain asset bridging.4GPL 3.0
- AlicenseCqualityDmaintenanceEnables AI agents to interact with cryptocurrency ecosystems through wallet management, trading operations (swaps, DCA, limit orders), staking, and multi-chain support starting with Solana.37GPL 3.0

Bink MCP Serverofficial
FlicenseNot gradedqualityDmaintenanceEnables AI agents to perform blockchain operations like wallet management, token info, DeFi swaps, cross-chain bridging, and price checking across Ethereum, BNB Chain, and Solana.- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with peer-to-peer networks (libp2p) and DeFi protocols, including oracle networks, cross-chain communication, and intent-based execution.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/schenkty/kta-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server