Skip to main content
Glama

register_counterparty_set

Idempotent

Register/replace/clear the AGNTA counterparty allow-set for the caller's opted-in DelegationGrant (non-custodial control plane).

Persists to Django so the set survives an MCP process restart and is visible to every process -- the follow-up to 's process-local InMemoryCounterpartySetResolver. wallet_address must belong to an AgentWallet with a non-blank agnta_grant_pda already configured (opting in is a separate step, out of scope here); the target grant_pda is always resolved from that wallet, never caller-supplied. members is a list of base58 32-byte destination pubkeys the grant's counterparty_root should allow -- pass an EMPTY list to CLEAR the registered set, after which every transfer-class call naming an on-chain destination for this grant fails closed.

expected_root (hex, optional but STRONGLY recommended): compare against the grant's live on-chain counterparty_root (hex-encoded) before calling this -- when given, a set that does not commit to it is refused (INVALID_PARAMS) rather than silently registered, which would otherwise surface later as a confusing AGNTA_GRANT_COUNTERPARTY_DENIED on an unrelated transfer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
membersYes
caller_idNo
expected_rootNo
wallet_addressYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description substantially exceeds what annotations already convey: it discloses Django persistence across restarts, visibility across processes, fail-closed behavior for transfer-class calls after clearing, and the expected_root mismatch refusal behavior. It also clarifies that grant_pda is always resolved from the wallet and never caller-supplied, which is important security-relevant behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but generally well-structured, front-loading the core purpose before prerequisites and failure behavior. It earns most of its length, though there is a broken phrase ('to 's process-local') and some redundancy between 'Register/replace/clear' and the later empty-list clearing explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with domain-specific concepts, the description covers prerequisites, parameter meaning, clearing semantics, persistence, and failure modes, making it largely complete. The output schema presumably covers return values, so that omission is acceptable. Minor gaps remain: caller_id is unexplained, and the relationship to clear_agnta_grant or set_agnta_grant is not explicitly clarified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the burden of explaining parameters and largely succeeds: wallet_address, members, and expected_root all receive meaningful semantics and usage guidance. The only gap is caller_id, whose purpose is left entirely to inference from its name and default value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: register/replace/clear the AGNTA counterparty allow-set for the caller's opted-in DelegationGrant. It names the exact object being manipulated and the domain, making the tool's intent unambiguous. It also distinguishes itself from related grant-clearing tools by focusing on the allow-set rather than the broader grant.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear prerequisites: wallet_address must belong to an AgentWallet with a non-blank agnta_grant_pda, and opting in is explicitly called out as a separate out-of-scope step. It also explains when to clear the set via an empty members list. However, it does not explicitly name a sibling tool as an alternative or state when NOT to use this tool beyond the opting-in note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.2/5.0
Disambiguation2/5

Multiple tools overlap significantly: close_perp_position vs perp_close, get_leaderboard vs get_score_leaderboard vs get_strategy_leaderboard, get_venue_status vs get_all_venues_status, send_token_social vs bulk_send_social, and get_crank_score vs get_score. Several read-only tools have nearly identical purposes, and the descriptions do not always clarify boundaries.

Naming Consistency4/5

Most tools follow a consistent verb_noun snake_case pattern (get_balances, create_strategy, set_alert, list_webhooks). However, there are deviations like 'lst_swap', 'jupiter_swap', 'flash_loan', 'sr_backtest', and the use of both 'get_' and 'list_' for reads, plus category prefixes like 'perp_' and 'strategy_' that vary in order. Overall still readable and predictable.

Tool Count1/5

177 tools is an extreme count for any server, far exceeding the 25+ threshold for 'too many'. Even a full DeFi platform does not need this many separate operations; the surface is overwhelming and clearly not well-scoped.

Completeness3/5

The domain (Solana DeFi trading) is covered extensively across swaps, perps, lending, staking, strategies, signals, and support. However, there are notable gaps: no lend_withdraw, no direct way to close a lending position, no spot order cancellation (though aggregator-based swaps may not need it), and a general lack of tiered account management. The huge number of tools makes it hard to identify missing lifecycle steps.

Resources