Skip to main content
Glama

Server Details

AI agent banking - fiat and crypto wallet management. Send payments, buy/sell crypto, fund via banks/PayShap/cards, withdraw globally. Virtual SEPA/ACH accounts for fiat on-ramps.

Ownership verified
Status
Healthy
Uptime
98.3% over 77 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

C2.6/5.0

Scored across 142 tools

Disambiguation2/5

The tool set contains near-duplicates (email vs send_email, session vs session_2_token) and many overlapping operations like account_send, account_wire, crypto_spend, and paywall__wallet_transfer, making tool selection ambiguous. While many tools have distinct targets, the sheer number of similar funding, withdrawal, and swap endpoints creates frequent boundary confusion.

Naming Consistency3/5

Names are consistently snake_case and grouped under netfluid__ and paywall__ prefixes, but the ordering is not predictable: some are noun-first (account_info, wallet_verify, bridge_delete), others verb-first (send_email, ask_gemini, access_pause). Synonyms with different patterns make the convention mixed rather than uniform.

Tool Count1/5

With 142 tools, the set is vastly beyond the typical 3–15 range and exceeds the 50+ threshold for extreme mismatch. It appears to expose every granular API endpoint, forcing agents to navigate an unwieldy surface.

Completeness4/5

The surface covers a very broad fintech domain (wallet lifecycle, accounts, crypto, funding, withdrawals, bridges, KYC, paywall), so major gaps are unlikely. However, some lifecycle operations like deleting or closing a wallet/account are absent, and duplicate endpoints suggest uncurated rather than intentionally complete coverage.

Available Tools

142 tools
netfluid__access_pauseBInspect

Temporarily blocks access to the wallet

Temporarily blocks access to the wallet for all systems. This end point requires an api_key with administrator privileges. @param api_key: The api key with administrator privileges @param wallet_fk: The wallet_fk to pause

@return: a json object
NameRequiredDescriptionDefault
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that an api_key with administrator privileges is required and that the block is temporary (implying reversibility via access_resume), but says nothing about what operations are blocked, side effects, or rate limits.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim before the elaborated version, wasting space, and the javadoc-style @param/@return tags pad the text. The intent is still front-loaded and understandable.

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

Completeness3/5

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

For a two-param mutation tool with no annotations and no output schema, the description covers purpose, privilege requirement, and both parameters, but leaves the behavioral effect underspecified and the return value ('a json object') uninformative.

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?

Schema description coverage is 0%, so the description must compensate, and it does document both parameters: api_key as the admin-privileged key and wallet_fk as the wallet to pause. It lacks format details (e.g. API key source) but covers the semantic intent of each param.

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

Purpose4/5

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

States a specific verb+resource: temporarily blocks access to the wallet, and adds scope ('for all systems'). It is distinguishable from the write-side siblings, though it never names access_resume as its inverse, which would have made the pairing explicit.

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

Usage Guidelines2/5

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

No when-to-use guidance, no statement of prerequisites beyond the admin key, and no reference to the obvious counterpart access_resume for undoing the pause. The agent must infer usage context entirely.

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

netfluid__access_platform_assignCInspect

Assigns this wallet_fk to a channel (discord, telegram, whatsapp) user id.

Assigns this wallet_fk to a channel (discord, telegram, whatsapp) user id. Where possible prompt the customer to do this, as it makes getting a token much easier in the future @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
user_idYes
platformYes
wallet_fkYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden. It implies a mutation (binding a wallet to a platform identity) but never states whether the binding is reversible, what happens if the user_id is already linked, what permissions the api_key needs, or what the returned JSON contains beyond 'a json object'.

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

Conciseness2/5

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

The core sentence appears twice verbatim, and the @param/@return block duplicates what a schema would normally carry. The useful hint about prompting the customer is buried mid-block rather than front-loaded, so the definition is both padded and poorly ordered.

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

Completeness2/5

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

Five required parameters, no annotations, no output schema, and two parameters undocumented by either the schema or the description. The return value is described only as 'a json object', leaving the agent without the information needed to handle the response.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does document three of five parameters — api_key as the application key, token and wallet_fk as values from /access/login — and the enumeration of platforms is embedded in the first sentence. But user_id and platform are never described as parameters, and no formats or constraints are given.

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

Purpose4/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: 'Assigns this wallet_fk to a channel (discord, telegram, whatsapp) user id.' That is enough for an agent to distinguish it from access_platform_login or account_pair. It stops short of naming a sibling it must not be confused with, but the resource is precise.

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

Usage Guidelines3/5

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

The line 'Where possible prompt the customer to do this, as it makes getting a token much easier in the future' gives a real usage cue about when to invoke it. However, there is no guidance on prerequisites, sequencing relative to access_platform_login, or when not to use it.

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

netfluid__access_platform_loginBInspect

Retrieves a token based on a wallet_fk and 5-digit (numeric) PIN. This is a shortcut to the token.

Retrieves a token based on a wallet_fk and 5-digit (numeric) PIN Only 1 attempt is allowed, get the PIN wrong and you have to send the user back to the website to get a session key This works on any wallet_fk and PIN combination, so if you have a wallet_fk, but no token, it's a shortcut to the token. @param wallet_fk: The wallet_fk @param pin: The 5-digit numerical pin associated with this wallet_fk

@return: a json object
NameRequiredDescriptionDefault
pinYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose a genuinely important behavior: a single failed PIN attempt forces the user back to the website for a session key. That is real added value. It still omits token lifetime, what is actually returned, and any auth/prerequisite context.

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

Conciseness2/5

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

The core fact ('retrieves a token from wallet_fk + PIN') is stated three separate times, and the '@return a json object' line is near-contentless. The single-attempt warning is the only sentence that earns its place, so the description is padded rather than front-loaded.

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

Completeness3/5

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

For a login/credential-exchange tool with no annotations and no output schema, the description omits what the token is, how it should be used downstream, and whether it expires. The one-attempt warning is valuable, but an agent still lacks enough to handle the failure path or the returned value confidently.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does define both parameters: wallet_fk as the wallet identifier and pin as the 5-digit numeric PIN. It never explains what wallet_fk refers to (a foreign key to a wallet record) or whether the PIN is client- or server-validated, leaving the compensation partial.

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

Purpose4/5

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

States a specific verb and resource: retrieves a token given a wallet_fk and a 5-digit PIN. The purpose is unmistakable, but it never names or distinguishes itself from potentially overlapping siblings like netfluid__session or netfluid__session_2_token, so it is clear without being sibling-differentiated.

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

Usage Guidelines3/5

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

Offers one contextual hint ('if you have a wallet_fk but no token, it's a shortcut to the token') and a critical constraint (only 1 attempt). However, it never routes the agent to alternatives such as session_2_token or access_recover, so the when-to-use-this-vs-those guidance is only implied.

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

netfluid__access_platform_wallet_listAInspect

Retrieves a list of wallets associated with the channel (discord, telegram or whatsapp) and user id

Retrieves a list of wallets associated with the channel (discord, telegram or whatsapp) user id, once you have a wallet_fk you can get a token. This only works if the wallet_fk has been previously assigned to this channel and user id. @param user_id: The chat, channel user-id specific to this chat customer @param platform: The channel platform: discord, telegram, whatsapp

@return: a json object
NameRequiredDescriptionDefault
user_idYes
platformYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses the assignment precondition and states the return is a json object, but says nothing about auth requirements, pagination, or error behavior. The precondition is genuine added value, but coverage remains partial.

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

Conciseness3/5

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

The opening sentence is repeated almost verbatim in the second line, wasting space on redundancy. The content is front-loaded and otherwise compact, but the duplication is a clear structural flaw.

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 simple two-parameter list tool with no output schema and no annotations, the description covers purpose, precondition, parameter meanings, and the return shape. It is adequately complete, missing only deeper error/pagination detail.

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?

Schema coverage is 0%, so the description must compensate, and it does: user_id is explained as the channel-specific customer id, and platform is given concrete values (discord, telegram, whatsapp) that the schema does not encode as an enum. This adds real meaning beyond the schema.

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

Purpose4/5

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

The description states a specific verb (Retrieves) and resource (list of wallets) with scope (associated with channel and user id), so an agent can identify the operation. There is no sibling with a near-identical name to differentiate against, though the verb+resource pairing is clear.

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

Usage Guidelines3/5

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

It gives a precondition — 'only works if the wallet_fk has been previously assigned to this channel and user id' — which is useful context for when the call succeeds. However, it names no alternative tools and does not say when to prefer this over other access/wallet listings.

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

netfluid__access_recoverBInspect

Recovers the Netfluid wallet's private key from a set of 24 keywords

Recovers the Netfluid wallet's private key from a set of 24 keywords. Returns an object with the wallet owner's key, first_name, last_name, mobile and email. It's preferable that the person trying to recover @param api_key: The api key allocated to your application @param words: A set of 24 recovery words, space delimited

@return: a json object
NameRequiredDescriptionDefault
wordsYes
api_keyYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the return payload (private key, first_name, last_name, mobile, email), which is meaningful given the missing output schema and signals sensitive PII/secret material. But it says nothing about auth requirements beyond api_key, failure modes, or the security weight of returning a private key.

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

Conciseness2/5

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

The first sentence is duplicated verbatim, and a truncated sentence plus docstring artifacts ('@param', '@return: a json object') leak into the text. The front-loaded sentence is fine, but there is clear waste and a broken fragment.

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

Completeness3/5

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

No output schema exists, so explaining the return object is the right call and partially covers that gap. A 2-param tool is simple, but the definition omits when-to-use guidance and security/permission context, leaving it only minimally complete.

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?

Schema coverage is 0%, so the description must compensate, and it does: it documents both parameters, giving 'api_key' purpose ('allocated to your application') and 'words' format ('a set of 24 recovery words, space delimited'). The word-count and delimiter detail is genuinely additive beyond the bare schema.

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

Purpose4/5

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

States a specific verb and resource: 'Recovers the Netfluid wallet's private key from a set of 24 keywords.' Clear about the operation. However, it does not distinguish itself from the closely related sibling netfluid__wallet_mnemonic, leaving ambiguity about when recovery differs from plain mnemonic retrieval.

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

Usage Guidelines2/5

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

The only usage-adjacent text is a truncated fragment: 'It's preferable that the person trying to recover' — the condition is cut off mid-sentence, so no real guidance lands. No when-to-use, no prerequisites, and no routing against wallet_mnemonic or account_unlock.

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

netfluid__access_resumeBInspect

Temporarily blocks access to the wallet

Resumes access to a paused wallet. This end point requires an api_key with administrator privileges. @param api_key: The api key with administrator privileges @param wallet_fk: The wallet_fk to resume

@return: a json object
NameRequiredDescriptionDefault
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With empty annotations, the description carries the full behavioral burden. It does disclose one meaningful trait beyond the schema: the operation requires an api_key with administrator privileges. Beyond that it says nothing about side effects, reversibility, or rate limits, so it is only partially transparent.

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

Conciseness3/5

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

The size is reasonable, but the structure is marred by a wrong leading sentence (copied from the pause operation) followed by the correction, and the @return line ('a json object') is near-empty filler. Every sentence should earn its place; the first one actively harms.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description should explain effects and return shape. It covers both parameters and the auth requirement but gives only '@return: a json object,' leaving the response contents and side effects unexplained.

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?

Schema description coverage is 0%, so the description must compensate, and it does document both parameters: api_key (with administrator privileges) and wallet_fk (the wallet to resume). The privilege qualification on api_key adds real semantic value beyond the bare schema types, though wallet_fk's entry is largely a restatement.

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

Purpose3/5

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

The lead sentence ('Temporarily blocks access to the wallet') describes the opposite operation from the tool name and the following sentence, creating an internal contradiction that could mislead selection. The second sentence does state a specific verb+resource ('Resumes access to a paused wallet'), so the correct purpose is recoverable, but the erroneous first line erodes clarity and fails to cleanly distinguish it from the sibling netfluid__access_pause.

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

Usage Guidelines3/5

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

'Resumes access to a paused wallet' implies the condition for use (a paused wallet), and the admin-privilege requirement is stated, which is genuinely useful. However, no alternative sibling (e.g., netfluid__access_pause) is named, and there is no explicit when-not guidance.

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

netfluid__access_wallet_pin_changeCInspect

Changes the wallet PIN, must be 5 digits, e.g. 12345

Changes the wallet PIN, must be 5 digits, e.g. 12345 @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param new_pin: The new PIN, but be 5 numeric digits

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
new_pinYes
wallet_fkYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations are empty, so the description carries the full behavioral burden. It does not say whether the change is reversible, what permissions are required, whether an existing PIN or confirmation is needed, or what the response contains beyond 'a json object'.

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

Conciseness2/5

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

The opening sentence is repeated twice, and the raw @param/@return docstring formatting is carried through verbatim. This is wasted space that makes the definition harder to scan, though the parameter block itself is compact.

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

Completeness3/5

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

For a 4-parameter mutation tool with no annotations and no output schema, the parameter coverage is adequate but behavioral context is missing. The description should say more about auth requirements and the effect of the change to be complete.

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?

Schema description coverage is 0%, so the description must compensate, and it does document all four parameters and their provenance (token and wallet_fk come from /access/login). The 5-digit numeric constraint on new_pin is a useful addition, though types are still not stated in prose.

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

Purpose4/5

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

The description names a specific verb and resource ('Changes the wallet PIN') and adds a format constraint, so an agent knows exactly what the tool does. However, it does not differentiate itself from any sibling tool, and the purpose sentence is duplicated verbatim, which weakens the signal.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus alternatives, nor any precondition beyond the parameter list. The agent is left to infer that this is the PIN-reset path rather than, say, a login or recovery flow.

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

netfluid__accountCInspect

Returns public information associated with an account_fk: address, commodity, currency and type @return: a json object

NameRequiredDescriptionDefault
account_fkYes

TDQS

C2.6/5.0
Behavior2/5

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

Annotations are empty, so the description carries the full burden. 'Returns public information' implies a safe read, but there is no mention of authentication, permissions, rate limits, or what happens on an invalid account_fk. The '@return: a json object' clause conveys essentially no behavioral information.

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

Conciseness3/5

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

Short and front-loaded, which is good, but the trailing '@return: a json object' is boilerplate that adds no value. The whole description is terse to the point of under-specification rather than genuinely concise.

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

Completeness2/5

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

For a read tool with no annotations and no output schema, the description should at least clarify the parameter and differentiate it from the numerous sibling lookups. It leaves both the input semantics and the sibling routing unresolved.

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

Parameters2/5

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

Schema description coverage is 0% and the description only repeats the parameter name 'account_fk' without explaining what it identifies or where it comes from. With a single required parameter undocumented in both schema and prose, the description fails to compensate.

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

Purpose4/5

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

States a specific verb and resource ('Returns public information associated with an account_fk') and enumerates the fields returned (address, commodity, currency, type). It is clear on its own, but it does nothing to distinguish itself from near-identical siblings such as netfluid__account_info, netfluid__account_address, or netfluid__account_types.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus the many sibling account/wallet tools. No preconditions, no alternatives, no exclusions are mentioned.

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

netfluid__account_addressBInspect

Validates and verifies the existence of a Netfluid account address (not blockchain address) @return: a json object

NameRequiredDescriptionDefault
account_addressYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does convey that this is a non-mutating check (validate/verify existence) rather than a write, but the return body is only described as 'a json object', with no indication of what fields or validity signal come back or what failure looks like.

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

Conciseness3/5

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

The core purpose is front-loaded in one sentence, which is good, but the trailing '@return: a json object' is pure filler that conveys nothing actionable and slightly dilutes an otherwise tight definition.

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

Completeness3/5

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

For a one-parameter, non-mutating lookup this is near-minimum viable: no annotations, no output schema, and the description doesn't say whether the response is a boolean validity flag or an object, nor how invalid addresses are surfaced. It is adequate but has identifiable gaps.

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

Parameters3/5

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

Schema coverage is 0% and the single parameter is undocumented, so the description must compensate. It does add real meaning by clarifying that account_address is a Netfluid account address rather than a blockchain address, which resolves the most likely agent confusion, but gives no format, length, or example.

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

Purpose4/5

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

States a specific verb pair (validates, verifies existence) against a specific resource (Netfluid account address), and the parenthetical '(not blockchain address)' usefully separates it from the many crypto_* siblings. It falls short of 5 only because it doesn't name or contrast with the nearest sibling (netfluid__account, netfluid__wallet_verify).

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

Usage Guidelines2/5

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

The parenthetical hints at a negative case (not a blockchain address), but there is no explicit when-to-use, when-not-to-use, or named alternative among the ~110 siblings. An agent must infer the context from the name alone.

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

netfluid__account_aliasAInspect

Sets a friendly name/alias on an account. Confirm (yes/no) before executing

Sets a friendly name/alias on an account_fk. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) @param alias: The alias or friendly name, try and use unique names for each account in the wallet

@return: a json object
NameRequiredDescriptionDefault
aliasYes
tokenYes
api_keyYes
account_fkYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose that confirmation is required before execution and that account_fk is an internal database ID rather than an address and may not be 0 — real behavioral value. It says nothing about whether overwriting an existing alias is destructive, whether the operation is idempotent, or what errors/permissions to expect.

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

Conciseness3/5

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

Purpose is front-loaded, which is good, but the opening sentence is immediately restated as 'Sets a friendly name/alias on an account_fk' — redundant. The @param/@return block is standard and readable, but the duplication costs efficiency.

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 4-param mutation with no annotations and no output schema, the description covers every parameter plus the confirmation requirement, which an agent needs before calling. Missing details on overwrite semantics or failure modes keep it from being fully complete.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: it defines all four parameters including the source of token (/access/login) and two important constraints on account_fk (it is an int database ID, not a string address, and may not be 0). Coverage is good though api_key is described only generically.

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

Purpose4/5

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

The description states a specific verb and resource: 'Sets a friendly name/alias on an account.' That is unambiguous against siblings like account_info or account_pause. It stops short of naming any alternative tool or scoping condition, but the operation itself is clearly identified.

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

Usage Guidelines3/5

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

'Confirm (yes/no) before executing' gives the agent one concrete usage instruction for a mutation. Beyond that there is no when-to-use/when-not guidance and no alternative tool is referenced. Adequate but thin.

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

netfluid__account_buyBInspect

Purchases a digital asset from the account's FIAT balance. Confirm (yes/no) before executing

Purchases a digital asset from the account's FIAT balance @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to buy @param digital_asset_fk: The digital_asset_fk to buy

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes
digital_asset_fkYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses the confirmation-before-execution step, but says nothing about auth requirements (api_key/token are only implied), whether the purchase is reversible, or failure behavior for a financial mutation.

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

Conciseness3/5

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

Front-loads the core action, but the opening sentence is repeated word-for-word and the @return tag ('a json object') is filler. The @param block is structured but the duplication wastes space.

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

Completeness3/5

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

Covers the parameters well, but for a financial mutation with no annotations and no output schema it omits return structure (just 'a json object'), auth expectations, and failure/irreversibility details an agent would want.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all four params via @param tags. Notably it clarifies account_fk is a database int ID (not an address) that may not be 0, and that token comes from /access/login — meaningful value beyond the bare schema.

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

Purpose4/5

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

States a specific verb (Purchases), resource (digital asset), and source of funds (account's FIAT balance). This distinguishes it from siblings like account_sell or crypto_swap, though the sentence is duplicated verbatim, adding no extra value.

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

Usage Guidelines3/5

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

The 'Confirm (yes/no) before executing' instruction gives a usable workflow cue, and the fiat-to-asset framing implies when it applies. However, it never states when to prefer this over account_sell, crypto_swap, or crypto_spend, so alternatives are left to inference.

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

netfluid__account_buy_telcoBInspect

Purchases airtime by converting currency to minutes and seconds. Confirm (yes/no) before executing

Purchases airtime by converting currency to minutes and seconds. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to deduct the amount @param amount: The amount in currency, 2 decimals @param currency_code: The currency code, e.g USD, ZAR, BWP, ZIG

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
account_fkYes
currency_codeYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose that this is a purchase that deducts from a specified account and that confirmation is required first, which is meaningful behavioral context. But it says nothing about irreversibility, failure modes (e.g. insufficient balance), or what the returned JSON contains beyond 'a json object'.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim, wasting space at the front, and it is followed by JSDoc tags pasted in wholesale. The parameter details earn their place, but the repetition and mixed prose/JSDoc structure hurt front-loading.

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

Completeness3/5

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

For a mutating, money-moving tool with no annotations and no output schema, the definition covers inputs well and flags the confirmation step, but leaves the return value completely unspecified and omits any failure or balance-check behavior. Adequate but with clear gaps.

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?

Schema coverage is 0%, so the description must compensate, and it largely does: it documents all five parameters, clarifies that account_fk is an integer database ID rather than an address (and cannot be 0), specifies amount is currency with 2 decimals, and gives currency code examples. Only the token/api_key origins are touched lightly.

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

Purpose4/5

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

States a specific verb and resource (purchase airtime) plus the distinguishing mechanism (converting currency to minutes and seconds), which separates it from generic siblings like account_buy or account_pay. However, it never names those siblings explicitly, so the agent must infer the boundary from the name alone.

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

Usage Guidelines2/5

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

The only usage guidance is 'Confirm (yes/no) before executing', which is about a workflow step, not about when to choose this tool over account_buy, account_pay, or fund_ott. No prerequisites (e.g. needing a valid account_fk and token) or exclusions are stated.

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

netfluid__account_chargeBInspect

Charges the account based on a presented QR-code or NFC card. Confirm (yes/no) before executing

Charges the account based on a presented QR-code or NFC card. The payer must present a valid PIN for the transaction to complete @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The merchant's account_fk, typically the account that will receive the payment @param account_address: The account_address that will be charged @param amount: The amount to charge @param pin: The account PIN of the account_address that will be charged @param note: The note on the transaction

@return: a json object
NameRequiredDescriptionDefault
pinYes
noteNo
tokenYes
amountYes
api_keyYes
account_fkYes
account_addressYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations are empty, so the description carries the full burden. It does disclose real behavior: a confirmation gate before execution and a hard PIN requirement for completion, plus api_key/token auth. It omits irreversibility, failure behavior, and rate limits, which matters for a money-moving mutation.

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

Conciseness3/5

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

The core sentence 'Charges the account based on a presented QR-code or NFC card' is repeated verbatim in the opening and again in the body, wasting space. The rest is a functional JSDoc block, and key constraints (confirmation, PIN) are front-loaded, but the duplication costs it.

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

Completeness3/5

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

For a 7-parameter payment mutation with no annotations and no output schema, the definition covers inputs well but returns only 'a json object' and says nothing about error cases, idempotency, or what a successful charge response contains. Adequate but leaves meaningful gaps for a high-stakes tool.

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?

Schema coverage is 0%, so the description must compensate, and it largely does: it disambiguates account_fk (an int database ID, not an address, may not be 0, and is the merchant receiving payment) from account_address (the account charged), and clarifies token provenance (/access/login) and that pin belongs to account_address. Only amount and note get no added meaning.

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

Purpose4/5

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

States a specific verb+resource ('Charges the account') plus the triggering mechanism ('presented QR-code or NFC card'), which distinguishes it from generic siblings like account_pay or account_send. However it never names or excludes those siblings explicitly, so the differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

It gives an operational instruction ('Confirm (yes/no) before executing') and a prerequisite ('The payer must present a valid PIN'), which implies the usage context. But with many overlapping payment siblings (account_pay, account_send, account_wire, account_merchant_voucher_redeem), there is no explicit when-to-use-this-vs-alternatives guidance.

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

netfluid__account_infoCInspect

Returns detailed account information.

Returns detailed account information and balances. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations are empty, so the description carries the full disclosure burden. It states only that a json object is returned, with no mention of auth scope beyond the params, error or failure behavior, or what 'detailed' actually covers.

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

Conciseness3/5

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

The core claim is front-loaded, but the sentence 'Returns detailed account information' is duplicated almost verbatim before the balances clause, wasting space. The docblock @param/@return style is otherwise readable.

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

Completeness3/5

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

With no output schema and no annotations, the agent relies entirely on the description, which reduces the return value to 'a json object' without hinting at fields or structure. The parameter coverage is complete, so it is adequate but leaves the response shape opaque.

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 must compensate, and it does: all three params are documented, and account_fk gets valuable disambiguation (a database int, not an address, not 0, sourced from /wallet/accounts_list). The api_key and token notes are brief but sufficient.

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

Purpose3/5

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

The description names a specific operation ('returns detailed account information and balances'), which is more than a tautology. However, it offers no differentiation from close siblings such as netfluid__account, netfluid__account_statement, or netfluid__wallet_accounts_list, so an agent cannot tell which one gets account details versus statements versus lists.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. The only implied workflow cue is the note that account_fk comes 'as provided by /wallet/accounts_list', which hints at a prerequisite call but never states the routing logic against alternatives.

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

netfluid__account_merchant_voucher_issueAInspect

Issues a Netfluid voucher. Performs a FIAT withdraw. Only applicable on FIAT balances

@param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk into which to redeem the voucher @param amount: The amount to issue for

@return: a json object

NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
account_fkYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations are empty {} so the description carries the full behavioral burden. It does disclose two valuable traits: this mutates funds by performing a FIAT withdraw, and it is restricted to FIAT balances. It says nothing about permissions/authentication beyond the api_key/token params, irreversibility, idempotency, fees, or failure behavior — significant omissions for a money-moving operation with zero annotation coverage.

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?

Front-loaded with the purpose and constraints, then uses compact @param/@return tags. Every element carries information and there is no filler, though 'Issues a Netfluid voucher' and 'Performs a FIAT withdraw' partially overlap in what they convey.

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

Completeness3/5

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

There is no output schema and no annotations, so the description should compensate more than it does: '@return: a json object' tells the agent nothing about the response shape, voucher identifier, or new balance. Parameters and the FIAT-only constraint are covered, but the return contract and the quote/redeem workflow context are missing for a financial mutation.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all four parameters, and the account_fk note (a database int ID, not a wallet address string, and must not be 0) adds real disambiguation not present anywhere else. Only 'amount' is described thinly ('The amount to issue for'), with no units, precision, or min/max meaning.

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

Purpose4/5

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

States a specific verb and resource ('Issues a Netfluid voucher') plus the mechanism ('Performs a FIAT withdraw'), which is more than a restatement of the name. The verb 'issue' does separate it from the sibling verbs 'quote' and 'redeem', but the description never names those siblings, so differentiation is left to the reader.

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

Usage Guidelines3/5

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

It gives one conditional constraint ('Only applicable on FIAT balances'), which rules out non-FIAT balances. However there is no guidance on the obvious workflow alternatives: the sibling netfluid__account_merchant_voucher_quote (presumably needed first to price the voucher) and netfluid__account_merchant_voucher_redeem (the counterpart operation) are never mentioned, so the when-to-use-vs-alternatives question is only implied.

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

netfluid__account_merchant_voucher_quoteBInspect

Performs a quote to before issuing a Netfluid voucher as a merchant.

STEP 1: Performs a quote to issue a voucher as a merchant. Returns the merchant commission as well as the amount charged to the customer. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to issue the voucher @param amount: The amount to issue the voucher for in up to 2 decimals.

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
account_fkYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It partially compensates by disclosing what the call returns (merchant commission and customer-charged amount), which tells the agent this is a non-mutating preview. But '@return: a json object' is uninformative, and prerequisites, quote validity/expiry, and error behavior are unstated.

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

Conciseness3/5

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

The first sentence and the 'STEP 1:' sentence are largely redundant restatements, and the opening line contains a grammatical error ('quote to before issuing'). The parameter block is well organized, but the prose is repetitive rather than front-loaded.

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

Completeness3/5

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

For a 4-required-param tool with no annotations and no output schema, the description covers parameters and the substantive return contents (commission, charged amount), but omits authentication flow context beyond parameter notes, quote lifetime, and failure modes. Adequate but with visible gaps.

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?

Schema coverage is 0%, so the description must compensate, and it does: it documents all four parameters, including the critical clarification that account_fk is a database integer (not a wallet address) and may not be 0, and that amount is expressed with up to 2 decimals. Format details for token origin (/access/login) are also given.

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

Purpose4/5

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

The description states a specific verb and resource ('Performs a quote to issue a voucher as a merchant') and clarifies it's a pre-step ('STEP 1', 'to before issuing'). It does not name the sibling voucher_issue explicitly, but the sequencing language distinguishes it functionally from the other merchant voucher tools.

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

Usage Guidelines3/5

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

The 'STEP 1' framing implies this quote precedes netfluid__account_merchant_voucher_issue, which is useful implied usage. However, there is no explicit when-to-use/when-not statement, no named alternative, and no guidance on what to do with the returned quote.

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

netfluid__account_merchant_voucher_redeemBInspect

Redeems a Netfluid voucher.

@param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk into which to redeem the voucher @param voucher_code: The netfluid voucher code, a string consisting of 4 sets of numbers example 1234-0000-4321-5678

@return: a json object

NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes
voucher_codeYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It usefully reveals the auth dependency (token comes from /access/login) and a real constraint (account_fk is a DB integer, not an address, and may not be 0). But it omits whether redemption is irreversible, whether the voucher is single-use, what happens on an invalid/used code, and what permissions are required.

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 purpose sentence is front-loaded and the docblock form makes parameters scannable. The @param/@return scaffolding is slightly verbose for a tool description, but every line carries information and nothing is wasted.

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

Completeness3/5

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

For a 4-required-param mutation with no annotations and no output schema, parameter coverage is good but outcome behavior is thin: '@return: a json object' says nothing about the success payload, and failure/idempotency semantics are absent. Adequate but with clear gaps.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: each of the 4 parameters is documented, including token provenance (/access/login), the account_fk type/caveat, and the voucher_code format (1234-0000-4321-5678). Only minor gaps remain, such as whether account_fk must belong to the caller.

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

Purpose4/5

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

States a specific verb and resource: 'Redeems a Netfluid voucher.' An agent knows exactly what operation this performs. However, it does not distinguish itself from close siblings such as account_merchant_voucher_issue, account_merchant_voucher_quote, or netfluid_voucher_check, which all concern vouchers.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., check the voucher first via netfluid_voucher_check, or quote it before redeeming). Usage must be entirely inferred from the tool name.

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

netfluid__account_mintBInspect

Mints a new account of an account type into the wallet. Confirm (yes/no) before executing

Mints a new account of an account type into the wallet. There are costs associated with this operation. Minting is generally done asynchronously, it may take several seconds for the minted account to be available @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk into which the new account will be minted. @param account_type_fk: The account_type_fk to mint as per /account/types, default is Solana (7) @param currency_fk: The currency_fk to mint as per /currency/list, default is ZAR (7)

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes
currency_fkNo
account_type_fkNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations at all, the description carries the full disclosure burden, and it does add real behavioral context: there are costs, minting is asynchronous, and the account may take several seconds to appear, plus a human confirmation step. It stops short of saying what the costs are, whether the operation is reversible, or what permissions/state the wallet must be in.

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

Conciseness2/5

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

The opening paragraph is duplicated verbatim ('Mints a new account of an account type into the wallet...'), roughly doubling the size of the description with zero added information. The key purpose statement is front-loaded and the @param list is informative, but the redundant block is pure waste.

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

Completeness3/5

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

For a state-mutating tool with no annotations and no output schema, the description covers the essentials an agent needs (costs, async latency, human confirmation, parameter lookup paths). It is still thin on failure modes, reversibility, and what the returned JSON contains, which matters given there is no output schema.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: every one of the five parameters is annotated, including the non-obvious defaults (account_type_fk default Solana 7, currency_fk default ZAR 7) and lookup endpoints for both fk values. It does not explain the format or scope of api_key/token beyond provenance.

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

Purpose4/5

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

The first line states a specific verb and resource: 'Mints a new account of an account type into the wallet.' That is enough to separate it from siblings like account_buy, account_pair or wallet_accounts_list. It does not, however, explicitly contrast itself with the other account-creating or funding siblings.

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

Usage Guidelines3/5

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

The description gives one concrete procedural instruction ('Confirm (yes/no) before executing') and points to /account/types and /currency/list for resolving the two fk parameters. It never says when to prefer this tool over account_buy, account_pair, or other account-onboarding siblings, so the usage guidance is implied rather than explicit.

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

netfluid__account_pairBInspect

Assigns a PIN to an account for use by a QR-Code or NFC card. Confirm (yes/no) before executing

Assigns a PIN to an account for use by a QR-Code or NFC card @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param address: The account address @param pin: The 5 digit numeric PIN e.g 01234 @param expire_date: The optional expiry date on the PIN, format YYYY-MM-DD HH:MM:SS, in GMT timezone

@return: a json object
NameRequiredDescriptionDefault
pinYes
tokenYes
addressYes
api_keyYes
expire_dateNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations at all, the description carries the full burden. It does disclose one important behavioral trait — that the agent must obtain yes/no confirmation before executing — plus the PIN length (5 digits) and expiry timezone. It does not say what happens on re-pairing, whether the PIN can be overwritten, or what authorization level is needed.

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

Conciseness2/5

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

The opening sentence is duplicated verbatim ('Assigns a PIN to an account...' appears twice), wasting the most valuable front-loaded position. The @param block is compact and useful, but the redundancy shows poor structure.

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

Completeness3/5

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

For a 5-parameter mutation tool with no annotations and no output schema, the description covers the parameters and one behavioral rule (confirm first), but leaves out permission requirements, side effects on existing PINs, and any sense of the return object beyond '@return: a json object'.

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?

Schema coverage is 0%, so the description must compensate, and it largely does: it documents all five parameters, including pin as 'The 5 digit numeric PIN e.g 01234', expire_date as optional with the exact format 'YYYY-MM-DD HH:MM:SS, in GMT', and token's provenance ('provided by /access/login'). Only address and api_key are defined minimally.

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

Purpose4/5

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

States a specific verb and resource: 'Assigns a PIN to an account for use by a QR-Code or NFC card.' This distinguishes it from the nearby sibling netfluid__access_wallet_pin_change and netfluid__account_unlock by naming the PIN/QR/NFC pairing use case, though it never explicitly contrasts with those alternatives.

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

Usage Guidelines3/5

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

Gives the intended context (PIN used by a QR-Code or NFC card) and a procedural instruction ('Confirm (yes/no) before executing'), but no explicit when-to-use versus a PIN change or account unlock, and no stated prerequisites beyond the auth params.

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

netfluid__account_pauseBInspect

Temporarily restricts an account from performing any function that would result in funds existing the account. Can only be undone by an administrator, warn before using! Confirm (yes/no) before executing

Temporarily restricts an account from performing any function that would result in funds existing the account. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list @param lock: If set to 1 the account will be system locked, the customer cannot remove lock

@return: a json object
NameRequiredDescriptionDefault
lockNo
tokenYes
api_keyYes
account_fkYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full load. It does disclose important behavioral traits: reversal requires an administrator, the lock parameter is customer-irreversible, and confirmation is needed before execution. It omits whether the pause is idempotent, what happens to in-flight transactions, and what the returned JSON contains beyond 'a json object'.

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

Conciseness2/5

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

The opening paragraph is duplicated verbatim, wasting roughly half the text, and the '@param'/'@return' markers are raw doc-comment artifacts rather than prose. The key warning is front-loaded, but the redundancy is a clear structural defect. (Note also the typo 'funds existing the account' for 'exiting'.)

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

Completeness3/5

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

For a destructive, admin-reversible mutation with no annotations and no output schema, the description covers the essentials (irreversibility, lock semantics, confirmation). It still leaves the return payload undefined and does not describe side effects or error conditions, so it is adequate rather than complete.

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?

Schema coverage is 0%, so the description must carry the parameter burden, and it largely does: it explains account_fk is a database int ID (not an address) and cannot be 0, and that lock=1 applies a system lock the customer cannot remove. api_key and token are named but only minimally explained, which is the only gap.

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

Purpose4/5

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

States a specific action and target: it temporarily restricts an account from moving funds out. The verb+resource pair ('pause' an 'account') is clear and distinguishable from siblings like account_resume and account_unlock. It does not, however, explicitly contrast itself with those siblings (access_pause, account_unlock).

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

Usage Guidelines2/5

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

The only guidance is a caution: 'Can only be undone by an administrator, warn before using! Confirm (yes/no) before executing.' That is an operational warning, not guidance on when to choose this tool versus account_unlock, access_pause, or other restriction mechanisms. No prerequisite or alternative-selection logic is given.

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

netfluid__account_payBInspect

Charges the account a transaction fee. Confirm (yes/no) before executing

Charges the account a transaction fee. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk to charge @param amount: The amount to charge @param note: The note on the transaction

@return: a json object
NameRequiredDescriptionDefault
noteNo
tokenYes
amountYes
api_keyYes
account_fkYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations are empty, so the description carries the full burden. It does disclose two useful traits the schema cannot express: the operation charges the account (a mutation), and it must be confirmed with the user first. It says nothing about reversibility, failure modes, permission requirements, or what the resulting transaction does to the account balance.

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

Conciseness2/5

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

The first line and the sentence after the confirmation prompt are verbatim duplicates, wasting the highest-value position. The body is a raw code-comment dump with @param/@return tags rather than prose front-loaded around the action the agent must take.

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

Completeness3/5

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

For a 5-parameter mutation tool with no annotations and no output schema, the description covers the inputs well and adds the confirmation requirement, which is the single most important behavioral note. It stops short of describing the response ('a json object' is empty), error conditions, or how the charge settles, so it is adequate rather than complete.

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?

Schema description coverage is 0%, so the @param block is doing all the work and it largely succeeds: it explains that account_fk is a database integer rather than an account address and may not be 0, that token comes from /access/login, and that api_key is the application's key. Only amount and note are left as bare restatements, with no currency or unit given for amount.

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

Purpose4/5

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

The opening clause states a concrete verb and resource ('Charges the account a transaction fee'), so an agent knows a money-moving charge is being performed. What it lacks is any differentiation from close siblings such as netfluid__account_charge, netfluid__account_buy, or netfluid__account_send, which occupy the same semantic space.

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

Usage Guidelines3/5

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

'Confirm (yes/no) before executing' is a real procedural instruction that tells the agent to gate the call on user confirmation. But there is no guidance on when to pick this over account_charge or the other payment siblings, and no prerequisites beyond the parameter docs, so usage is only implied.

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

netfluid__account_resumeBInspect

Resumes full trading capability for an account that has been previously paused. Can only be undone by an administrator. Confirm (yes/no) before executing

Resumes full trading capability for an account that has been previously paused. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full behavioral burden. It does disclose two genuinely useful traits: the action is administrator-gated for reversal and it should be confirmed before executing. It stops short of describing auth/permission requirements, error conditions, or what state changes on success beyond 'full trading capability'.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim (once inline, once at the start of the JSDoc block), which is pure redundancy an agent must read past. The @param lines are information-dense and well front-loaded, but the duplication and the vague '@return: a json object' dilute an otherwise tight description.

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

Completeness3/5

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

For a state-changing, admin-gated account operation with no annotations and no output schema, the description covers parameters and the confirmation requirement adequately. It is still thin on outcome semantics: the return is dismissed as 'a json object' and there is no mention of failure modes (e.g., already-active account) or authentication/scope requirements.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: account_fk is flagged as a database integer (not an account address) that may not be 0 and is obtained from /wallet/accounts_list, and token is sourced from /access/login. api_key is described only generically ('allocated to your application'), so the compensation is good but not complete.

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

Purpose4/5

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

States a specific verb and resource ('Resumes full trading capability for an account that has been previously paused'), which is clearly distinct from the pause operation. However, it never differentiates itself from the sibling netfluid__access_resume, which an agent could easily confuse with this account-scoped variant, so sibling differentiation is incomplete.

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

Usage Guidelines3/5

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

The precondition is implied ('an account that has been previously paused') and the description adds a confirmation requirement ('Confirm (yes/no) before executing'), which is useful invocation guidance. It does not name alternatives such as netfluid__account_pause or netfluid__access_resume, and the sentence 'Can only be undone by an administrator' is ambiguous about whether it describes reversibility of the resume or who may pause again.

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

netfluid__account_sellBInspect

Sells a digital asset and returns the proceeds to the account's FIAT balance. Confirm (yes/no) before executing

Sells a digital asset and returns the proceeds to the account's FIAT balance @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to sell @param digital_asset_fk: The digital_asset_fk to sell @param amount: The amount of the digital_asset_fk to sell

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
account_fkYes
digital_asset_fkYes

TDQS

B3.4/5.0
Behavior3/5

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

With empty annotations, the description carries the full burden. It usefully discloses that this is a confirmation-gated trade that credits proceeds to FIAT, but says nothing about irreversibility, required permissions beyond the auth params, failure modes, or rate limits.

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

Conciseness3/5

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

The core sentence is front-loaded and clear, but the opening sentence is duplicated verbatim and the JSDoc @param tags largely restate parameter names, adding bulk without new meaning.

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

Completeness3/5

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

For a financial mutation tool with no annotations and no output schema, the description covers purpose, confirmation, and all params, but leaves the return value ('a json object') unelaborated and omits safety/mutation details an agent would need to invoke it reliably.

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?

Schema coverage is 0%, so the description must compensate, and it does document all five parameters. The note that account_fk is a database integer ID (not an address) and may not be 0 is genuinely valuable beyond the schema, though several params (amount, digital_asset_fk) are only minimally restated.

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

Purpose4/5

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

The description states a specific verb (sells), resource (a digital asset), and outcome (proceeds to the account's FIAT balance), which naturally distinguishes it from siblings like account_buy and account_swap. It stops short of naming those alternatives explicitly, so it is clear but not sibling-differentiating.

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

Usage Guidelines3/5

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

The only usage directive is 'Confirm (yes/no) before executing', which tells the agent a confirmation step is required but gives no when-to-use/when-not-to-use guidance or alternatives. Usage context is implied rather than spelled out.

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

netfluid__account_sendCInspect

Sends FIAT from this account to another Netfluid account. Optionally save as a beneficiary. Confirm (yes/no) before executing

Sends FIAT from this account to an account address. Optionally save as a beneficiary. The FIAT sent is converted to the destination account's currency. This function can send FIAT across wallets @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to send @param destination: The destination's account address (type str, not account_fk, the user readable address of the account) @param amount: The amount to send @param note: The note on the transaction @param save: Optionally saves destination as beneficiary for future use. Boolean value of 0=False, 1=True @param name: Sets the beneficiary descriptive name. Only applicable if save is set to 1

@return: a json object
NameRequiredDescriptionDefault
nameNo
noteNo
saveNo
tokenYes
amountYes
api_keyYes
account_fkYes
destinationYes

TDQS

C2.9/5.0
Behavior2/5

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

With annotations empty, the description carries the full burden. It usefully discloses that FIAT is converted to the destination currency and that transfers can cross wallets, but says nothing about irreversibility, permissions beyond the api_key/token params, failure behavior, or rate limits. The dangling 'Confirm (yes/no)' statement adds ambiguity rather than transparency.

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

Conciseness3/5

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

Purpose is front-loaded, and the param list earns its space given 0% schema coverage. However the opening is duplicated almost verbatim across two sentences ('Sends FIAT ... Optionally save as a beneficiary'), and the stray 'Confirm (yes/no) before executing' dangles without a corresponding field.

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

Completeness2/5

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

For a money-movement tool with no annotations and no output schema, this leaves key questions open: how the stated confirmation is supposed to be performed, what the returned 'json object' contains, and whether the transfer is reversible. Parameter documentation is solid, but the safety and interaction model is incomplete.

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?

Schema coverage is 0%, so the description must compensate, and the @param block does substantial work: it disambiguates account_fk (an int database ID, not an address) from destination (a user-readable address string), and clarifies save as 0/1 and name as applicable only when save=1. This resolves the most confusing parts of the schema. It loses a point only because it does not fix the schema's apparent type error on 'name' (typed integer).

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

Purpose4/5

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

States a specific verb and resource: 'Sends FIAT from this account to another Netfluid account', and adds scope details (converted to destination currency, cross-wallet). It is clearly distinguishable from withdraw_to_bank or beneficiary_add, though it never explicitly contrasts itself with nearby siblings like account_wire, account_pay, or account_swap.

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

Usage Guidelines2/5

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

The only usage-ish instruction is 'Confirm (yes/no) before executing', but no such confirmation parameter exists in the schema, so the guidance is unactionable and confusing. There is no when-to-use/when-not guidance and no routing away from account_wire, account_pay, or account_swap.

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

netfluid__account_send_smsAInspect

Sends a Mobile SMS and charges this account. Confirm (yes/no) before executing

Sends a SMS and charges this account. This end point will deliver to limited destinations: South Africa, Botswana, Zimbabwe, UK. Delivery is not guaranteed. Charged per submission. @param api_key: The api key allocated to your application, must have admin privileges @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list @param mobile: The destination mobile number in e164 international format (no +) @param message: The message to send, charged per 160 characters

@return: a json object
NameRequiredDescriptionDefault
tokenYes
mobileYes
api_keyYes
messageYes
account_fkYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the account is charged, that charging is per submission and per 160 characters, that delivery is not guaranteed, that only SA/Botswana/Zimbabwe/UK are supported, and that the api_key needs admin privileges. It omits failure/reversal behavior and rate limits, but the side-effect profile is unusually well covered.

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

Conciseness3/5

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

Information is front-loaded and the @param blocks are useful, but the first two sentences restate the same fact ('Sends a Mobile SMS and charges this account' / 'Sends a SMS and charges this account'), which is pure duplication. The @return line is also low-value.

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 5-required-param mutation with no annotations and no output schema, the description is largely self-sufficient: parameters, cost model, and channel limitations are all present. The weak spot is the return value, dismissed only as 'a json object', leaving success/failure signaling undocumented.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate and it does: all five parameters are documented with real semantics – admin-scoped api_key, token provenance (/access/login), account_fk as a non-zero integer database ID from /wallet/accounts_list (explicitly not an address string), mobile in e164 without '+', and message billed per 160 chars.

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 opening states a specific verb and resource – 'Sends a Mobile SMS and charges this account' – and the SMS channel inherently distinguishes it from siblings like send_email and push_message_send. An agent can tell what the tool does at a glance.

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

Usage Guidelines3/5

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

The 'Confirm (yes/no) before executing' instruction is a genuine workflow guideline and the limited-destination list scopes where it can be used. However, it never states when to prefer this over send_email or push_message_send, nor any prerequisites beyond admin privileges.

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

netfluid__account_statementAInspect

Returns detailed account FIAT statement.

Returns detailed account statement from a start date for a maximum of entries. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list @param max_rows: The maximum number of entries to return, if not provided we return 1000 @param start_date: The date from which to return the statement, format YYYY-MM-DD HH:MM:SS. If not provided then it returns 60 days worth of data, date is in the GMT timezone

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
max_rowsYes
account_fkYes
start_dateYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does disclose meaningful behavior beyond the schema: default of 1000 rows when max_rows is omitted, default of 60 days of data, GMT timezone for start_date, and the auth chain (api_key plus token from /access/login). It stops short of describing pagination, rate limits, or permissions, so it is strong but not complete.

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 @param block is appropriately dense and front-loads the defaults, but the first two sentences are near-duplicates ('Returns detailed account FIAT statement' / 'Returns detailed account statement from a start date...'), so one sentence does not earn its place.

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 5-parameter, all-required read tool with no annotations and no output schema, the description covers all inputs, their defaults, and the auth prerequisites. The only thin spot is the return value, dismissed as 'a json object' with no hint of the entry fields, which matters given there is no output schema.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate entirely, and it does: every one of the 5 parameters is documented with meaning, format, and defaults. The account_fk note (database ID int, not an address str, may not be 0, sourced from /wallet/accounts_list) is exactly the kind of disambiguation an agent needs to avoid a wrong call.

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

Purpose4/5

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

The opening states a specific verb and resource ('Returns detailed account FIAT statement') and the second sentence adds the scoping inputs (start date, max entries). However, it never distinguishes itself from near-siblings like netfluid__account_info or netfluid__wallet_accounts_list_verbose, so an agent cannot easily tell which of these returns the statement versus a balance or account list.

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

Usage Guidelines2/5

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

The description explains what the tool returns but gives no when-to-use guidance, no exclusions, and no alternative tools. An agent must infer from the name alone that this is the read path for statement history versus netfluid__account_info.

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

netfluid__account_swapAInspect

Swaps one digital asset for another on an account level. Confirm (yes/no) before executing

Swaps one digital asset for another on an account level, use digital_asset_fk=0 or to_digital_asset_fk=0 to indicate FIAT @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to swap @param digital_asset_fk: The origin digital_asset_fk to swap @param to_digital_asset_fk: The digital_asset_fk to swap @param amount: The amount of the digital_asset_fk to swap @param note: The transaction note

@return: a json object
NameRequiredDescriptionDefault
noteNo
tokenYes
amountYes
api_keyYes
account_fkYes
digital_asset_fkYes
to_digital_asset_fkYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the required human confirmation step, the auth inputs (api_key and a token from /access/login), and the FIAT sentinel convention, but it says nothing about reversibility, permissions, rate limits, or failure behavior for what is inherently a mutating financial operation.

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

Conciseness3/5

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

The opening sentence is duplicated almost verbatim ('Swaps one digital asset for another on an account level') before the JSDoc-style @param block, and the @return note ('a json object') is near-empty filler. The parameter documentation is valuable, but the structure wastes space on repetition.

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 7-parameter mutation tool with no annotations and no output schema, the description covers purpose, every parameter, authentication, and the confirmation/ FIAT conventions. The only real gap is the unspecified response shape, which matters less given swaps are typically fire-and-confirm.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate, and it does: it documents all seven parameters, warns that account_fk is an integer database ID (not an address) and may not be 0, and explains the digital_asset_fk=0 / to_digital_asset_fk=0 convention for indicating FIAT. This adds meaning well beyond the bare types in the schema.

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

Purpose4/5

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

States a specific verb (swaps) and resource (one digital asset for another) with scope ('account level'), which implicitly separates it from the blockchain-level crypto_swap/crypto_dex_swap siblings. It does not explicitly name the alternative tools, so the differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

The description front-loads a useful interaction rule ('Confirm (yes/no) before executing') and scopes the operation to the account level, but it never says when to choose this over netfluid__crypto_swap or netfluid__account_sell, nor what prerequisites must hold before swapping. Usage is implied rather than guided.

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

netfluid__account_typesCInspect

Lists all account types, typically static information

Lists all account types @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It adds one genuinely useful behavioral trait ('typically static information', implying the result is cacheable and slow-changing), but does not state that this is a read-only operation, confirm no side effects, or describe error/auth behavior. A single hint is insufficient for a no-annotation tool.

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

Conciseness2/5

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

The description repeats 'Lists all account types' twice and carries over raw docstring artifacts (@param, @return). Roughly half the text is redundant, though the core statement is front-loaded.

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

Completeness3/5

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

For a trivial one-parameter list endpoint with no output schema and no annotations, the description covers the input and notes the return is a JSON object. It is minimally complete, but does not describe what an 'account type' contains or how results are shaped, leaving the return value under-specified.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the single api_key parameter. It does explain the parameter ('The api key allocated to your application'), which the schema omits, covering the only input. It stops there, with no format or scope detail beyond the generic definition.

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

Purpose4/5

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

States a clear verb+resource ('Lists all account types') and adds the useful qualifier that the data is 'typically static'. However, it does not differentiate itself from nearby sibling list tools such as currency_types, commodity_types, or telco_accounts, so an agent gets a clear purpose but no disambiguation.

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

Usage Guidelines2/5

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

There is no indication of when to call this versus alternatives, nor any prerequisites beyond the required api_key. The 'typically static information' note hints that results are stable, but no when-to-use or when-not-to-use guidance is given.

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

netfluid__account_unlockAInspect

Unlocks a locked account (from status_fk=10 to status_fk=1). Confirm (yes/no) before executing

Unlocks a locked account. @param api_key: The api key allocated to your application, must have admin privileges @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does add real behavior: the exact state change, the requirement that api_key have admin privileges, and a confirmation gate before execution. It does not cover error cases (e.g. account not currently locked) or reversibility, so it falls short of a 5.

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

Conciseness3/5

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

The critical line is front-loaded well, but the description wastes space repeating the purpose sentence and mixes an MCP description with JSDoc-style @param/@return tags. Every sentence is not earning its place.

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

Completeness3/5

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

For a 3-required-param mutation with no annotations and no output schema, the description covers the inputs and the state transition but leaves the return value as a bare 'a json object' and says nothing about failure behavior. Adequate but with clear gaps on the return contract.

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?

Schema coverage is 0%, so the description must compensate and largely does: api_key (admin privileges required), token (wallet_api_token from /access/login), and account_fk (a database int ID, not an address, must not be 0, sourced from /wallet/accounts_list). It adds format and source context the bare schema lacks, though the api_key/token string formats remain unspecified.

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

Purpose4/5

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

States a specific verb+resource ('Unlocks a locked account') plus the exact state transition (status_fk=10 to status_fk=1), which is enough to distinguish it from siblings like account_pause and account_resume. The only blemish is the verbatim repetition of 'Unlocks a locked account.' in the second line.

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

Usage Guidelines3/5

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

Usage is implied by the state transition — you call it when an account is in status_fk=10 — and it adds a 'Confirm (yes/no) before executing' step. However, it names no alternatives (e.g. account_resume/account_pause) and gives no explicit when-not-to-use condition, leaving the agent to infer the trigger.

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

netfluid__account_wireBInspect

Sends FIAT or Digital Assets from this account to a blockchain address. FIAT is converted by the system. Confirm (yes/no) before executing

Sends FIAT or Digital Assets from this account to a blockchain address. The FIAT account must be associated to the same blockchain as the destination address @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to wire @param destination: The destination blockchain address (str) @param amount: The amount to wire @param digital_asset_fk: The digital_asset_fk to wire, use 0 for FIAT @param note: The note on the transaction

@return: a json object
NameRequiredDescriptionDefault
noteNo
tokenYes
amountYes
api_keyYes
account_fkYes
destinationYes
digital_asset_fkYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full load. It discloses non-obvious behavior: FIAT auto-conversion, a yes/no confirmation gate, and the same-blockchain constraint. But it is silent on irreversibility, fees, permission/auth requirements, and rate limits — important for a high-stakes wire operation.

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

Conciseness3/5

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

Purpose is front-loaded and the @param block is well organized, but the opening sentence is duplicated verbatim, which is pure waste. The '@return: a json object' line is uninformative filler.

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

Completeness3/5

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

For a 7-parameter mutation with no annotations and no output schema, the description covers parameters and core mechanics but leaves gaps around auth, fees, failure modes, and the actual response shape. Adequate but short of complete for a funds-transfer tool.

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?

Schema description coverage is 0%, so the description must compensate, and it does document every parameter via @param lines. It adds genuine meaning beyond types, e.g. account_fk is a DB ID not an address and may not be 0, and digital_asset_fk=0 means FIAT.

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

Purpose4/5

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

States a specific verb and resource ('Sends FIAT or Digital Assets from this account to a blockchain address') and adds the material scope detail that FIAT is converted by the system. This is enough to distinguish it from fund-moving siblings like account_send or withdraw_to_bank, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Implicit usage is clear (move funds out of an account) and it states a real prerequisite ('The FIAT account must be associated to the same blockchain as the destination address') plus a confirmation requirement. However, it never says when to choose this over account_send, account_pay, or crypto_spend, so routing between siblings is left to inference.

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

netfluid__ask_geminiBInspect

Performs a Gemini AI prompt.

@param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param prompt: The string prompt

@return: a json object

NameRequiredDescriptionDefault
tokenYes
promptYes
api_keyYes
wallet_fkYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden, and it discloses almost nothing: only '@return: a json object'. It does not say that this is an external LLM call (latency, cost, non-determinism), whether the prompt or response is logged, whether the call requires an authenticated session, or how errors are surfaced.

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 JSDoc-style block is short, front-loads the single purpose sentence, and every line is scannable. The only waste is the redundant '@param prompt: The string prompt' restatement.

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

Completeness2/5

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

For a four-required-parameter call with no annotations, no output schema, and 0% schema coverage, the description documents the inputs but leaves the behavior opaque: nothing about the auth flow ordering, the shape or content of the JSON response, or the cost/latency of an LLM invocation. An agent has enough to construct the call but not to predict its effect.

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?

Schema description coverage is 0%, so the description must compensate, and it does meaningfully: it documents all four parameters and supplies provenance that the schema lacks (token is 'the wallet_api_token provided by /access/login'; wallet_fk likewise comes from that login flow). It loses points only for circular entries like 'prompt: The string prompt', which add nothing.

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

Purpose4/5

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

The description states a concrete action on a concrete resource: it sends a prompt to Gemini AI and returns a result. That is enough to distinguish it from every sibling (all of which are wallet/payment operations), though it never frames itself relative to those siblings or explains why an agent would use an AI call inside this API.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite ordering, and no mention of alternatives. An agent cannot tell from the text when invoking Gemini is appropriate versus using the domain-specific tools around it, nor what must happen before this call (e.g. that a login token is required first).

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

netfluid__automated_agent_signupAInspect

Automated signup for autonomous agents in order for an Agentic AI to perform autonomous agents payments. In order for this wallet to be autonomous, it needs to be created by a human KYCed wallet. Once done this wallet will be fully enabled to perform any transaction a human KYCed wallet is capable of. Including access to virtual bank accounts in Europe and the USA as a funding source. The impact of this is that the agent will have its own wallet, own bank accounts and blockchain wallets without limitations. The wallet is automatically minted with a Solana Blockchain wallet. The agent would need to save the wallet_fk and PIN of the new wallet in long term storage in order to make use of it later The human accepts all legal responsibility for this wallet. Process can take up to 30 seconds. @param secret: A secret, minimum 8 characters, must be unique system-wide. This is typically the username, but private. Suggestion: Generate 3 natural language words, concatenated, or prompt the human for 3 words. @param pin: The 5 digit PIN associated with the new wallet. Can be any random 5 numbers. @param email: The agents email address, if not available use a blank string. @param mobile: The human's mobile phone number, in e164 format, e.g. 27821234567 (no +). if not available use a blank string. @param currency_fk: The currency of the first account, use 7 (ZAR) for everyone else use 3 (USD) @param sponsor_wallet_fk: The sponsor's wallet_fk, this wallet_fk must be KYCed if not the new wallet will also not be KYCed @param sponsor_wallet_pin: The sponsor's 5-digit PIN

@return: a json object

NameRequiredDescriptionDefault
pinYes
emailYes
mobileYes
secretYes
currency_fkNo
sponsor_wallet_fkYes
sponsor_wallet_pinYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses the 30-second latency, that the sponsor must be KYCed, that a Solana wallet is auto-minted, that the human assumes legal responsibility, and strongly warns the caller to persist wallet_fk and PIN. It omits error/failure behavior and whether the call is idempotent or costs money.

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

Conciseness3/5

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

Purpose is front-loaded, but the body is bloated with marketing filler ('own wallet, own bank accounts and blockchain wallets without limitations') and typos ('agents payments'), and it mixes behavior, legal terms, and parameter docs without clear structure.

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 high-complexity, 7-parameter, no-annotation, no-output-schema tool, the description covers the creation flow, KYC dependency, latency, persistence requirement, and every parameter. Coverage of the return value is thin ('a json object', with wallet_fk/PIN only implied), which is the main remaining gap.

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?

Schema coverage is 0%, so the prose docs are the only source, and they cover all 7 params with real semantics: secret uniqueness/min-length with a generation suggestion, 5-digit PIN, e164 mobile format with blank-string fallback, and the sponsor KYC constraint. The currency_fk guidance is garbled ('use 7 (ZAR) for everyone else use 3 (USD)'), which blunts an otherwise strong parameter section.

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

Purpose4/5

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

The first sentence states a specific verb+resource (automated signup for an agent wallet) and the description goes on to detail the distinctive flow: a human-KYCed sponsor wallet mints an agent wallet with a Solana blockchain wallet and bank accounts. It does not, however, distinguish itself from the near-identically named sibling netfluid__automated_signup, so an agent cannot tell them apart from text alone.

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

Usage Guidelines3/5

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

Usage context is implied ('for an Agentic AI to perform autonomous agents payments') and it states a prerequisite (sponsor wallet must be KYCed or the new wallet won't be). There is no explicit when-to-use-vs-alternative guidance against payment_wallet_signup or automated_signup, and no when-not-to-use condition.

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

netfluid__automated_signupAInspect

Automated signup for new customers. AI should use this tool as the preferred method to signup human customers.

Automated signup for new customers. Process can take up to 30 seconds. Once completed direct the human customer to the kyc url for them to complete the identity verification process. Should the human need more tries at identity verification, call wallet_kyc_session_create @param secret: A secret, minimum 8 characters, must be unique system-wide. This is typically the customer username, but private. Suggestion: Generate 3 natural language words, concatenated, or prompt the human for 3 words, something that the human can remember. @param pin: The 5 digit PIN associated with the wallet. Can be any random 5 numbers, but perhaps use something that is meaningful to the human or prompt them for it. @param email: The customers email address. @param mobile: The customers mobile phone number, in e164 format, e.g. 27821234567 (no +) @param currency_fk: The currency of the first account, if the human is South African, use 7 (ZAR) for everyone else use 3 (USD) @param app_id: The app id for this customer group, default is 1 (Netfluid) @param org_id: The organisational id for this customer group, default is 0 (Netfluid) @customer_referral_code: The customer's referral code, this cannot be blank if app_id != 1

@return: a json object
NameRequiredDescriptionDefault
pinYes
emailYes
app_idNo
mobileYes
org_idNo
secretYes
currency_fkNo
customer_referral_codeNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does add meaningful behavior: the call can take up to 30 seconds, it produces a KYC url the human must be sent to, and the retry path goes through wallet_kyc_session_create. It still omits auth/permission requirements and what happens on failure or duplicate signup, so it is not fully complete.

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

Conciseness3/5

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

The opening line 'Automated signup for new customers.' is duplicated verbatim immediately after the preferred-method sentence, which is pure redundancy. The rest is front-loaded and informative, but the repetition wastes space in an otherwise long block.

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?

Handles 8 parameters well and gives the downstream KYC workflow, but there is no output schema and the return value is described only as 'a json object' — it never states that the returned object contains the KYC url the caller is told to hand to the customer. Naming that field would close the remaining gap.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates fully: min-8-character unique 'secret' generation advice, 5-digit 'pin', e164 'mobile' with a concrete example, currency_fk mapping (7=ZAR, 3=USD), default app_id/org_id values, and the conditional constraint that customer_referral_code cannot be blank when app_id != 1.

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

Purpose4/5

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

States a specific verb and resource ('Automated signup for new customers') and distinguishes the human path from the agent path by scoping it to 'human customers' (vs. sibling netfluid__automated_agent_signup). It does not name that sibling explicitly, so the differentiation is inferred rather than stated.

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?

Explicitly marks itself as 'the preferred method to signup human customers' and gives a follow-up routing rule: after completion, direct the customer to the KYC url, and if more verification tries are needed, call wallet_kyc_session_create. Clear context and one named alternative, but no explicit when-NOT-to-use exclusions.

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

netfluid__beneficiaries_listBInspect

Lists all beneficiaries on this wallet or on this account

Lists all beneficiaries on this wallet or on this account @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login, may not be 0 @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for this account, may be set to 0, in which case all beneficiaries associated with this wallet are returned

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes
account_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses two behavioral traits: wallet_fk 'may not be 0' and account_fk=0 returns all beneficiaries for the wallet. However, it says nothing about auth requirements beyond the token/api_key parameters, read-only nature, or pagination limits.

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

Conciseness3/5

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

The leading sentence is duplicated verbatim, and the JSDoc-style @param/@return boilerplate is retained, which is wasteful and not front-loaded cleanly. The content is not excessive in length, but the duplication undermines structure.

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

Completeness3/5

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

For a four-required-parameter list tool with no output schema and no annotations, the description covers inputs adequately but reduces the return to 'a json object' with no indication of the beneficiary fields or pagination. It is minimally sufficient but leaves return-shape questions unanswered.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all four parameters, clarifies that account_fk is a database int not an address and may be 0, and notes wallet_fk must be non-zero. It adds genuine meaning beyond the bare type declarations in the schema.

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

Purpose4/5

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

The description states a clear verb and resource: 'Lists all beneficiaries' on a wallet or account. It is distinguishable from the sibling write operations beneficiary_add and beneficiary_remove, but it offers no explicit differentiation from other list tools such as wallet_accounts_list. Clear but not sibling-differentiated.

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

Usage Guidelines2/5

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

There is no when-to-use guidance or mention of alternatives, prerequisites, or scoping decisions (e.g., when to scope by account_fk vs. wallet_fk). The agent must infer usage from the parameter names alone.

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

netfluid__beneficiary_addBInspect

Creates a beneficiary on this wallet or on this account

Creates a beneficiary on this wallet or on this account @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login, may not be 0 @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for this account, may be set to 0, in which case this beneficiary will be available to this wallet @param name: The descriptive name of this beneficiary, try to keep name short and unique per wallet @param address: The address of the beneficiary, either the Netfluid Account Address or the Blockchain address @param rba_fk: The rba_fk of the recipient bank account, set to 0 if either name or address is provided @param note: The note or recipient reference on the transaction, visible to the receiver.

@return: a json object
NameRequiredDescriptionDefault
nameYes
noteYes
tokenYes
rba_fkYes
addressYes
api_keyYes
wallet_fkYes
account_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose some genuine behavioral detail beyond the schema: name should be 'short and unique per wallet', account_fk=0 makes the beneficiary wallet-scoped, and note is 'visible to the receiver'. However it omits auth/permission requirements beyond naming the api_key/token params, error behavior, and any side effects of creating a beneficiary.

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

Conciseness3/5

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

The purpose is front-loaded, but the opening sentence is duplicated verbatim and the @param block is verbose with an internally contradictory line for account_fk. Most content earns its place, but the redundancy and contradiction are structural flaws.

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

Completeness3/5

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

For an 8-param mutation tool with empty annotations and no output schema, the parameter documentation closes the largest gap. But the @return line ('a json object') conveys nothing about the created beneficiary's shape, and there is no error or failure-mode context an agent would need to invoke this reliably.

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 across 8 required params, the description must compensate and largely does: every parameter gets a meaning, including type guidance ('this is a database ID (int) not an account address (str)') and the rba_fk/name/address dependency. The account_fk text is self-contradictory ('may not be 0' then 'may be set to 0'), which blunts an otherwise thorough set of parameter docs.

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

Purpose4/5

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

The opening states a specific verb and resource: 'Creates a beneficiary on this wallet or on this account.' This distinguishes it from siblings like beneficiary_remove and beneficiaries_list, though it never names those siblings explicitly. The repeated opening sentence adds noise but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus beneficiaries_list or beneficiary_remove, nor any preconditions or workflow context. The account_fk/wallet_fk relationship hints at scope, but an agent gets no routing guidance from the description.

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

netfluid__beneficiary_removeDInspect

Deletes a beneficiary

Creates a beneficiary on this wallet or on this account @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account on which the beneficiary is set (may be 0) @param beneficiary_id: The beneficiary_id provided by /beneficiary/list (uuid)

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes
beneficiary_idYes

TDQS

D1.8/5.0
Behavior1/5

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

With no annotations, the description carries the full burden, and it fails: no permissions/auth requirements, no reversibility or side effects, and only a vacuous "@return: a json object". Worse, it claims both deletion and creation, so behavioral intent is genuinely ambiguous.

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

Conciseness2/5

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

A raw docstring blob mixing a contradictory summary, a misapplied @param block, and a useless return note. The duplicated account_fk sentence is redundant and self-conflicting, so structure and signal-to-noise are poor even though it is short.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and 0% schema coverage, the description should at minimum unambiguously state what it destroys and under what auth. Instead it contradicts its own purpose and gives no output or effect information, leaving critical gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does document all four parameters (api_key origin, token from /access/login, beneficiary_id as uuid from /beneficiary/list, account_fk as an int DB ID rather than an address). It is undercut by an internal contradiction about account_fk ("may not be 0" immediately followed by "may be 0"), but it is more informative than the bare schema.

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

Purpose2/5

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

The first line states a specific verb+resource ("Deletes a beneficiary") that would distinguish it from the sibling netfluid__beneficiary_add. However, the very next line says "Creates a beneficiary on this wallet or on this account", a direct self-contradiction that reads as copy-paste from the add tool and leaves the agent unsure whether this tool deletes or creates.

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

Usage Guidelines1/5

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

There is no statement of when to use this tool vs alternatives, no prerequisites, and no mention of the sibling beneficiary_add or beneficiaries_list. The contradictory "Creates" line actively misleads rather than guiding tool selection.

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

netfluid__bridge_blockchainBInspect

Creates a blockchain to blockchain bridge. Confirm (yes/no) before executing

Creates a blockchain to blockchain bridge. Only supports USDC transfers. Do not send any other tokens as these may be lost. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk that will use the bridge @param blockchain: The blockchain that will receive the transfer. Possible values "ethereum","solana","avalanche_c_chain" @param address: The address on the above blockchain that will receive the transfer @param alias: A descriptive name for this Bridge, can be anything, set by async default if none is provided. @param currency: The currency, possible values are usdc, usdt, eurc

@return: a json object
NameRequiredDescriptionDefault
aliasNo
tokenYes
addressYes
api_keyYes
currencyNo
wallet_fkYes
account_fkYes
blockchainYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations the description carries the full burden, and it does disclose meaningful behavior: a required confirmation step, an asset restriction, and a loss warning ('these may be lost'). However it is internally inconsistent — the currency param lists usdc, usdt and eurc while the preamble says USDC only — leaving the true supported-asset set ambiguous, and it says nothing about irreversibility, timing or fees.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim ('Creates a blockchain to blockchain bridge'), which is wasted space, and the @param block is dense. The safety restriction is front-loaded, which is good, but the repetition costs structure points.

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

Completeness3/5

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

For an 8-parameter mutation with no annotations and no output schema, the description covers the critical inputs and the asset-safety warning, but return values are dismissed with '@return: a json object' despite there being no output schema to fall back on, and no downstream identifiers or status behavior are described.

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?

Schema description coverage is 0% across 8 parameters, so the description does the heavy lifting and largely succeeds: it explains account_fk is a DB integer ID (not an address, not 0), enumerates blockchain values, and notes alias defaults asynchronously. The currency enumeration directly contradicts the USDC-only preamble, which blunts an otherwise strong effort.

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

Purpose4/5

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

States a specific verb and resource ('Creates a blockchain to blockchain bridge'), which cleanly separates it from the sibling bridge_list, bridge_delete and bridge_rename tools. It does not, however, explicitly name the alternative ramp tools (bridge_on_ramp, bridge_off_ramp_sepa/ach_wire) so routing is left to inference from the name.

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

Usage Guidelines3/5

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

Provides a workflow instruction ('Confirm (yes/no) before executing') and an asset-scope rule ('Only supports USDC transfers'), which is real usage guidance. It stops short of saying when to choose this tool over the sibling on-ramp/off-ramp bridges or what prerequisites must be met.

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

netfluid__bridge_deleteBInspect

Deactivates the Bridge. Confirm (yes/no) before executing

Deactivates the Bridge @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param external_account_id: The bridge's unique reference, found on /bridge/list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes
external_account_idYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does add two meaningful facts: the operation is a deactivation (soft, presumably) rather than a destructive delete, and it requires an explicit yes/no confirmation. It stops short of saying whether deactivation is reversible, what happens to in-flight transfers or balances, or how the caller's permissions affect success.

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

Conciseness3/5

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

The opening sentence 'Deactivates the Bridge' is repeated verbatim in the second block, so the description wastes its most prominent position on duplication. The JSDoc parameter block is compact and useful, but the copy-paste artifact suggests the text was assembled carelessly.

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

Completeness3/5

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

For a four-parameter, all-required mutation with no annotations and no output schema, the description covers auth provenance, the confirmation gate, and the deactivation semantics, which is enough to invoke it. It still omits reversibility, side effects on the bridge's assets, and any hint of the return payload beyond '@return: a json object'.

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?

Schema description coverage is 0%, so the description must compensate, and it does: all four parameters are documented with provenance — api_key is the application key, token and wallet_fk come from /access/login, and external_account_id is found on /bridge/list. That is genuinely actionable, though no format or validation details are given.

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

Purpose4/5

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

The description gives a specific verb+resource ('Deactivates the Bridge') and importantly corrects the misleading tool name 'delete' by clarifying the operation is a deactivation rather than a hard delete. It does not, however, distinguish itself from siblings such as netfluid__bridge_rename or netfluid__bridge_list, which an agent must infer from names alone.

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

Usage Guidelines2/5

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

The only usage instruction is 'Confirm (yes/no) before executing', which is a procedural step rather than guidance on when to choose this tool over bridge_rename or other bridge operations. No preconditions, no alternatives, no statement of what state the bridge must be in.

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

netfluid__bridge_listBInspect

Returns bridges based on the transfer_type, a bridge is either an "on-ramp" (also called a "virtual account" and a funding source), an "off-ramp" (USDC transfer to a fiat bank account) or a "blockchain" (USDC transfer between blockchains). Bridges are only available on blockchain accounts

Returns bridges based on the transfer_type, a bridge is either an on-ramp, an off-ramp or a blockchain. Bridge on-ramps are also called "virtual accounts" @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk that will use the bridge (this is a database ID (int) not an account address (str) and may not be 0) @param transfer_type: The type of bridge, possible values are "off-ramp" for USDC and USDt transfers to SEPA/ACH bank accounts, "blockchain" for USDC cross blockchain transfers, "on-ramp" for FIAT deposits into virtual accounts (that instantly arrive as USDC)

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes
account_fkYes
transfer_typeYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does add real behavioral context: bridges only exist on blockchain accounts, and account_fk 'may not be 0'. However it says nothing about pagination, rate limits, filtering defaults, or what the returned JSON contains beyond 'a json object'.

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

Conciseness2/5

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

The opening sentence is duplicated almost verbatim, account_fk's explanation is pasted twice inside itself, and the @return is the useless 'a json object'. The content is buried in redundant prose rather than front-loaded cleanly.

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

Completeness3/5

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

For a 5-required-param tool with no annotations and no output schema, the description covers parameters and preconditions adequately, but its treatment of the return payload is non-existent ('a json object'), and with no output schema that gap is on the description.

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?

Schema description coverage is 0%, so the description must compensate — and it largely does, documenting all five parameters via @param tags, including the transfer_type value set (off-ramp/blockchain/on-ramp) that the schema does not enumerate. It loses points for tautological phrasing (account_fk's description is repeated verbatim) and thin docs on api_key/token.

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

Purpose4/5

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

The description gives a specific verb+resource ('Returns bridges') and even defines the domain vocabulary (on-ramp/virtual account, off-ramp, blockchain). It does not, however, distinguish this listing tool from siblings like bridge_blockchain, bridge_on_ramp, bridge_off_ramp_sepa, or bridge_rename, so the agent gets no help telling 'list' from 'create/rename'.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no alternative named. The only contextual hint is the constraint 'Bridges are only available on blockchain accounts', which is a precondition rather than usage routing.

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

netfluid__bridge_off_ramp_ach_wireAInspect

Creates a blockchain to FIAT off-ramp in the USA supporting both ACH/WIRE bank networks. Confirm (yes/no) before executing

Creates a blockchain to FIAT off-ramp in the USA support both ACH/WIRE bank networks. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk that will use the bridge @param account_owner: The owner of the recipient bank account @param account_number: The recipient bank account number @param routing_number: The recipient bank account routing number (us) or sort code (uk). @param address_line: The address of the recipient, street and must include a number @param address_city: The address of the recipient, city @param address_state: The address of the recipient, state @param address_zipcode: The address of the recipient, zip or postal code @param address_iso3_country: The address of the recipient, ISO3 country code @param alias: A descriptive name for this Bridge, can be anything, set by async default if none is provided. @param destination_rail: The destination rail to use, possible values are "ach_same_day" and "wire", async default is "ach_same_day" @param currency: The crypto currency to expect, possible values are "usdc","usdt", async defaults to "usdc" @param account_type: The recipient bank account type, possible values are "checking" or "savings", async defaults to "checking". Only applicable when destination_rail = "wire"

@return: a json object
NameRequiredDescriptionDefault
aliasNo
tokenYes
api_keyYes
currencyNo
wallet_fkYes
account_fkYes
account_typeNo
address_cityYes
address_lineYes
account_ownerYes
address_stateYes
account_numberYes
routing_numberYes
address_zipcodeYes
destination_railNo
address_iso3_countryYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden; it does add meaningful traits such as the required yes/no confirmation and the fact that this moves real money via ACH/WIRE. It still omits reversibility, failure behavior, auth/permission prerequisites, and rate limits, which matter for a financial off-ramp.

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

Conciseness3/5

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

The purpose sentence is front-loaded and the param block is genuinely useful, but the opening sentence is duplicated verbatim in a slightly garbled second copy, which wastes space without adding information.

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

Completeness3/5

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

For a 16-parameter, 12-required financial mutation with no annotations and no output schema, the parameter documentation is strong, but return behavior is dismissed as 'a json object' and the description says nothing about what happens to funds, timing, or error cases after invocation.

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?

Schema coverage is 0% and there are no declared enums, yet the description documents every parameter, including allowed values for destination_rail (ach_same_day/wire), currency (usdc/usdt) and account_type (checking/savings), plus the constraint that account_fk is an integer ID that may not be 0. A few entries (token, api_key) only give provenance pointers, keeping this just short of exhaustive.

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?

States a specific verb (creates) plus resource (blockchain-to-FIAT off-ramp) and scope (USA, ACH/WIRE), which cleanly separates it from siblings like bridge_off_ramp_sepa and bridge_on_ramp. An agent can identify the operation without opening the schema.

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

Usage Guidelines3/5

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

'Confirm (yes/no) before executing' gives a workflow instruction, and the USA/ACH-WIRE scope implies applicability. However, it never names when to prefer this over bridge_off_ramp_sepa, withdraw_to_bank, or account_wire, leaving alternative selection to inference.

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

netfluid__bridge_off_ramp_sepaBInspect

Creates a blockchain (USDC) to FIAT off-ramp in Europe for SEPA supporting bank accounts. Confirm (yes/no) before executing

Creates a blockchain to FIAT off-ramp in Europe for SEPA supporting bank accounts. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk that will use the bridge @param account_owner: The owner of the recipient bank account @param iban: The recipient bank account IBAN @param iso3_country: The recipient bank account iso3 country code, examples BEL for Belgium @param iban_bic: The recipient bank account IBAN BIC. @param entity_type: The type of entity, possible values are "individual" or "business" @param address_line: The address of the recipient, street and must include a number @param address_city: The address of the recipient, city @param address_state: The address of the recipient, state @param address_zipcode: The address of the recipient, zip or postal code @param address_iso3_country: The address of the recipient, ISO3 country code @param alias: A descriptive name for this Bridge, can be anything, set by async default if none is provided. @param first_name: If type of entity is and "individual", provide the recipients first name @param last_name: If type of entity is an "individual", provide the recipients last name @param business_name: If type of entity is a "business", provide the business name, if not provided we will use the account_owner @param reference: The payment reference, displayed on the recipients bank statement.

@return: a json object
NameRequiredDescriptionDefault
ibanYes
aliasNo
tokenYes
api_keyYes
iban_bicYes
last_nameNo
referenceNo
wallet_fkYes
account_fkYes
first_nameNo
entity_typeYes
address_cityYes
address_lineYes
iso3_countryYes
account_ownerYes
address_stateYes
business_nameNo
address_zipcodeYes
address_iso3_countryYes

TDQS

B3/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden. It discloses that a yes/no confirmation precedes execution and that the result is 'a json object', but says nothing about permissions, idempotency, whether the transfer is irreversible, timing/settlement, or failure modes for a money-movement operation.

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

Conciseness3/5

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

Purpose is front-loaded, and a long @param block is justified by 19 undocumented parameters. However, the purpose sentence is duplicated verbatim at the top and again before the parameter list, and '@return: a json object' is filler. Functional but with avoidable redundancy.

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

Completeness3/5

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

With 19 parameters, 14 required, no annotations and no output schema, the description covers inputs reasonably well but leaves the outcome thin: no settlement timing, no error/limit behavior, and the return is described only as 'a json object'. An agent could call it, but not confidently predict what happens next.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: every parameter is documented with real semantics beyond the schema — account_fk is a database int, not an address, and may not be 0; iso3_country shown as 'BEL'; entity_type values 'individual'/'business'; address_line must include a number; alias has an async default. Only the credential params (api_key, token) are near-restatements.

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

Purpose4/5

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

The opening sentence gives a specific verb, resource, corridor and scope: creating a USDC-to-FIAT off-ramp for SEPA/Europe bank accounts. The Europe/SEPA qualifier implicitly separates it from bridge_off_ramp_ach_wire, though the sibling is never named. Clear enough to select correctly, but not maximal.

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

Usage Guidelines2/5

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

Nothing states when to use this versus bridge_off_ramp_ach_wire, bridge_on_ramp, or the other bridge tools, and no prerequisites (KYC, funded wallet) are given. The only procedural note is 'Confirm (yes/no) before executing', which is a confirmation ritual rather than usage guidance.

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

netfluid__bridge_on_rampBInspect

Creates a virtual account (SEPA/ACH/WIRE) to blockchain bridge. Confirm (yes/no) before executing

Creates a virtual account (SEPA/ACH/WIRE) to blockchain bridge. Limited to one virtual account per payment rail (SEPA/ACH/WIRE). @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk that will use the bridge @param blockchain: The blockchain that will receive the transfer. Possible values "ethereum","solana","avalanche_c_chain" @param address: The address on the above blockchain that will receive the transfer @param alias: A descriptive name for this Bridge, can be anything, set by async default if none is provided. @param currency: The destination currency, possible values are "usdc", "usdt" @param source_rail: The source rail, possible values are "sepa", "wire" or "ach_push"

@return: a json object
NameRequiredDescriptionDefault
aliasNo
tokenYes
addressYes
api_keyYes
currencyNo
wallet_fkYes
account_fkYes
blockchainYes
source_railNo

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the confirmation gate and the one-account-per-rail limit, but omits auth/permission requirements, idempotency, failure modes, and what exactly happens to the virtual account after creation.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim ('Creates a virtual account (SEPA/ACH/WIRE) to blockchain bridge' appears twice), wasting space, and the @param block is verbose. Content is front-loaded but not tight.

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

Completeness3/5

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

For a 9-parameter, non-read-only bridge tool with no annotations and no output schema, the parameter coverage is good and the confirmation protocol is noted. What remains missing is the surrounding behavioral context: how confirmation is actually supplied, auth/credential expectations, and error handling.

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?

Schema coverage is 0%, yet the description documents all nine parameters inline, including enum-like value sets for blockchain ('ethereum','solana','avalanche_c_chain'), currency, and source_rail, plus the critical warning that account_fk is a database int and may not be 0. This substantially compensates for the empty schema.

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

Purpose4/5

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

The description states a specific verb and resource ('Creates a virtual account (SEPA/ACH/WIRE) to blockchain bridge') and adds a distinguishing constraint ('Limited to one virtual account per payment rail'). It is clear enough to separate on-ramp from off-ramp siblings, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

It gives one real usage instruction ('Confirm (yes/no) before executing') and a constraint on how many accounts may exist per rail. It does not, however, say when to choose this tool over bridge_off_ramp_sepa/ach_wire or bridge_blockchain, nor state prerequisites for calling it.

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

netfluid__bridge_renameBInspect

Changes the Bridge's descriptive name. Confirm (yes/no) before executing

Changes the Bridge's descriptive name. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param external_account_id: The bridge's unique reference, found on /bridge/list @param alias: The new descriptive name for this Bridge

@return: a json object
NameRequiredDescriptionDefault
aliasYes
tokenYes
api_keyYes
wallet_fkYes
external_account_idYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a meaningful behavioral trait – the confirmation requirement – which is not derivable from the schema. But it omits reversibility, permission/auth requirements, and side effects beyond the name change, leaving significant gaps for a mutation tool.

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

Conciseness3/5

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

The purpose sentence is front-loaded, but it is repeated verbatim at the top, and the body is raw JSDoc-style @param/@return text that leaks into the description. Functionally readable but structurally noisy.

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

Completeness3/5

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

For a 5-required-param mutation tool with no annotations and no output schema, the description covers parameters adequately but under-specifies safety: no auth failure behavior, no note on whether the rename is reversible, and only a minimal '@return: a json object'.

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?

Schema coverage is 0%, so the description must compensate, and it does: all five params are documented, including where external_account_id is found (/bridge/list) and what alias means. Minor value loss because some entries (api_key, alias) are self-evident, but coverage is complete.

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

Purpose4/5

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

States a specific verb+resource: 'Changes the Bridge's descriptive name.' This distinguishes it well from siblings like bridge_delete or bridge_list. However, it makes no explicit sibling differentiation or scope statement beyond the verb itself.

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

Usage Guidelines2/5

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

The only usage instruction is 'Confirm (yes/no) before executing', which is an invocation guard but not when-to-use guidance. There is no indication of when to prefer rename over related bridge tools, nor any prerequisite context.

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

netfluid__commodity_typesCInspect

Returns all authorised commodities

Returns all authorised commodities @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.4/5.0
Behavior2/5

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

With annotations empty, the description carries the full behavioral burden. It implies a read-only list via 'Returns', but never states authentication requirements, rate limits, pagination, or result shape beyond a vague 'a json object'.

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

Conciseness2/5

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

The opening sentence is duplicated verbatim, and raw docstring artifacts ('@param', '@return') with odd indentation leak into the agent-facing text. The useful content is buried and the presentation is bloated rather than front-loaded.

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

Completeness2/5

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

For a single-parameter listing tool with no annotations and no output schema, the description should at least sketch the returned collection or its fields; 'a json object' leaves the agent unable to anticipate the response.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it partially does by documenting '@param api_key: The api key allocated to your application'. That is the only parameter, so the meaning is now clear even though format/obtaining instructions are absent.

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

Purpose3/5

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

It gives a verb and resource ('Returns all authorised commodities'), but 'commodities' is ambiguous in a sibling set that already contains crypto_digitalassets, currency_types, account_types and telco_bundles. Nothing distinguishes it from those listing tools, so the agent cannot confidently pick it.

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

Usage Guidelines2/5

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

There is no when-to-use statement, no exclusions, and no mention of the related sibling listing tools. The agent must guess the context in which commodity types are needed.

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

netfluid__complianceBInspect

Provides a link to Netfluid's compliance procedures and documentation This tools provides reference information in the "referenced_tools" schema @return: a json object

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It hints that this is a passive reference call returning a link and a JSON object in a 'referenced_tools' schema, which signals a non-mutating read. It does not clarify whether there are auth/prerequisite requirements or how the referenced tools should be followed up on.

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

Conciseness3/5

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

The definition is short and front-loads the purpose, but the return information is stated twice ('referenced_tools' schema and '@return: a json object') and the '@return' annotation is redundant. The awkward phrasing ('This tools provides') adds noise without value.

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

Completeness3/5

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

For a simple zero-parameter reference tool with no output schema, the description gives a minimal but workable picture. It references a 'referenced_tools' schema that is never defined or exposed, leaving ambiguity about what actually comes back, but the core purpose is covered.

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?

The tool takes zero parameters, so there is nothing for the description to document. Baseline 4 applies; the empty input schema is self-explanatory.

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

Purpose4/5

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

The description states a specific verb and resource: it provides a link to Netfluid's compliance procedures and documentation. An agent can tell this is a reference/lookup tool. However, it does not explicitly distinguish itself from similarly documentation-oriented siblings such as netfluid__terms and netfluid__privacy.

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

Usage Guidelines2/5

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

There is no guidance on when to invoke this tool or how it relates to the terms/privacy siblings. The intended trigger (an agent or user asking about compliance obligations) is only implied by the description text.

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

netfluid__crypto_balanceBInspect

Returns a crypto wallet address balance associated with an account_fk

Returns a crypto wallet address balance associated with an account_fk @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses that account_fk is a database integer ID, may not be 0, and comes from /wallet/accounts_list, and that the return is a json object. However, it does not describe authentication requirements beyond the parameter names, error behavior, or return structure in any detail.

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

Conciseness3/5

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

The first sentence is duplicated verbatim, wasting space. The @param and @return blocks are front-loaded and information-dense, but the duplication and vague '@return: a json object' reduce efficiency.

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

Completeness3/5

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

For a 3-parameter tool with no output schema and no annotations, the description covers parameter meaning and sources reasonably well. However, it does not explain the shape of the returned balance, which would be important given the absence of an output schema.

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?

Schema description coverage is 0%, so the description must compensate. It documents all three required parameters: api_key's purpose, token's source via /access/login, and account_fk's type, allowed range, and origin. This adds substantial meaning beyond the bare schema types.

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

Purpose4/5

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

The description states a specific verb and resource: 'Returns a crypto wallet address balance associated with an account_fk.' It distinguishes the resource as a wallet address balance, which separates it from some siblings, but it does not explicitly contrast with the very similar sibling netfluid__crypto_token_balance.

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

Usage Guidelines2/5

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

The description provides no explicit when-to-use guidance or alternatives. It only notes that account_fk is provided by /wallet/accounts_list, which is a prerequisite rather than usage direction.

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

netfluid__crypto_blockchainsCInspect

List all the system supported blockchains, a list of blockchain_fk values

List all the supported blockchains, each entry returns a blockchain_fk for later use @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.8/5.0
Behavior2/5

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

Annotations are empty, so the description carries the full behavioral burden. It implies a safe read ('List all...') but discloses nothing about auth requirements beyond a bare api_key mention, pagination, result size, or whether the list is filtered per account.

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

Conciseness2/5

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

The same idea is stated twice ('List all the system supported blockchains' / 'List all the supported blockchains'), and the text is padded with raw JSDoc tags and a near-useless '@return: a json object'. The redundancy and formatting waste space without adding information.

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

Completeness3/5

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

For a trivial one-parameter list tool this is roughly adequate: it names the resource and says entries yield blockchain_fk values. But with no output schema, the vague 'a json object' return note leaves the actual response shape underspecified.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It partially does with '@param api_key: The api key allocated to your application,' which adds meaning the bare schema lacks, but the single required parameter is documented only at the level of an API-key label.

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

Purpose4/5

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

States a specific verb and resource ('List all the system supported blockchains') and clarifies the unit of the response ('a list of blockchain_fk values'). This is clear enough to distinguish it from most siblings, though it does not explicitly name competing tools like crypto_digitalassets or currency_crypto.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no named alternatives. The phrase 'for later use' hints at a workflow (fetch blockchain_fk before calling other tools) but never states the condition that selects this tool over siblings, leaving the agent to infer it.

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

netfluid__crypto_dex_swapBInspect

Swaps a token for another token using a Distributed Exchange (DEX) on the blockchain. Confirm (yes/no) before executing

Swaps a token (not a digital asset) for another token using a Distributed Exchange (DEX) on the blockchain. The DEX charges fees in performing the swap Unsupported tokens will not be displayed in balances, a blockchain explorer will be required to retrieve these @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk associated with this blockchain wallet @param from_token: The origin token mint or contract address @param to_token: The destination token mint or contract address @param amount: The amount of the token to swap

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
to_tokenYes
account_fkYes
from_tokenYes

TDQS

B3.4/5.0
Behavior4/5

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

Annotations are empty, so the description carries the full burden and it delivers meaningful behavior: a confirmation step is required before execution, the DEX charges fees, and unsupported tokens will not appear in balances (needing a block explorer). It does not cover auth requirements, reversibility of the swap, or failure behavior.

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

Conciseness3/5

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

The core swap sentence is stated twice in near-identical form ('Swaps a token for another token using a Distributed Exchange (DEX) on the blockchain'), which is redundant. The confirm instruction is front-loaded well, but the duplication wastes space.

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

Completeness3/5

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

For a 6-parameter mutation with no annotations and no output schema, the description covers inputs, the confirmation gate, fees, and one important caveat. It is still missing auth/permission requirements, whether the swap is irreversible, and any sense of the returned JSON beyond 'a json object'.

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?

Schema description coverage is 0%, so the description must compensate, and it does — every one of the six parameters is documented, including the high-value caveat that account_fk is a database ID (int, not an address) and may not be 0. The api_key and token descriptions are terse but sufficient to distinguish them.

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

Purpose4/5

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

States a specific verb and resource (swaps one token for another via a DEX on-chain), which is clear enough to act on. It fails to differentiate from the sibling tools netfluid__crypto_swap and netfluid__account_swap, so an agent cannot tell which swap variant to pick without opening schemas.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of when this should be preferred over crypto_swap or account_swap. The only procedural instruction is the confirm (yes/no) step, which is execution mechanics, not selection guidance.

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

netfluid__crypto_digitalasset_infoCInspect

List the digital asset's information based on a blockchain_fk and digital_asset_fk

List the digital asset's information based on a blockchain_fk and digital_asset_fk @param api_key: The api key allocated to your application @param blockchain_fk: The blockchain_fk on which this digital_asset_fk resides @param digital_asset_fk: The digital_asset_fk for this digital asset

@return: a json object
NameRequiredDescriptionDefault
api_keyYes
blockchain_fkYes
digital_asset_fkYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It never states that this is a non-mutating read, whether api_key is required for authentication (how it is obtained), whether results are paginated or rate-limited, and only offers the uninformative '@return: a json object'.

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

Conciseness2/5

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

The primary sentence is duplicated verbatim, and the body is JSDoc boilerplate (@param/@return) rather than prose aimed at a tool-selecting agent. The '@return: a json object' line conveys nothing and wastes space.

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

Completeness2/5

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

For a 3-required-parameter lookup tool with no annotations and no output schema, the description should explain authentication, FK provenance, and result shape; it explains only the bare relationships and nothing about output or limits.

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

Parameters3/5

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

Schema description coverage is 0%, so the description is the only source of parameter meaning. It does add real value by explaining that blockchain_fk is the chain on which digital_asset_fk resides and that api_key is the application's allocated key, but it gives no format, valid-value, or lookup guidance for the two foreign keys.

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

Purpose3/5

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

The description states it retrieves a digital asset's information scoped by blockchain_fk and digital_asset_fk, which is understandable, but the doubled placeholder line and the vague verb 'List ... information' leave it unclear whether this returns one asset or many. It also makes no attempt to distinguish itself from close siblings such as netfluid__crypto_digitalassets or netfluid__crypto_info.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus crypto_digitalassets, crypto_info, or crypto_token_balance, and no prerequisites or exclusions. The agent must infer the use case entirely from the name and parameters.

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

netfluid__crypto_digitalassetsCInspect

List all the supported digital assets, a list of digital_asset_fk also applicable to to_digital_asset_fk

List all the supported digital assets, each entry returns a digital_asset_fk for later use @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations are empty, so the description carries the full behavioral burden but discloses very little: it claims a json object return and mentions the digital_asset_fk field. It says nothing about auth requirements beyond the api_key param, whether results are paginated, caching or rate limits, or whether any state is affected. The repeated text also makes the behavioral claims ambiguous.

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

Conciseness2/5

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

The description is visibly duplicated – the same list statement appears twice with minor rewording – and it embeds @param/@return doc tags into prose. Not front-loaded or deduplicated, so it wastes the reader's attention before conveying the one useful fact (the digital_asset_fk handle).

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

Completeness2/5

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

For a one-param list tool with no output schema, no annotations, and no schema descriptions, the description should at minimum nail down the return shape and the chaining contract. It only vaguely says 'a json object' and hints at digital_asset_fk reuse; combined with the duplicated text, an agent cannot fully predict the response.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does document the single parameter as 'The api key allocated to your application'. That is adequate for one param but adds no format or acquisition detail beyond a restatement of the obvious.

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

Purpose3/5

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

The description does state a clear verb+resource ('List all the supported digital assets'), but it says it twice in slightly different words and never distinguishes this from close siblings such as crypto_digitalasset_info, crypto_blockchains, currency_crypto, or wallet_assets_list. An agent can tell what it does, but not reliably why it should pick this over the alternatives.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no named alternative. The only usage hint is implicit: the returned digital_asset_fk is 'for later use' and is 'also applicable to to_digital_asset_fk', which hints at a downstream chaining pattern but never states the condition under which this tool should be chosen.

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

netfluid__crypto_from_keyBInspect

Recovers any blockchain wallet from a private key or mnemonic, display only, no action is taken

Recovers any blockchain wallet from a private key or mnemonic, display only, no action is taken The order of recover is to use the mnemonic first, private key second. One or the other must be provided. No action is taken. The suppo @param api_key: The api key allocated to your application @param blockchain_fk: The blockchain to use for the recovery @param private_key: The private key to recover from, urlencoded @param mnemonic: The key word mnemonic to recover from, keywords separated by a space

@return: a json object
NameRequiredDescriptionDefault
api_keyYes
mnemonicNo
private_keyNo
blockchain_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations at all, the description carries the full behavioral burden. It usefully discloses that the operation is read-only ('display only, no action is taken') and states the mnemonic/private-key precedence rule. It omits other relevant behavior: whether secrets are transmitted or persisted server-side, error behavior when neither key is supplied, and any rate or security constraints.

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

Conciseness2/5

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

The opening sentence is duplicated verbatim and the body is truncated mid-word ('The suppo'), so content is both repeated and lost. The @param block merely restates schema property names. Structure is disorganized and not front-loaded beyond the one repeated line.

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

Completeness2/5

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

There is no output schema, so the description owns the return contract, yet it offers only '@return: a json object' with no indication of what fields come back (address, balances, derivation path). Combined with the truncated sentence and undocumented blockchain_fk domain, this leaves meaningful gaps for a 4-parameter crypto tool.

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?

Schema description coverage is 0%, so the description must compensate, and it does document all four parameters with real detail: api_key is 'allocated to your application,' blockchain_fk selects the chain, private_key must be urlencoded, and mnemonic keywords are space-separated. Encoding and delimiter formats are non-obvious facts that the bare schema does not carry. It does not explain valid blockchain_fk values.

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

Purpose4/5

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

States a specific verb and resource: recovers/derives a blockchain wallet from a private key or mnemonic, plus the important qualifier that it is 'display only, no action is taken.' It does not distinguish itself from the near-identical sibling netfluid__access_recover or netfluid__wallet_mnemonic, which keeps it below a 5.

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

Usage Guidelines3/5

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

Gives conditional guidance on inputs — mnemonic takes precedence over private key, and one or the other must be provided — which is useful operating context. However, it never says when to choose this tool over sibling recovery tools such as access_recover or wallet_mnemonic, so tool-selection guidance is implied at best.

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

netfluid__crypto_infoBInspect

Returns a crypto wallet address and balances associated with an account_fk

Returns a crypto wallet address and balances associated with an account_fk @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk for the account as provided by /wallet/accounts_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does add useful behavior-adjacent context: authentication requires api_key and a token obtained from /access/login, and account_fk is a numeric database ID that must not be 0. But it reveals nothing about read-only semantics, failure modes, rate limits, or return shape beyond 'a json object'.

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

Conciseness3/5

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

The core sentence is repeated verbatim at the top, which is pure waste, and the JSDoc block is functional but verbose. The useful content is front-loaded, so structure is acceptable but not tight.

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

Completeness3/5

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

For a 3-required-param tool with no annotations and no output schema, the description covers auth chain and parameter meaning reasonably but leaves the return value as an unhelpful 'a json object'. An agent cannot know what fields (address, per-asset balances) to expect.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: all three parameters are explained (api_key = app key, token = from /access/login, account_fk = int DB ID, not an address, may not be 0, sourced from /wallet/accounts_list). This adds real meaning beyond bare types, though format details for token/api_key are thin.

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

Purpose4/5

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

States a specific verb+resource ('Returns a crypto wallet address and balances') scoped by an account_fk, which is concrete enough to act on. However it does not distinguish itself from close siblings like crypto_balance, crypto_token_balance, or account_info, so the differentiation dimension is unmet.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives, even though several sibling tools (crypto_balance, account_info) appear to overlap. The reader is left to infer selection from the description alone.

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

netfluid__crypto_optinAInspect

Opts the blockchain wallet into a digital asset (token). Confirm (yes/no) before executing

Opts the blockchain wallet into a digital asset. This is typically required to be performed before the blockchain wallet will accept or hold this digital asset. Blockchains either charge a fee or wit @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk associated with this blockchain wallet @param asset_id: The asset_id or contract address of the digital asset (token) on this blockchain can be found from /crypto/digitalassets

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
asset_idYes
account_fkYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations at all, the description carries the entire burden. It does add real behavioral context: a confirmation step before execution and an indication that blockchains may charge a fee. However, the fee/wait sentence is truncated mid-word ('or wit'), so a key side-effect detail is left incomplete, and there is no statement about reversibility or required permissions.

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

Conciseness2/5

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

The opening purpose sentence is duplicated verbatim, and a sentence is cut off mid-word ('Blockchains either charge a fee or wit'), so the structure is not clean or front-loaded. The raw @param/@return tags are legible but read as pasted doc-comment output rather than a curated tool description.

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

Completeness3/5

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

For a 4-required-parameter mutation tool with no annotations and no output schema, the description covers the parameters well and flags the confirmation step, but leaves gaps: the truncated fee sentence, no mention of reversibility (despite the optout sibling) or permission/auth scope beyond the token, and no contract for the returned JSON.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate and it does: it types and scopes every parameter and adds non-obvious semantics such as account_fk being a database int (not an address) that may not be 0, and it points to the source endpoints (/access/login for token, /crypto/digitalassets for asset_id). This goes well beyond what the bare schema conveys.

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

Purpose4/5

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

The description names a specific verb and resource ('Opts the blockchain wallet into a digital asset (token)') and states the business purpose (required before the wallet will accept or hold the asset), which clearly separates it from the sibling netfluid__crypto_optout. The core statement is repeated verbatim in the second line, adding noise, but the purpose itself is unambiguous.

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?

It gives a concrete prerequisite ('typically required to be performed before the blockchain wallet will accept or hold this digital asset') and an operational instruction ('Confirm (yes/no) before executing'), so the agent knows when and how to invoke it. It does not name the inverse sibling (crypto_optout) or state exclusions, so it stops short of a full when/when-not treatment.

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

netfluid__crypto_optoutAInspect

Opts the blockchain wallet out of holding a digital asset. Confirm (yes/no) before executing

Opts the blockchain wallet out of holding a digital asset. Ensure that the blockchain wallet has a zero balance of this asset, before performing this action as value may be lost. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk associated with this blockchain wallet @param asset_id: The asset_id or contract address of the digital asset on this blockchain, can be found from /crypto/digitalassets

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
asset_idYes
account_fkYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does meaningful work: it flags the operation as potentially value-destroying and imposes a zero-balance precondition, which an agent must check. It does not describe auth scope or reversibility beyond the api_key/token framing.

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

Conciseness3/5

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

The core sentence 'Opts the blockchain wallet out of holding a digital asset' is repeated verbatim immediately after the confirm instruction, and the JSDoc block leaves the return value vague ('a json object'). The substance is present but not tightly front-loaded.

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 4-required-param mutation with no annotations and no output schema, the description supplies the destructive warning, the precondition, and full parameter meaning. Only the return value is left underspecified, which is minor given the tool's nature.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates: it documents all four parameters, warns account_fk is an int DB ID (not an address, not 0), and tells the agent asset_id is a contract address discoverable from /crypto/digitalassets. This is exactly the compensation a 0%-coverage schema requires.

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

Purpose4/5

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

States a specific verb (opts out) and resource (the blockchain wallet re a digital asset), clearly distinguishing it from its inverse sibling netfluid__crypto_optin. However, it never names the sibling or scopes the operation beyond the single wallet/asset pair.

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?

Gives two concrete usage conditions: confirm (yes/no) before executing, and ensure the wallet holds a zero balance first or value may be lost. It lacks an explicit pointer to crypto_optin as the inverse operation, but the preconditions are unusually well stated.

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

netfluid__crypto_spendBInspect

Spends a digital asset to a destination blockchain address. Confirm (yes/no) before executing

Spends a digital asset to a destination blockchain address @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk of the sender or from account @param asset_id: The asset_id or contract address of the digital asset (token) on this blockchain, asset_id can be found from /crypto/digitalassets look for "address" in the response @param destination: The destination blockchain address (not the internal account address) @param amount: The amount of the digital asset to send, this amount is 10 to the power of the assets decimals, the asset's decimals can be found from /crypto/digitalassets look for "decimals" in the response. @param note: The note on the transaction

@return: a json object
NameRequiredDescriptionDefault
noteNo
tokenYes
amountYes
api_keyYes
asset_idYes
account_fkYes
destinationYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does convey that this is an irreversible value-moving spend requiring confirmation, plus prerequisite dependencies (token from /access/login, asset_id/decimals from /crypto/digitalassets). However it omits reversibility/fee/permission detail and gives only 'a json object' for the return, leaving meaningful behavioral gaps.

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

Conciseness3/5

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

The summary sentence is duplicated verbatim ('Spends a digital asset to a destination blockchain address' appears twice), which is wasteful and muddles front-loading. The per-parameter block is long but each entry earns its place; the misplaced 'Confirm (yes/no)' clause is awkwardly positioned.

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

Completeness3/5

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

For a 7-parameter mutation tool with no annotations and no output schema, the parameter and dependency coverage is strong, but it leaves the confirmation mechanism ambiguous (no matching schema field), says nothing about permissions, irreversibility, or fees, and the return value is described only as 'a json object.' Adequate but with clear gaps.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does so thoroughly: it clarifies account_fk is an int database ID (not an address, not 0), destination is the blockchain address (not internal), asset_id is the contract address sourced from /crypto/digitalassets, and amount is expressed as 10^decimals base units with a pointer to the decimals field. This adds genuine non-obvious meaning for all 7 parameters.

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

Purpose4/5

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

The description states a specific verb+resource: 'Spends a digital asset to a destination blockchain address.' This distinguishes it reasonably from read-only siblings like crypto_balance, but it never explicitly contrasts with the nearby value-moving tools (crypto_swap, crypto_dex_swap, account_send), so sibling differentiation is left to inference.

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

Usage Guidelines2/5

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

The only workflow cue is 'Confirm (yes/no) before executing,' which is an ambiguous instruction (there is no confirm parameter in the schema) rather than selection guidance. No when-to-use vs. when-not, and no named alternatives among the many send/swap siblings are provided.

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

netfluid__crypto_swapAInspect

Swaps a digital asset for another using a Distributed Exchange (DEX) on the blockchain. Confirm (yes/no) before executing

Swaps a digital asset for another using a Distributed Exchange (DEX). The DEX charges fees in performing the swap This tools forces the use of a swap via a blockchain DEX, rather try /account/swap to swap between digital assets @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk associated with this blockchain wallet @param digital_asset_fk: The origin digital_asset_fk, get value from /crypto/digitalassets @param to_digital_asset_fk: The destination digital_asset_fk, get value from /crypto/digitalassets @param amount: The amount of the digital asset to swap

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
account_fkYes
digital_asset_fkYes
to_digital_asset_fkYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that 'The DEX charges fees in performing the swap' and requires a yes/no confirmation before executing, but says nothing about reversibility of a swap, slippage, or permission/auth prerequisites beyond the param tags.

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

Conciseness3/5

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

The core purpose ('Swaps a digital asset for another using a Distributed Exchange (DEX)') is front-loaded, but it is restated almost verbatim in the body. The @return line ('a json object') adds nothing, and the mixed first-person prose plus param tags are slightly cluttered.

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

Completeness3/5

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

With no annotations and no output schema, the description covers parameters and the fee/confirmation behavior reasonably well, but the return value is left effectively unexplained and the odd 'Confirm (yes/no)' instruction is not tied to any parameter or flow, leaving a mutation tool somewhat under-specified.

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?

Schema description coverage is 0%, so the description must compensate. It documents all six parameters with meaningful detail, including that account_fk is an integer database ID (not an address) and may not be 0, and that both asset FKs come from /crypto/digitalassets. That is strong value beyond the bare schema.

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

Purpose4/5

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

The description states a specific verb+resource ('Swaps a digital asset for another using a Distributed Exchange (DEX)') and explicitly routes away from the /account/swap sibling. However, it never distinguishes itself from the near-identical sibling netfluid__crypto_dex_swap, leaving an obvious ambiguity unresolved.

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?

It names an explicit alternative ('rather try /account/swap to swap between digital assets') and states the condition that selects this tool (forced blockchain DEX swap), plus 'Confirm (yes/no) before executing'. It gives clear routing context, though it omits when-not-to-use relative to crypto_dex_swap.

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

netfluid__crypto_token_balanceBInspect

Retrieves a token (asset_id) balance on the blockchain, given a asset_id or token or contract address

Retrieves a token (asset_id) balance on the blockchain, given a asset_id or token or contract address This tool will retrieve any token balance from the blockchain, even those not support by Netfluid @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk associated with this blockchain wallet @param asset_id: The asset_id or contract address of the digital asset on this blockchain, can be found from /crypto/digitalassets

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
asset_idYes
account_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose one genuinely useful behavioral trait — that it retrieves any token balance 'even those not supported by Netfluid' — and names the auth dependencies (api_key, wallet_api_token from /access/login). It says nothing about read-only safety, rate limits, failure modes, or what the returned JSON contains beyond 'a json object'.

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

Conciseness3/5

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

The purpose sentence appears twice in full, which is pure waste, and the @param/@return block reads as raw API-doc boilerplate. The content that survives is front-loaded and useful, but the duplication costs it a point.

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

Completeness3/5

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

For a 4-required-param, unannotated, no-output-schema tool, the description covers all inputs well and adds the 'any token' caveat. It stops short of describing the returned balance shape, auth-scope requirements, or error behavior, leaving real gaps an agent would hit in practice.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: all four required params are explained, including the critical warning that account_fk is a database integer ID, not an address, and may not be 0, plus sourcing hints for token and asset_id. It is a meaningful addition the schema alone would not provide, though it does not confirm types or formats for the string params.

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

Purpose4/5

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

The description states a specific verb+resource: retrieving a token balance on the blockchain, keyed by asset_id, token, or contract address. It never distinguishes itself from the many near-neighbor siblings such as crypto_balance, crypto_digitalasset_info, or wallet_assets_list, which an agent would plausibly confuse it with. The opening sentence is also duplicated verbatim, diluting an otherwise clear purpose.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not guidance relative to adjacent tools like crypto_balance or wallet_assets_list. The only indirect help is the @param note that asset_id 'can be found from /crypto/digitalassets', which hints at a lookup workflow but does not tell the agent when this tool is the right choice. Usage must be inferred entirely.

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

netfluid__crypto_verifyCInspect

Verifies a blockchain address as valid for the blockchain

Verifies a blockchain address as valid for the blockchain. Can be any address on that blockchain, if successful it returns a balance of its crypto and digital assets. @param api_key: The api key allocated to your application @param address: The blockchain address @param blockchain_fk: The blockchain_fk of the supported blockchain.

@return: a json object
NameRequiredDescriptionDefault
addressYes
api_keyYes
blockchain_fkYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries full behavioral burden. It does disclose two useful traits: validity is checked against the whole blockchain (not ownership-restricted) and success returns balances of crypto and digital assets. It says nothing about failure behavior, auth requirements beyond naming an api_key, rate limits, or whether any state changes occur.

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

Conciseness2/5

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

The opening sentence is duplicated verbatim, and '@return: a json object' is pure filler. The JSDoc-style param tags are functional but the redundancy and a no-information return line dilute an otherwise short description.

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

Completeness2/5

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

For a 3-required-parameter tool with no annotations, no output schema, and 0% schema coverage, the description is underpowered. It never explains where blockchain_fk values come from, what the caller should do on an invalid address, or the shape of the returned balance object, which no other structured field supplies.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it partly does by glossing all three @param entries. However the glosses are thin and partly circular — 'blockchain_fk: The blockchain_fk of the supported blockchain' explains nothing about format or where to obtain valid IDs (e.g., via crypto_blockchains), leaving the most opaque required parameter effectively undocumented.

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

Purpose4/5

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

The description states a specific verb and resource: verifying that a blockchain address is valid for a given blockchain. That is clear enough for an agent to know the operation, but it never distinguishes itself from near siblings such as crypto_balance, crypto_info, or wallet_verify, so selection still requires inference.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all: nothing says whether to call this before a send, how it differs from crypto_balance or wallet_verify, or what a failure means. The closest thing to guidance is the incidental note that the address can be any address on that blockchain, which is a constraint, not a routing rule.

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

netfluid__currency_cryptoCInspect

Returns a live price in USD for a based commodity

Returns a live price in USD for a based commodity @param api_key: The api key allocated to your application @param code: The crypto code e.g BTC, ETH, ALGO, HBAR

@return: a json object
NameRequiredDescriptionDefault
codeYes
api_keyYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It discloses that an api_key is required and that the result is 'a json object', which is a small amount of context, but says nothing about error behavior, rate limits, data freshness, or what happens with invalid codes. For a zero-annotation tool this is a significant gap.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim, and the JSDoc-style @param/@return block is boilerplate. The content is short, but roughly half of it is redundancy rather than earned text.

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

Completeness3/5

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

For a simple 2-parameter read tool with no output schema and no annotations, the description covers the inputs adequately and mentions the return type, but it omits distinguishing detail against sibling price tools and any behavior on invalid currency codes. Adequate but with clear gaps.

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?

Schema description coverage is 0%, so the description has to compensate, and it largely does: it explains that api_key is 'allocated to your application' and that code takes crypto tickers with concrete examples (BTC, ETH, ALGO, HBAR). The examples function as a de facto enumeration, adding real meaning beyond the bare string type.

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

Purpose3/5

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

The description states a concrete action and output ('Returns a live price in USD') but the phrasing 'for a based commodity' is awkward and does not distinguish this tool from near-identical siblings such as currency_forex, currency_rates, or commodity_types. An agent can infer it deals with crypto prices, but only from the tool name, not the description.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus currency_forex/currency_rates, no mention of rate limits, freshness, or prerequisites beyond the implied api_key. The agent is left to infer usage entirely from the name.

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

netfluid__currency_forexCInspect

Returns a live forex price for a commodity in USD

Returns a live forex price for a commodity in USD @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.4/5.0
Behavior2/5

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

Annotations are empty, so the description carries the full burden and largely fails it. It implies a read-only quote, but never states auth requirements (beyond the api_key param), freshness/latency guarantees, rate limits, or what the returned JSON contains beyond the boilerplate "@return: a json object".

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

Conciseness2/5

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

The opening sentence is duplicated verbatim, and the trailing @param/@return boilerplate is padding rather than front-loaded information. Very little of the text earns its place.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and an unexplained commodity binding, the description is not complete enough to call correctly. It neither routes the agent among siblings nor explains what it will receive back.

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

Parameters3/5

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

Schema coverage is 0%, but the description does document the sole parameter ("the api key allocated to your application"), so it compensates for the one documented field. The larger gap is that the value the tool resolves against — the commodity — has no corresponding parameter or explanation, leaving the semantics of the call ambiguous.

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

Purpose3/5

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

It gives a specific verb and resource ("returns a live forex price ... in USD"), which is better than a tautology, but it never distinguishes itself from the sibling currency_crypto, currency_rates and currency_types tools. The phrasing is also internally confusing: it promises a price "for a commodity" yet exposes no way to say which commodity.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all. With three closely named currency_* siblings, an agent gets no help deciding whether this or currency_rates/currency_crypto is the right call.

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

netfluid__currency_ratesCInspect

Returns a live forex price for a commodity in USD against our rates, XAU and XAG is returned as price in USD per gram. Returns "our_rate", the Netfluid rate, use "our_rate" in all forex conversion

Returns a live forex price for a commodity in USD against our rates @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose some useful behavior beyond structure: the return is a JSON object containing 'our_rate', and XAU/XAG are quoted as USD per gram. It omits auth requirements, rate limits, whether the feed is cached, and any error behavior.

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

Conciseness5/5

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

This is not concise: the opening sentence 'Returns a live forex price for a commodity in USD against our rates' is repeated verbatim later, plus stray @param/@return legacy tags and trailing blank lines. Structure is not front-loaded and the duplication wastes the reader's attention.

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

Completeness2/5

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

With no output schema and no annotations, the description must explain the return shape, parameterization, and safety profile. It only states the result is 'a json object' and names one field ('our_rate'), leaving the commodity-selection mechanism, XAU/XAG interplay with the single api_key param, and error conditions unexplained.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It partially does by explaining api_key as 'The api key allocated to your application', but that is essentially the only parameter and the description adds no format, source, or acquisition guidance. Adequate but thin.

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

Purpose3/5

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

The description states a verb+resource ('Returns a live forex price') and gives special-case behavior for XAU/XAG, so the general intent is readable. However, it says 'for a commodity' while the schema exposes only an api_key, so an agent cannot tell how the commodity is selected, and the core sentence is stated twice verbatim, muddying precision. It also fails to distinguish itself from nearby siblings like currency_forex and currency_crypto.

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

Usage Guidelines2/5

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

The only guidance is 'use "our_rate" in all forex conversion', which is a data-field instruction rather than a when-to-use statement. Nothing tells the agent when to call this versus currency_forex, currency_crypto, or currency_types, and no prerequisites or exclusions are given.

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

netfluid__currency_typesCInspect

Returns all system currencies

Returns all system currencies @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it largely fails. It says only that a json object is returned, with no disclosure of auth/permission needs, rate limits, pagination, caching, or error behavior for a tool whose name implies an unauthenticated-looking reference lookup that actually requires an api_key.

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

Conciseness2/5

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

The description literally repeats 'Returns all system currencies' twice, then appends raw JSDoc-style @param and @return artifacts. This is bloated and poorly front-loaded, with duplicated content that does not earn its place.

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

Completeness2/5

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

This is a simple one-parameter read tool with no output schema, so the bar is low, but the description still omits anything about the shape or content of the returned currency list and duplicates its only real sentence. Given zero annotation coverage, more context was needed to make the tool safely invokable.

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

Parameters3/5

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

Schema description coverage is 0% and there is only one parameter, so the description must carry the meaning — and it does add value with '@param api_key: The api key allocated to your application', which is absent from the bare 'string' schema. But it provides no format, source, or error guidance beyond that single sentence.

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

Purpose3/5

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

The description states a clear verb+resource ('Returns all system currencies'), which is understandable on its own. However, it does nothing to distinguish this tool from close siblings like netfluid__currency_crypto, netfluid__currency_forex, and netfluid__currency_rates, so an agent cannot tell from the text alone why it would pick this one.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives, and no prerequisites or context. The agent is left to infer entirely from the name that this is the general/system currency list rather than a forex or crypto list.

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

netfluid__emailBInspect

Sends email to the wallet owner

Sends email to the wallet owner @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param message: The message body in html, encoded into base64 @param subject: The message subject in plain text (not url or base64 encoded)

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
messageYes
subjectYes
wallet_fkYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations at all, the description carries the full behavioral burden. It does disclose a genuinely useful trait beyond the schema: the recipient is fixed to the wallet owner (implied by wallet_fk), not supplied as a parameter, and the body must be base64-encoded HTML. It says nothing about delivery guarantees, rate limits, reversibility, or error behavior for what is an externally visible side effect.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim ('Sends email to the wallet owner' twice), and the body is a raw docstring @param/@return dump rather than front-loaded prose. The parameter block is dense but useful, so the waste is limited to the repetition and the uninformative '@return: a json object' line.

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

Completeness3/5

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

Five required parameters with no output schema and no annotations mean the description must do more. It covers inputs adequately but the return value is described only as 'a json object', and there is no mention of failure modes or what the caller should do with the response.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate and it does: all five required parameters are documented with provenance (api_key 'allocated to your application', token and wallet_fk 'provided by /access/login') and format constraints (message as base64 HTML, subject as plain text explicitly not URL or base64 encoded). This is information the schema cannot supply and directly prevents invocation errors.

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

Purpose4/5

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

States a specific verb and resource ('Sends email to the wallet owner'), so the action is unambiguous. However, it never distinguishes itself from the sibling tool netfluid__send_email, leaving the agent unable to tell which of the two email tools applies in a given situation.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no preconditions, and no mention of the closely related netfluid__send_email sibling. The agent is left to infer that this tool targets a wallet owner rather than an arbitrary recipient.

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

netfluid__feesBInspect

Provide the Netfluid fee structure @return: a json object

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full burden. Beyond the boilerplate '@return: a json object', it discloses nothing about read-only nature, caching, whether fees vary by context, or what the response actually contains.

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?

Extremely short and front-loaded with the purpose. The trailing '@return: a json object' line is near-boilerplate that adds little, but the overall size is appropriate for a parameterless query tool.

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

Completeness3/5

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

For a simple no-param tool the description is minimally adequate, but with no output schema it should at least say what the returned fee structure covers and how it differs from netfluid__wallet_fee. As written, the agent cannot tell what fees or scope to expect.

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?

The tool takes zero parameters, so there is no parameter surface for the description to explain. Baseline 4 applies.

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

Purpose4/5

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

States a clear verb+resource: it provides the Netfluid fee structure. However, it does not distinguish itself from the sibling netfluid__wallet_fee, which likely overlaps, and leaves it ambiguous whether 'the fee structure' is a global table or scoped to something.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no reference to the similarly-named wallet_fee sibling. The agent gets no signal about when this tool is the right choice versus alternatives.

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

netfluid__fund_banksCInspect

Returns a list of local and international bank accounts.

Returns a list of local and international bank accounts. Do not display blank fields. Customer MUST provide the reference as the beneficiary reference. Payments received, minus bank charges, are au @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk provided by /wallet/accounts_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it delivers little: it implies a read (returns a list) and notes account_fk 'may not be 0', but auth/permission requirements, pagination, and error behavior are absent. The critical clause 'Payments received, minus bank charges, are au' is truncated mid-word, losing whatever behavioral context it held.

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

Conciseness2/5

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

The same sentence appears twice, JSDoc tags are embedded inline, and the text is cut off mid-word ('are au'). The first sentence is front-loaded but the overall structure is noisy and clearly broken.

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

Completeness2/5

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

For a 3-required-param tool with no output schema and no annotations, the description should explain return shape and caller workflow, but it only says '@return: a json object' and truncates the key payment/charges clause. Enough is present to call the tool with correct values, but not enough to use it confidently.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it explains token comes from /access/login, and that account_fk is a database ID (int, not an address) sourced from /wallet/accounts_list and must not be 0. These cross-references add real meaning beyond the bare schema types.

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

Purpose3/5

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

The opening line 'Returns a list of local and international bank accounts' gives a clear verb+resource, but it is duplicated verbatim and never distinguishes this tool from close siblings like wallet_accounts_list, beneficiaries_list, or telco_accounts_list. The truncated tail leaves it unclear what the funding/bank-account relationship actually is.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus any of the many list/beneficiary/withdraw siblings. The 'Do not display blank fields' and beneficiary-reference notes are display/usage rules for the caller, not selection guidance.

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

netfluid__fund_card_quoteAInspect

Returns a quote for a VISA/Mastercard card charge.

STEP 1 in charging a tokenised Visa/Mastercard. Returns a quote for a VISA/Mastercard card charge. Cards are charged in ZAR. A fee is levied for each charge. This end point only performs a quote, no cards are charged. The quote is valid for 10 minu @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk provided by /wallet/accounts_list @param amount: The amount in currency of the account_fk. All cards are charged in ZAR but a conversion of this amount to ZAR will be automatically performed. On top of this amount a fee with be charged equal to 3.5% for fees and insurance plus South African VAT of 15% (only on the fee portion).

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
wallet_fkYes
account_fkYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses that no cards are charged (non-mutating), that cards settle in ZAR, that the quote expires in 10 minutes, and the exact fee model (3.5% plus 15% VAT on the fee portion). It omits auth/permission requirements, but the rich fee, expiry and mutability detail is well beyond structured data.

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

Conciseness3/5

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

The core statement 'Returns a quote for a VISA/Mastercard card charge' is repeated verbatim at the start and after the STEP 1 line, and the text is truncated mid-word ('10 minu'). The STEP 1 workflow cue is usefully front-loaded, but the duplication and truncation cost it.

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 five-required-param, no-output-schema tool, the description covers purpose, sequencing, fee behavior, quote validity and every parameter. The weak point is the return value, which is only '@return: a json object' — an agent gets no sense of the quote fields, though that is the sole gap.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it documents all five parameters. Notably it warns account_fk 'may not be 0', clarifies it is a database int not an address, points to /wallet/accounts_list as the source, and explains amount is converted to ZAR with a fee applied — meaning far beyond the bare schema types.

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?

States a specific verb and resource ('Returns a quote for a VISA/Mastercard card charge') and frames it as 'STEP 1 in charging a tokenised Visa/Mastercard', which distinguishes the quote from the actual charge. An agent can tell this apart from netfluid__fund_card_recharge without opening either schema.

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?

'STEP 1 in charging a tokenised Visa/Mastercard' gives clear sequencing context, and 'This end point only performs a quote, no cards are charged' clarifies when this is the right call versus the charging step. It does not explicitly name the follow-up sibling tool, so it stops short of a full when/when-not/alternatives statement.

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

netfluid__fund_card_rechargeAInspect

Charges a tokenised Visa/Mastercard. Confirm (yes/no) before executing

STEP 2 Charges a tokenised Visa/Mastercard, use /card/quote before this end point The card must have been previously charged using /fund/card_3D_secure_complete @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk provided by /wallet/accounts_list @param wallet_card_id: The wallet_card_id associated with this wallet, can be found with wallet/card_list @param amount: The amount in currency of the account_fk. All cards are charged in ZAR but a conversion of this amount to ZAR will be automatically performed. On top of this amount a fee with be charged equal to 3.5% for fees and insurance plus South African VAT of 15% (only on the fee portion). @param note: The note on the transaction

@return: a json object
NameRequiredDescriptionDefault
noteNo
tokenYes
amountYes
api_keyYes
wallet_fkYes
account_fkYes
wallet_card_idYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses a real monetary charge, automatic conversion to ZAR, a 3.5% fee plus 15% VAT on the fee portion, and required confirmation. Gaps remain on idempotency/retry behavior and error handling for a financial mutation.

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

Conciseness3/5

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

Front-loaded with the action and the confirmation requirement, which is good. However the opening sentence is duplicated ('Charges a tokenised Visa/Mastercard' appears twice), a 'STEP 2' artifact is left in, and '@return: a json object' is pure noise.

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 7-parameter payment mutation with no annotations and no output schema, the definition covers prerequisites, sequencing, fees, and every parameter. What is missing is the shape of the returned JSON (beyond 'a json object') and failure/idempotency semantics.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and it does, documenting all seven parameters. It adds non-obvious semantics: account_fk is a database int (not an address) and may not be 0, obtainable from /wallet/accounts_list; wallet_card_id from wallet/card_list; amount is converted to ZAR plus fees.

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

Purpose4/5

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

States a specific verb and resource ('Charges a tokenised Visa/Mastercard') and places itself in a sequence ('STEP 2', after /fund/card_quote). It does not name the closest sibling (paywall__wallet_visa_mastercard_recharge) as an alternative, so sibling disambiguation is only partial.

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?

Gives clear preconditions: run /card/quote first, and the card must already have been through /fund/card_3D_secure_complete. It also mandates a yes/no confirmation before executing. No explicit exclusion against the paywall recharge variant, but the context needed to invoke correctly is present.

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

netfluid__fund_ottAInspect

Funds an account with an OTT Voucher. Confirm (yes/no) before executing

Funds an account with an OTT Voucher. Only available in South Africa and can only be redeemed against any currency account, the system will perform the currency conversion @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk provided by /wallet/accounts_list @param pin: The OTT voucher PIN @param mobile: The South Africa mobile number associated with this customer

@return: a json object
NameRequiredDescriptionDefault
pinYes
tokenYes
mobileYes
api_keyYes
account_fkYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It helpfully discloses a confirmation step ('Confirm (yes/no) before executing') and the geographic/currency conversion behavior, but omits permission/auth expectations beyond the token params, rate limits, and any statement of irreversibility for this mutating funding operation.

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

Conciseness3/5

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

The opening sentence 'Funds an account with an OTT Voucher' is duplicated verbatim at the top and again inside the body, which is wasted space. The @param block is informative and each entry earns its place, but the redundant restatement and the stray confirmation sentence reduce structural tightness.

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

Completeness3/5

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

With no output schema and no annotations, the description must do more. It covers params and key restrictions well, but the return value is only 'a json object,' leaving the agent without knowledge of what a successful or failed redemption returns. Adequate but with a notable gap for a 5-required-param mutating tool.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates fully: it documents all five params, gives the source of each value (token from /access/login, account_fk from /wallet/accounts_list), and adds a critical format warning that account_fk is a database int ID, not an account address, and may not be 0. This is exactly the value beyond schema that the dimension rewards.

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

Purpose4/5

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

States a specific verb and resource with the instrument qualifier: 'Funds an account with an OTT Voucher.' This is clearly distinct from other fund_* siblings (banks, payat, payshap) by virtue of the OTT voucher instrument, though it never explicitly contrasts with a named sibling such as withdraw_to_ott or pay_subscription_with_ott_voucher.

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?

Provides real applicability conditions — 'Only available in South Africa' and 'can only be redeemed against any currency account' with automatic currency conversion. These are useful constraints, but the description never names an alternative tool for non-SA or non-currency-account cases, so routing remains partly implicit.

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

netfluid__fund_payatBInspect

Returns a payment reference for use with Pay@, Pay@ provides point of sale integration to all major retailers in South Africa and Botswana. The customer is issued with a unique Pay@ bill payment code, which he needs to present to the cashier at the retailer

Returns a payment reference for use with Pay@ . Customer uses this payment reference to fund via Pay@ online (South Africa) or at Pay@ supporting retailers in South Africa and Botswana. All payments @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk provided by /wallet/accounts_list @param amount: The amount requested, excluding pay@ merchant fees @param reference: The payment reference, can be any text

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountNo
api_keyYes
referenceNo
account_fkYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It does disclose useful behavior: authentication comes from api_key and a wallet_api_token from /access/login, and the requested amount excludes Pay@ merchant fees. However it says nothing about reference expiry, idempotency on repeat calls, error modes, or the shape of the returned JSON beyond 'a json object'.

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

Conciseness2/5

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

The opening sentence repeats the same 'returns a payment reference for use with Pay@' claim twice within the first few lines, and a dangling fragment ('All payments') is left in the body. The @param block is compact and useful, but the prose section is redundant and not front-loaded.

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

Completeness3/5

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

With five parameters, no annotations, and no output schema, the description should carry more weight. It documents the inputs well, but the return value is only 'a json object' — an agent cannot know the field name of the reference or any accompanying data, and there is no mention of expiry, failure conditions, or Pay@ limits. Adequate for inputs, thin for outputs.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: account_fk is clarified as a database ID (int, not an address, may not be 0, sourced from /wallet/accounts_list), amount excludes Pay@ merchant fees, reference can be any text, and token comes from /access/login. This adds real meaning over the bare schema. It stops short of 5 only because api_key/token definitions are somewhat generic.

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

Purpose4/5

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

The description gives a specific verb+resource: it returns a payment reference for funding a wallet via Pay@, and explains the downstream mechanism (bill payment code presented to a retailer cashier). It is clear what the tool produces, though it never distinguishes itself from the similar funding siblings (fund_payshap, fund_banks, fund_card_recharge). The core idea is restated almost verbatim twice, which dilutes rather than clarifies.

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

Usage Guidelines3/5

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

Usage is only implied: the description explains that a customer uses the returned reference to fund via Pay@ online or at a retailer, which suggests when the tool's output is consumed. It never states explicitly when an agent should call this versus the sibling funding tools like fund_payshap or fund_ott, nor any preconditions beyond the login-derived token.

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

netfluid__fund_payshapBInspect

Funds an account with a PayShap payment, PayShap is low-cost, instant bank-to-bank payments method only available from South African banks

Funds an account with a PayShap payment. Returns bank details for a PayShap payment. Only available in South Africa and can only be redeemed against a ZAR currency account. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk provided by /wallet/accounts_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations are empty, so the description carries the full burden. It does disclose useful behavior beyond a bare verb: the geo/currency restriction and the notable fact that it returns bank details rather than pushing money, implying a deposit-instruction flow. It stops short of saying whether the account is credited immediately, what auth/KYC state is required, or what happens on expiry of the returned details.

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

Conciseness3/5

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

The core facts are front-loaded and the @param tags are easy to scan, but the opening sentence and the second sentence say the same thing twice, and '@return: a json object' is pure filler. Roughly a third of the text is redundant.

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

Completeness3/5

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

For a three-parameter funding tool with no annotations and no output schema, the parameter documentation is adequate, but the return is described only as 'a json object' even though the description elsewhere claims it returns bank details. An agent still lacks the shape of the returned details and any follow-up step needed to complete the payment.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all three parameters, gives token provenance (/access/login), and crucially clarifies that account_fk is a database integer ID rather than an account address and may not be 0, sourced from /wallet/accounts_list. That is meaningful semantics an agent could not infer from the bare types.

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

Purpose4/5

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

The opening states a specific verb and resource ('Funds an account with a PayShap payment') and identifies the payment rail, which distinguishes it from siblings such as fund_payat, fund_card_recharge and fund_ott. It loses a point for restating the same action a second time without adding scope or differentiation.

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

Usage Guidelines3/5

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

It gives real eligibility constraints ('only available in South Africa', 'can only be redeemed against a ZAR currency account'), which implies when the tool is valid. However it never compares itself to the other funding siblings (fund_payat, fund_banks, account_buy) or states when a different rail should be chosen instead.

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

netfluid__help_pingCInspect

Pings the API

Pings the API and returns a response object @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.3/5.0
Behavior2/5

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

Annotations are empty, so the description carries the full behavioral burden, and it falls short: it says only that a 'json object' is returned. It does not explain what the ping verifies, whether the api_key must be valid, what a success/failure looks like, or any rate limits. The bare 'returns a response object' is close to no disclosure at all.

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

Conciseness3/5

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

The text is short, but it is padded with redundancy: 'Pings the API' is immediately followed by 'Pings the API and returns a response object'. The JSDoc-style @param/@return block is boilerplate rather than front-loaded guidance, so it is compact but not efficient.

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

Completeness2/5

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

For a trivial 1-param tool a brief definition can suffice, but with no annotations and no output schema the description should still clarify the return shape and auth expectation. It only offers 'a json object', leaving the agent guessing what the call confirms.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does document the single parameter: 'api key allocated to your application'. That is meaningful, but the one sentence is only marginally more than the parameter name implies, so it lands at the baseline rather than above it.

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

Purpose2/5

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

The description 'Pings the API' essentially restates the tool name 'help_ping', which is the definition of a tautology. It adds only that a 'response object' is returned, but gives no distinction from or relationship to the ~120 sibling tools. Nothing here tells an agent why this tool exists versus others.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no note about prerequisites, and no mention of alternatives. An agent is left to infer that this is a connectivity/health-check call purely from the word 'ping'.

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

netfluid__netfluid_voucher_checkAInspect

Performs a validation on a Netfluid voucher code. The voucher is not redeemed, only validated @param voucher_code: The Netfluid voucher code, format is 4 sets of integers, e.g. 1234-4321-1234-4321

@return: a json object

NameRequiredDescriptionDefault
voucher_codeYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations are empty, so the description carries the full burden; it does disclose a valuable behavioral trait (non-destructive, no redemption occurs). However it says nothing about authentication requirements, rate limits, idempotency, or error behavior on an invalid code, leaving meaningful gaps for a tool with zero annotation coverage.

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?

Short and front-loaded, with the purpose in the first sentence and the non-redemption constraint immediately after. The javadoc-style '@param'/'@return' tags are slightly clunky but cost little space.

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

Completeness3/5

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

For a single-parameter validation tool this is mostly sufficient, and the '@return: a json object' note acknowledges the absent output schema. Still, what the JSON contains (valid/invalid flag, balance, expiry) and required auth are unspecified, leaving the caller unable to anticipate the response.

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?

Schema description coverage is 0% (the property is a bare string), so the description must compensate, and it does: it specifies the format as four sets of integers and gives the concrete example '1234-4321-1234-4321'. That is real information an agent could not get from the schema, though it omits whether dashes are mandatory.

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

Purpose4/5

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

States a specific verb and resource ('Performs a validation on a Netfluid voucher code') and immediately scopes it by ruling out redemption, which separates it from siblings like account_merchant_voucher_redeem. It stops short of naming an alternative sibling outright, so it is clear but not fully differentiated.

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

Usage Guidelines3/5

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

'The voucher is not redeemed, only validated' gives an implicit when-to-use boundary against redemption flows, but there is no explicit statement of when an agent should call this versus account_merchant_voucher_redeem or wallet_voucher_list. Usage is implied rather than prescribed.

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

netfluid__payment_wallet_setAInspect

Set this wallet as a payment wallet. Payments wallets are normal wallets that cannot login to the portal. They are typically used as sub-wallet by a sponsor wallet. A payment wallet's access control such as Secret, PIN and recovery words are held by the sponsor. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @return: a json object

NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that payment wallets cannot login to the portal and that access control (Secret, PIN, recovery words) is held by the sponsor, but it omits mutation side effects, reversibility, and authentication requirements beyond the parameter list.

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 front-loaded with the main action, then provides relevant domain context and parameter documentation. It is mostly efficient, though the '@return: a json object' line is generic filler.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description provides useful domain and parameter context but leaves important gaps: it does not describe the response structure beyond 'a json object' and does not explain operational effects or permissions.

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?

Schema description coverage is 0%, so the description must compensate. It documents all three parameters, including that api_key is allocated to the application and that token and wallet_fk come from /access/login, adding real meaning beyond the schema's bare types.

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

Purpose4/5

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

The description states a specific action ('Set this wallet as a payment wallet') and explains what a payment wallet is, including that it cannot login to the portal and is typically a sponsor sub-wallet. It does not explicitly name or distinguish itself from the sibling netfluid__payment_wallet_signup, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies usage by explaining that payment wallets are typically used as sub-wallets by a sponsor wallet, but it gives no explicit when-to-use or when-not-to-use guidance relative to alternatives like payment_wallet_signup. Usage is inferable from context, not stated.

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

netfluid__payment_wallet_signupAInspect

Creates a payment wallet. Payment wallets are a form of sub-wallet of which the sponsor controls access to the Secret,PIN and recovery keywords. A payment wallet cannot login to the portal and is therefore only accessible to the sponsor via the api or this mcp. In order for this wallet to exists, it needs to be created by a human KYCed wallet. Once created this wallet will be fully enabled to perform any transaction any other wallet is capable of. Including access to virtual bank accounts in Europe and the USA as a funding source. The wallet is automatically minted with a Solana Blockchain wallet. The sponsor would typically only need to save the wallet_fk and PIN of the new wallet in their storage in order to make use of it later. The secret is optional purely to maintain backward compatibility, if not provided the system will generate default values. We suggest you use the mobile and email of the sponsor where available, in order to get access to recovery methods. The human accepts all legal responsibility for this payment wallet. Process can take up to 30 seconds. @param secret: A secret, minimum 8 characters, must be unique system-wide. This is typically the username, but private. Suggestion: Generate 3 natural language words, concatenated, or prompt the human for 3 words. @param pin: The 5 digit PIN associated with the new wallet. Can be any random 5 numbers. @param email: The agents email address, if not available use a blank string. @param mobile: The human's mobile phone number, in e164 format, e.g. 27821234567 (no +). if not available use a blank string. @param currency_fk: The currency of the first account, use 7 (ZAR) for everyone else use 3 (USD) @param sponsor_wallet_fk: The sponsor's wallet_fk, this wallet_fk must be KYCed if not the new wallet will also not be KYCed @param sponsor_wallet_pin: The sponsor's 5-digit PIN

@return: a json object

NameRequiredDescriptionDefault
pinYes
emailNo27012345678@netfluid.ltd
mobileNo27012345678
secretNo9e85cf58-8c45-4cc4-b1e8-aea6054d6ee4
currency_fkNo
sponsor_wallet_fkYes
sponsor_wallet_pinYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does it well: it discloses a ~30 second processing time, automatic Solana wallet minting, the KYC propagation behavior of the sponsor wallet, and that the human sponsor accepts legal responsibility. The main gap is the vague '@return: a json object' with no indication of what the response contains.

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

Conciseness3/5

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

The first line is front-loaded, but the body sprawls across many sentences, several of which are conceptual filler (portal-login behavior, backward-compatibility rationale, legal-responsibility statement). The @param/@return structure helps, yet the same ideas could be conveyed in noticeably less text.

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 7-parameter, no-output-schema, no-annotation mutation tool, the definition covers prerequisites, side effects, timing, and per-parameter guidance well. It falls short on the return value (only 'a json object') and on error/failure behavior, which an agent invoking a signup with KYC dependencies would benefit from knowing.

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?

Schema description coverage is 0% across 7 parameters, and the @param block compensates thoroughly: e164 format for mobile (no '+'), 5-digit PIN constraint, secret uniqueness/min-length with a concrete generation suggestion, and specific currency_fk values (7 for ZAR, 3 for USD). Minor inconsistency: it says to use a blank string for email/mobile, while the schema defaults are populated non-blank values.

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?

'Creates a payment wallet' states a specific verb and resource, then explains exactly what that artifact is (a sponsor-controlled sub-wallet, auto-minted with a Solana wallet, no portal login). The purpose is unmistakable and clearly distinct from operational siblings like payment_wallet_set, even though no sibling is named explicitly.

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

Usage Guidelines3/5

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

It gives a real prerequisite ('needs to be created by a human KYCed wallet', and the sponsor_wallet_fk must be KYCed or the result won't be), which is useful context. But it never states when to choose this tool versus alternatives such as payment_wallet_set, nor any when-not-to-use condition, so usage is only implied.

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

netfluid__privacyBInspect

Provides Netfluid's privacy policy This tools provides reference information in the "referenced_tools" schema @return: a json object

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations are empty, so the description carries the full burden. It does disclose that the response is JSON delivered via a 'referenced_tools' schema, which is some return-shape information, but it says nothing about auth requirements, whether the policy text is inlined or referenced, or the schema's field structure.

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

Conciseness3/5

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

Short and purpose-first, which is good, but the middle sentence ('This tools provides reference information...') is grammatically broken and largely redundant with the first, and '@return: a json object' adds almost no information.

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

Completeness3/5

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

For a no-param, no-output-schema, no-annotation tool, the definition is minimally complete: an agent can call it. But the reference to a 'referenced_tools' schema is never explained, and no hint is given about what a privacy policy response actually contains.

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?

The tool takes zero parameters, so there is nothing for the description to clarify. Baseline 4 applies, as no parameter semantics are needed.

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

Purpose4/5

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

States a specific verb and resource: 'Provides Netfluid's privacy policy'. An agent knows it retrieves the privacy policy document. However, it does not distinguish itself from the closely related sibling netfluid__terms, which is presumably the same kind of reference lookup.

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

Usage Guidelines2/5

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

No guidance on when to invoke this versus alternatives such as netfluid__terms or netfluid__compliance. There are no prerequisites, no exclusions, and no stated trigger condition; the agent must infer entirely from the tool name.

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

netfluid__push_message_devicesBInspect

Returns a list of devices registered to receive push messages on this wallet

Returns a list of devices registered to receive push messages on this wallet. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose that a wallet_api_token from /access/login and an application api_key are required, which signals an authenticated read. However, it discloses nothing about rate limits, empty-result behavior, or the shape of what is returned beyond 'a json object'.

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

Conciseness3/5

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

The opening sentence is duplicated verbatim, wasting the most prominent line, and the trailing '@return: a json object' is filler. The parameter lines are useful, so the text earns its place except for that redundancy.

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

Completeness3/5

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

For a simple read-only list tool with three documented credentials, the definition covers invocation adequately. It falls short on the return contract — '@return: a json object' tells the agent nothing about device fields or pagination, and there is no output schema to fill that gap.

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?

Schema description coverage is 0%, so the description is the only source of parameter meaning — and it supplies it for all three: api_key (application key), token (wallet token from /access/login), and wallet_fk (also from /access/login). That is meaningful compensation for a completely undocumented schema.

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

Purpose4/5

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

States a specific verb and resource — returns devices registered to receive push messages on a wallet. This distinguishes it from the sibling push_message_send (which sends rather than lists), though the description never names that sibling explicitly.

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

Usage Guidelines2/5

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

No guidance on when to call this versus alternatives such as push_message_send, nor any prerequisites beyond the parameter list. The agent must infer that this is the read-side companion to push_message_send.

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

netfluid__push_message_sendBInspect

Sends a push message to customer. Push messages are limited to 160 characters per message

Sends a push message to customer. Push messages are limited to 160 characters per message @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param message: The message content in plain text @param title: The message title in plain text

@return: a json object
NameRequiredDescriptionDefault
titleYes
tokenYes
api_keyYes
messageYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose a genuine trait not derivable from schema — the 160-character message limit — and indicates which credentials are required (api_key, token, wallet_fk). However, it says nothing about recipient resolution, delivery success/failure behavior, rate limits, or permissions, so disclosure is partial.

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

Conciseness3/5

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

The purpose sentence is front-loaded and useful, but the opening sentence is duplicated verbatim, wasting the most prominent position. The param/return block is terse and serviceable, though '@return: a json object' adds little.

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

Completeness3/5

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

For a five-required-param write tool with no annotations and no output schema, the description covers the basics (purpose, size limit, credentials, param meanings). It omits failure modes, whether the send is idempotent, and any detail beyond 'a json object' for the return, leaving a moderate gap.

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?

Schema description coverage is 0%, so the description must compensate, and it does document all five parameters, including provenance for token and wallet_fk ('provided by /access/login') and content types for message and title ('plain text'). wallet_fk's explanation is largely circular (restating the name), which keeps it out of the top score.

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

Purpose4/5

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

States a specific verb and resource ('Sends a push message to customer') and adds a scoping constraint (160 characters per message). It does not name any sibling, so an agent must still infer how this differs from netfluid__email, netfluid__account_send_sms, or netfluid__push_message_devices. Clear purpose, but no sibling differentiation.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the other messaging tools (email, send_email, account_send_sms, push_message_devices), and no prerequisites or exclusions. The 160-character note is a constraint, not usage guidance.

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

netfluid__send_emailBInspect

Sends email to the wallet owner

Sends email to the wallet owner @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param message: The message body in html, encoded into base64 @param subject: The message subject in plain text, url encoded

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
messageYes
subjectYes
wallet_fkYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose genuinely useful operational context: the recipient is the wallet owner rather than a caller-supplied address, and message/subject require specific encodings (base64 HTML, url-encoded plain text). However it says nothing about permission/auth requirements, rate limits, failure behavior, or whether a sent email can be recalled, which is a gap for a mutation tool.

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

Conciseness2/5

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

The first sentence is duplicated verbatim, and the entry is written in raw JSDoc with an '@return: a json object' line that conveys nothing. The parameter notes carry the only real value, but they are wrapped in repetitive boilerplate that an agent has to sift through.

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

Completeness3/5

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

For a 5-required-parameter mutation tool with no annotations and no output schema, the description covers the inputs and their encodings adequately but omits the surrounding context: auth/permission requirements, prerequisite login step as an explicit instruction, and any statement about success or failure outcomes.

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?

Schema description coverage is 0%, so the description has to compensate, and it largely does: all five required parameters are documented, including where token and wallet_fk originate (/access/login) and the required encodings for message and subject. It does not add type or format constraints beyond the schema (e.g. wallet_fk being an integer), so it falls short of fully covering the gap.

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

Purpose4/5

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

The description states a specific verb plus resource: it sends an email to the wallet owner. It is clear what the tool does at a glance, but it never distinguishes itself from the nearby netfluid__email or netfluid__push_message_send siblings, and 'wallet owner' is left undefined (presumably the owner of the wallet identified by wallet_fk).

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as netfluid__email or push notifications. The only implicit context comes from the parameter sources ('provided by /access/login'), which hints at a login-first sequence but does not state it as a rule.

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

netfluid__sessionBInspect

Returns a token given a customer provided session_key Can only be called once per session_key, thereafter the session_key is invalid @param session_key: The customer provided session_key @return: a json object

NameRequiredDescriptionDefault
session_keyYes

TDQS

B3.1/5.0
Behavior3/5

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

With annotations empty ({}), the description carries the full behavioral burden, and it does disclose one genuinely important trait: the session_key is invalidated after a single call, which warns the agent this is not idempotent/repeatable. It omits auth requirements, token lifetime/expiry, and error behavior for an invalid or already-consumed key.

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

Conciseness3/5

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

It is short and front-loads the core purpose, but the JSDoc-style '@param' restatement and the uninformative '@return: a json object' are filler that repeat rather than inform. Removing them would lose nothing.

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

Completeness3/5

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

No output schema or annotations exist, so the description should explain the return value and failure modes; '@return: a json object' is too vague to tell an agent what field to read. The one-shot invalidation is covered, but invalid-key handling and token semantics are not.

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

Parameters2/5

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

The single parameter has 0% schema description coverage, so the description must compensate, yet '@param session_key: The customer provided session_key' merely restates the property name and adds no format, provenance, or acquisition guidance. The '@return' note is equally generic.

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

Purpose4/5

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

The description states a specific verb (returns) and resource (a token from a session_key), which is enough for an agent to grasp the operation. However, it does not differentiate itself from the near-identically named sibling netfluid__session_2_token, leaving ambiguity about which one to call.

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

Usage Guidelines3/5

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

There is no explicit when-to-use guidance or named alternative, but the one-time-use constraint ('can only be called once per session_key') implicitly signals that this must be invoked early, before the key is consumed. That is implied usage rather than stated routing guidance.

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

netfluid__session_2_tokenBInspect

Returns a token given a customer provided session_key Can only be called once per session_key, thereafter the session_key is invalid @param session_key: The customer provided session_key @return: a json object

NameRequiredDescriptionDefault
session_keyYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It usefully discloses the single-use/consumption semantics of session_key, which is non-obvious behavior. It omits auth requirements, token lifetime/expiry, and failure modes (e.g., what happens on a reused key), and '@return: a json object' says nothing about the token's shape.

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?

Front-loaded with the core action, followed by the critical one-time constraint. The '@param' and '@return' tags add little, especially the vacuous 'a json object', but the whole thing is short and wastes little space.

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

Completeness3/5

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

With no annotations and no output schema, the description should do more heavy lifting. It covers the essential one-time semantics but leaves the agent without knowledge of auth requirements, token contents, or error behavior for an operation that is irreversible once the key is consumed.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the single parameter. Instead, '@param session_key: The customer provided session_key' merely restates the parameter name with no format, length, origin, or validation detail. The one behavioral fact that matters (one-time use) is stated elsewhere, not attached to the parameter.

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

Purpose4/5

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

States a specific verb and resource: 'Returns a token given a customer provided session_key'. An agent can tell what the tool produces. However, it does not distinguish itself from the sibling netfluid__session (or netfluid__wallet_kyc_session_create), so the agent gets no help choosing between session-related tools.

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

Usage Guidelines3/5

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

The description supplies a real usage constraint: 'Can only be called once per session_key, thereafter the session_key is invalid.' That tells the agent this is a one-shot exchange, which is genuinely useful. It gives no guidance on when to call it versus netfluid__session, nor any prerequisites for obtaining a session_key.

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

netfluid__skillAInspect

Returns the latest version of the Netfluid SKILL.md file

Returns the latest version of the Netfluid SKILL.md file Update your files if the version number is greater and refresh all mcp tools

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden alone. It implies a read-only fetch whose payload includes a version number, but says nothing about return shape, caching, or fetch cost. Minimal but non-misleading context.

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

Conciseness3/5

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

The core sentence is front-loaded and clear, but the first line is repeated verbatim, which is pure redundancy. The final sentence is the only added value beyond the duplicate.

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

Completeness3/5

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

No output schema and no annotations, so the description is the only source. It conveys the target artifact and the presence of a version, but the return format and any versioning semantics remain underspecified.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline for a parameterless tool applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns the latest version of the Netfluid SKILL.md file. That is unambiguous and no sibling tool overlaps with it, so the purpose is instantly clear even without explicit differentiation.

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?

Adds an actionable directive: update your files if the version number is greater and refresh all mcp tools. This tells the agent what to do with the result, though it frames follow-up behavior rather than when-to-use-vs-alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__telco_accountsBInspect

Lists all the available telecommunications accounts

Lists all the available telecommunications accounts @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full burden, and it does little: no pagination behavior, no result scope (all accounts vs. filtered), no rate or permission notes. The only behavioral signal is that token and wallet_fk come from /access/login, which hints at auth requirements but is really parameter documentation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is duplicated verbatim before the param block, which is pure waste. The rest is compact and front-loaded, but the repetition is a clear structural defect.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with three required auth params, no annotations, and no output schema, the description covers auth sources but gives only 'a json object' as the return shape and nothing about scope or pagination. Adequate but with clear gaps.

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?

Schema description coverage is 0%, so the description must compensate, and it does document all three params. api_key is described as 'the api key allocated to your application' and token/wallet_fk as being obtained from /access/login, which adds real provenance value. The wallet_fk entry is near-tautological, keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Lists all the available telecommunications accounts'. This is clear about what it does, but it does not differentiate itself from siblings like netfluid__telco_bundles or netfluid__wallet_accounts_list, leaving the agent to infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative guidance is provided. With over a hundred sibling tools, the description gives the agent nothing to route between telco_accounts and telco_bundles or the various wallet/account list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__telco_bundlesCInspect

Lists all the available telecommunications bundles

Lists all the available telecommunications bundles @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it discloses very little: no pagination behavior, no rate limits, no authentication requirement beyond the bare api_key parameter, and no indication of response shape beyond 'a json object'. It is not misleading, but it is thin for a tool with zero structured safety metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, wasting the most prominent position in the definition. The remaining content is bare Javadoc-style tags rather than front-loaded, purposeful prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a listing tool with no output schema and no annotations, the description should at least characterize the returned data (fields, count, pagination). Instead it says only 'a json object', which tells the agent nothing about what it will receive or how to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does slightly by explaining that api_key is 'the api key allocated to your application' — clarifying it is an application-level credential rather than a user token. That is a real but minimal addition for a single-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Lists all the available telecommunications bundles'), which is clear enough for an agent to know it is a read-only enumeration endpoint. However, it offers no differentiation from nearby siblings such as netfluid__telco_accounts or paywall__subscription_types, which an agent could plausibly confuse with it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. Usage is only faintly implied by the word 'available', leaving the agent to infer the context on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__termsBInspect

Provides a url from which to fetch Netfluid's terms and conditions of service This tools provides reference information in the "referenced_tools" schema @return: a json object

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden, and it partially does so by noting the tool returns a JSON object in the 'referenced_tools' schema and supplies a URL rather than the document itself. It does not state whether the URL is static, whether auth is required, or what fields the referenced_tools payload contains. Adequate but with clear gaps for a zero-risk lookup tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-loaded with the purpose, but the second sentence partially repeats the first ('provides reference information' after already saying it provides a URL), and there is a grammatical slip ('This tools provides'). Mostly tidy but with avoidable redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must characterize the return, and it only says 'a json object' in a 'referenced_tools' schema without explaining the shape. For a trivial lookup tool this is minimally sufficient, but an agent still does not know what it will receive.

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?

The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to disambiguate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it provides a URL for Netfluid's terms and conditions of service. Clear enough for an agent to know what it returns, but it does not distinguish itself from the related reference sibling netfluid__privacy, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of when it should be preferred over netfluid__privacy or netfluid__compliance, and no statement of prerequisites. The agent is left to infer the context entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_accounts_listBInspect

Provides a detailed list of accounts in a wallet.

Provides a detailed list of accounts in a wallet. Each entry returns an account_fk for later use. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully adds that each entry returns an account_fk for later use and where token/wallet_fk originate (/access/login), but omits return format, pagination, and rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, and the @param/@return JSDoc boilerplate is clunky, though each parameter line does carry information. The duplication wastes space in an otherwise short description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should describe returns; 'a json object' plus the account_fk note is thin. It covers auth and one return field but leaves the response shape and pagination unspecified for a list endpoint.

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?

Schema coverage is 0%, so the description must compensate and it largely does: all three params (api_key, token, wallet_fk) are explained, including provenance for the auth values. It adds meaning beyond the bare type declarations in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: listing accounts within a wallet. However, it does not distinguish itself from the sibling netfluid__wallet_accounts_list_verbose, so an agent cannot tell which variant to pick from the description alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no mention of alternatives. The presence of a _verbose sibling makes this omission costlier, since the description gives no criteria for choosing between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_accounts_list_verboseBInspect

Provides a detailed list of accounts in a wallet with crypto balances included.

Provides a detailed list of accounts in a wallet with crypto balances included. This may take some time to complete. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full burden. It does disclose a genuinely useful behavioral trait ('This may take some time to complete') and identifies the credentials required, but it says nothing about read-only status, pagination, result size, or rate limits for a call it warns is slow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, and the body is JSDoc leaked from source code (@param/@return) rather than prose. The '@return: a json object' line consumes space while conveying nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-required-param, no-annotation, no-output-schema tool with a nearly identical sibling, the definition omits the essentials: how it differs from wallet_accounts_list, what the response contains beyond 'a json object', and whether results are paginated. Only the credential provenance and latency warning are complete.

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?

Schema description coverage is 0%, so the schema documents nothing beyond types. The description's @param tags compensate meaningfully, especially by stating token and wallet_fk come from /access/login and api_key is the application key — provenance the agent could not get from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('detailed list of accounts in a wallet') plus the notable scope of crypto balances being included. However, it never distinguishes this tool from the near-identically named sibling netfluid__wallet_accounts_list, leaving the 'verbose' variant unexplained.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites beyond the param tags, and no mention of the alternative netfluid__wallet_accounts_list — which is the single most important routing decision for an agent here. The agent must infer the choice from the name suffix alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_assets_listCInspect

Provides a detailed list of assets available to this wallet. For display only. May be filtered by blockchain

Provides a detailed list of assets available to this wallet as async defined per user grouping and optionally per blockchain. This is for display purposes only as every wallet may still make use of any asse @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param blockchain_fk: The blockchain_fk to use as filter

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes
blockchain_fkNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full behavioral burden. It does imply a non-mutating/display-only operation and links token and wallet_fk back to /access/login, which is genuine context. But it says nothing about pagination, result size, caching, or what 'assets' encompasses, and its return note is only 'a json object'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structurally broken: the same opening sentence appears twice, the second copy is truncated mid-sentence ('any asse'), and free-form @param/@return tags are pasted in without clean formatting. It is repetitive rather than dense, so it fails the 'every sentence earns its place' test.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must carry the return-shape burden, yet it only offers 'a json object'. For a four-parameter listing tool whose schema is entirely undocumented, the definition should at least sketch the asset fields and pagination behavior, and it does not.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: all four parameters are addressed via @param, with token and wallet_fk traced to their origin at /access/login and blockchain_fk identified as the optional filter. The one gap is that api_key's scope/format is only restated ('allocated to your application') rather than clarified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a specific verb+resource: listing assets available to this wallet, filterable by blockchain. That is enough to distinguish it from write-oriented siblings like wallet_card_remove or withdraw_to_bank. However, it never differentiates itself from the close siblings wallet_accounts_list and wallet_accounts_list_verbose, which also list wallet-scoped resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description asserts 'for display only' and 'every wallet may still make use of any asset', which hints at read semantics, but there is no statement of when to use this tool versus wallet_accounts_list, wallet_accounts_list_verbose, wallet_card_list or wallet_voucher_list. No prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_card_listBInspect

Returns a list of tokenised Visa/Mastercard(s) associated with this wallet

Returns a list of tokenised Visa/Mastercard(s) associated with this wallet. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read ('Returns a list') and states the return is 'a json object', but discloses nothing about auth requirements beyond parameter provenance, pagination, result limits, empty-wallet behavior, or whether card data is masked or sensitive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, which is pure waste, and the remaining content is a Java-doc-style parameter block. It is short and parseable but not front-loaded or edited.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-list tool with three required params and no output schema, the description covers inputs and general intent, but leaves return shape, pagination and error/auth conditions unstated. Adequate but with clear gaps.

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?

Schema description coverage is 0%, so the description must compensate and largely does: it explains all three parameters, including where token and wallet_fk originate (/access/login) and that api_key is the application key. It stops short of format/type detail (e.g. wallet_fk is an integer) but adds real provenance value beyond an empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Returns a list of tokenised Visa/Mastercard(s) associated with this wallet.' The resource ('tokenised cards') distinguishes it from neighboring list tools like wallet_assets_list, wallet_accounts_list and wallet_voucher_list, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance, no prerequisites, no mention of alternatives such as wallet_card_remove or paywall__wallet_visa_mastercard_card_list. The only contextual hook is that token/wallet_fk come from /access/login, which is provenance rather than usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_card_removeCInspect

Removes a tokenised Visa/Mastercard(s) associated with this wallet, confirm (yes/no) before executing

Removes a tokenised Visa/Mastercard(s) associated with this wallet. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param wallet_card_id: The wallet_card_id provided by /wallet/card_list

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes
wallet_card_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a destructive, likely irreversible removal of a payment card, but never states irreversibility, permission requirements, side effects, or what happens on re-adding; the dangling 'confirm (yes/no)' hint references a confirmation flow the schema does not implement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim ('Removes a tokenised Visa/Mastercard(s) associated with this wallet'), which is pure waste. The docstring-style @param/@return block is functional but verbose relative to the content it delivers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive four-parameter mutation with no annotations and no output schema, the description is thin: it never explains consequences of removal, error conditions, or the return shape ('a json object' is vacuous), and the confirm instruction has no backing parameter. Parameter provenance is the one genuinely complete part.

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?

Schema description coverage is 0%, so the description must compensate, and it does well: it documents all four parameters and, importantly, tells the agent where each value originates (api_key/token/wallet_fk from /access/login, wallet_card_id from /wallet/card_list). It stops short of format/constraint details, so not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Removes) and resource (tokenised Visa/Mastercard(s) associated with this wallet), which is clear and lets an agent distinguish it from the read-oriented sibling netfluid__wallet_card_list. It does not explicitly name a sibling or scope the operation further, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance is 'confirm (yes/no) before executing', which is ambiguous and unsupported by any parameter in the schema. There is no explicit statement of when to use this versus alternatives or any prerequisites/exclusions, leaving the agent to infer everything.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_domainBInspect

Returns the wallet white label domain.

Returns the wallet white label domain. Performs a search on any one of the parameters. @param api_key: The api key allocated to your application @param wallet_fk: The wallet_fk @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk @param account_address: The account address @param payat_reference: The payat_reference excluding the merchant code example:111249 would submit 9

@return: a json object
NameRequiredDescriptionDefault
api_keyYes
wallet_fkNo
account_fkNo
account_addressNo
payat_referenceNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose that this is a search/read operation and that the lookup works on any one parameter, plus the return type (a json object). It omits auth scope beyond the api_key param, error behavior when no match is found, and what happens if multiple parameters are supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The leading sentence is repeated verbatim, which is pure waste, and the @param block is verbose. The structure is front-loaded and the parameter annotations do earn their place, but the duplication costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter, zero-coverage tool with no annotations and no output schema, the description covers the inputs reasonably but leaves gaps: the shape of the returned json object, behavior when the lookup fails, and whether the search parameters are mutually exclusive are all unstated.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: each of the five parameters is documented via @param tags, with a valuable warning that account_fk is a database ID (int), not an address, and must not be 0, plus a concrete payat_reference example. The gaps are tautological entries like "The wallet_fk" and "The account address" that add nothing beyond the parameter name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: returns the wallet white label domain. It does not differentiate from any sibling tool, though no obvious sibling overlaps this resource. The statement is duplicated verbatim, which weakens an otherwise clear purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Performs a search on any one of the parameters" implies the usage pattern (lookup by a single identifier) but does not state when to use this versus alternatives, nor whether multiple parameters may be combined. Usage is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_feeCInspect

Calculates the transaction fee given an amount.

Calculates the transaction fee given an amount. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param amount: The transaction amount

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
wallet_fkYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It implies a read-only computation but never confirms that nothing is mutated or persisted, and it says nothing about rate limits, currency assumptions, or whether the fee is indicative vs. binding. Only the auth prerequisites are conveyed, via the param docs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is needlessly duplicated word-for-word, which is pure waste at the very front of the definition. The remaining JSDoc-style parameter block is terse and reasonably structured, but the duplication and the boilerplate '@return: a json object' drag it down.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description is the only source for return information, and '@return: a json object' tells the agent nothing about what fields the calculated fee contains. For a 4-required-parameter tool with no annotations, that leaves the agent unable to interpret the result.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: it names all four parameters and gives provenance for two of them ('token ... provided by /access/login', 'wallet_fk ... provided by /access/login'). That provenance is genuinely useful. It falls short of 5 because 'api_key' is only loosely described and the units/currency of 'amount' are unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Calculates the transaction fee given an amount.' That is clear and unambiguous. However, it makes no attempt to distinguish itself from close siblings such as netfluid__fees or netfluid__currency_rates, so an agent has no basis for choosing among them from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the sibling fee/rate tools, and no preconditions beyond the required credentials. The parameter docs imply the agent must already hold a token and wallet_fk, but no workflow or exclusion guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_google_auth_listBInspect

Returns the wallet's Google Authenticator registration.

Returns the wallet's Google Authenticator registration. An object is returned with a Secret, URL, QR-Code. Any of which can be presented to Google Authenticator app in order to setup a time based OTP @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It helpfully discloses the return contents (Secret, URL, QR-Code) in the absence of an output schema, but it omits the sensitive nature of exposing a TOTP secret, whether the call is repeatable, and whether it requires an authenticated session beyond the parameter names.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence 'Returns the wallet's Google Authenticator registration.' is duplicated verbatim, which is clear waste. The remaining docstring-style @param/@return structure is functional and front-loaded, but the redundancy costs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly describes the returned object, and all three params are covered, so the core is there. However for a security-sensitive tool it lacks setup prerequisites, sibling routing to wallet_google_auth_verify, and any note on the sensitivity of the returned secret.

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?

Schema description coverage is 0%, so the description must compensate, and it does: all three required params are documented with meaning and provenance (token and wallet_fk come from /access/login, api_key is the application key). Only missing detail is format validation or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: it returns the wallet's Google Authenticator registration. An agent can tell it fetches registration data (Secret/URL/QR) rather than verifying a code, though it never explicitly contrasts itself with the sibling wallet_google_auth_verify.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites such as whether the wallet must already have Google Auth registered, and no statement about when to prefer wallet_google_auth_verify instead. The only context is the @param list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_google_auth_verifyBInspect

Verifies an OTP against the customer's Google Authenticator App

Verifies an OTP against the customer's Google Authenticator App. The wallet must be configured to generate OTPs, see /wallet/google_auth_generate. 2FA is not enabled until such time as /wallet/google_ @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param otp: The OTP to test against what is displayed on the Google Authenticator

@return: a json object
NameRequiredDescriptionDefault
otpYes
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It usefully discloses the setup prerequisite and that 2FA only becomes active after this call, which is real behavioral context. But it never states the permission/auth model, reversibility, or what the JSON response contains beyond 'a json object'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, and a key clause ('2FA is not enabled until...') is cut off mid-word, indicating an unpolished, truncated definition. '@return: a json object' adds almost nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-required-param auth tool with no annotations and no output schema, the description covers params and the setup prerequisite but leaves the auth-flow completion logic truncated and the return shape unspecified. Adequate but with clear gaps.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all four params including provenance (api_key for your app, token and wallet_fk from /access/login, otp matched against the authenticator display). Brief but covers every required parameter where the schema is silent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: verifies an OTP against the customer's Google Authenticator App. That distinguishes it from generic siblings like wallet_verify and wallet_google_auth_list. It does not name an actual sibling tool to differentiate further, but the generate-prerequisite reference helps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a prerequisite: the wallet must be configured to generate OTPs, pointing to /wallet/google_auth_generate, and notes 2FA is not enabled until verification. However the sentence is truncated mid-thought and there is no explicit when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_kyc_checkBInspect

Checks whether the wallet/customer has been verified successfully

Checks whether the wallet/customer has been verified successfully @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden, and it delivers little: it never states whether this is read-only, what happens when the wallet is unverified, or what fields the returned JSON contains. 'Checks whether... verified' implies a safe read, but nothing confirms it or explains the failure path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structure is front-loaded (purpose first, then params, then return), which is good, but the opening sentence is repeated word-for-word, wasting the most valuable line. Everything else is terse enough.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should at least sketch the shape of the result, yet it only says 'a json object'. The parameter documentation is adequate, but for a check tool whose entire value is the verification verdict, the return contract is left undefined.

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?

Schema coverage is 0%, so the description must compensate, and it largely does: it identifies api_key as the key allocated to the application and tells the caller that token and wallet_fk come from /access/login. That provenance is genuinely useful and not present in the bare schema, though the parameter meaning itself is still thin.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: a check of whether the wallet/customer has been verified. The purpose is immediately graspable, but the sentence is duplicated verbatim and the description never distinguishes this from nearby siblings like wallet_kyc_check_lite or wallet_verify, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the lite variant or any alternative. The agent is left to infer when this check applies versus wallet_kyc_check_lite or wallet_verify.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_kyc_check_liteCInspect

Checks whether the wallet/customer has performed an ID document scan and AML check

Checks whether the wallet/customer has performed an ID document scan and AML check. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup but never says so, and gives no information about permissions, rate limits, error conditions, or whether a failed/absent KYC result is returned as an error or as data. '@return: a json object' conveys essentially nothing about the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is duplicated verbatim at the top of the description, which is pure waste. The remainder is raw JSDoc annotation syntax rather than prose front-loaded for an agent. Content volume is small, but structure and redundancy are both defective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All three required parameters are documented with their provenance, which covers the invocation essentials for a 3-param tool. But with no annotations and no output schema, the description should explain what the check returns and how the lite variant differs from the full KYC check, and it does neither.

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?

Schema description coverage is 0%, so the description must compensate, and it does document all three parameters. The token and wallet_fk entries add real value by naming /access/login as the source, telling the agent which call must precede this one. The api_key entry is closer to tautology, keeping it out of 5 territory.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: checking whether a wallet/customer has completed an ID document scan and AML check. That is a concrete, recognizable operation. However, it never distinguishes itself from the sibling netfluid__wallet_kyc_check (the non-lite variant) or wallet_kyc_session_create, so an agent cannot tell from the description which KYC entry point to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no mention of the sibling KYC tools. The only implicit guidance is the parameter provenance chain (token/wallet_fk from /access/login), which is not framed as usage advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_kyc_session_createAInspect

Creates a new session for Identity Verification (KYC), only required on wallet that have not been KYC verified. Do not generate a link unless explicitly asked for by the user. There is a cost per session.

Creates a session for Identity Verification. Do not generate a link unless explicitly asked for by the user. This endpoint will return a URL, direct the customer to that URL on their mobile. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param profile: The session profile, values are FULL (ID verification, Face Verification, Liveness check, Email verification, AML) or LITE (ID verification, Face Verification, Email verification, AML) @param callback: The session callback URL which will be called with the verification result. This callback URL must call /callback/didit with the "verificationSessionId" and "status" as received on this callback url

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
profileYes
callbackYes
wallet_fkYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose key traits: a per-session cost, that a URL is returned and the customer must be directed to it on mobile, and that the callback URL must subsequently hit /callback/didit with verificationSessionId and status. It omits session lifetime/expiry and error behavior, so it is strong but not complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening paragraph and the second paragraph duplicate each other almost verbatim ("Creates a session for Identity Verification" and the "Do not generate a link" instruction appear twice). The @param block is informative, but the redundant opening wastes space in an otherwise front-loaded description.

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 5-required-param mutation with no annotations and no output schema, the description covers purpose, preconditions, cost, the URL-return behavior, and the callback flow. The return value is only described as "a json object" plus a URL, leaving some ambiguity about the response payload.

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?

Schema coverage is 0%, so the description must compensate and largely does: it documents all five parameters, including the profile enum values (FULL vs LITE with their component checks) and the callback contract. token/wallet_fk are only described as "provided by /access/login," which is thinner but still points to their source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Creates a new session for Identity Verification (KYC)") and adds a precondition ("only required on wallet that have not been KYC verified") that helps separate it from wallet_kyc_check siblings. It never names those siblings, but the scope is unambiguous.

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?

Gives both a when-to-use condition (wallets not yet KYC verified) and a when-not-to-act guardrail ("Do not generate a link unless explicitly asked for by the user"), plus a cost warning. No sibling alternative is named, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_mnemonicBInspect

Returns the wallet's 24 word mnemonic phrase for future secret recovery.

Returns the wallet's 24 word mnemonic phrase for future secret recovery. It is important that the wallet owner is made aware of this recovery key phrase, for future use, when required @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations object is empty, so the description carries the full burden. It does disclose that the return value is a highly sensitive secret recovery phrase and that the owner should be made aware of it, which is meaningful behavioral context for a security-critical read. It omits permission requirements, whether the call is auditable/logged, any rate limits, and confirms no annotations to fall back on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, which is pure waste, and the legacy @param/@return tag block is a loose structure rather than front-loaded prose. The purpose is first, which saves it from a 1, but the redundancy signals low editorial quality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool that emits seed material there is no output schema and no annotations, so the description should carry the load; instead it reduces the return to 'a json object'. It covers parameter provenance but says nothing about the response shape, security requirements, or failure modes, leaving real gaps for a high-stakes operation.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all three params, stating api_key is the application's allocated key and that token and wallet_fk both come from /access/login. That provenance detail is exactly what the schema lacks. It stops short of 5 because types and formats are not restated beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it returns the wallet's 24-word mnemonic phrase. That is unambiguous and unique among the ~120 siblings, none of which expose seed material. It does not, however, name or contrast any sibling tool, so it stops short of the 5 tier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'for future secret recovery' framing hints at the scenario (seed backup/recovery), and the note about informing the wallet owner implies a handling context. But there is no explicit when-to-call guidance, no prerequisites (e.g. required PIN/2FA state), and no when-not-to-call condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_rbaAInspect

Saves a Recipient Bank Account (RBA) for use on future withdrawals. Confirm (yes/no) before executing

Saves a Recipient Bank Account (RBA) for use on future withdrawals. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param beneficiary: The beneficiary name @param bank: The bank's name @param iban: The account's IBAN/Account number @param swift: The account's swift routing code or branch code which ever is applicable @param email: The recipient's email address @param note: The note or recipient reference on the bank transfer @param address_street: The street address of the bank @param address_city: The city in which the bank is located @param address_zip: The postal code of the location of the bank, zip code or "None" @param countryISO2: The 2-digit ISO code of the country in which the bank is located, must match the content of the swift code

@return: a json object
NameRequiredDescriptionDefault
bankYes
ibanYes
noteNo
emailYes
swiftYes
tokenYes
api_keyYes
wallet_fkYes
address_zipNo
beneficiaryYes
countryISO2No
address_cityNo
address_streetNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full behavioral burden. It does add one real trait – the confirmation gate before execution – and clarifies the saved artifact persists for future withdrawals. However, it omits permissions, duplicate-handling, failure modes, and the fact that api_key/token must be valid before the call succeeds.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is duplicated verbatim at the top, and the description is written as JSDoc-style @param/@return tags rather than agent-facing prose. The parameter lines each earn their place, but the duplication and leaked doc-comment formatting hurt front-loading.

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?

Given no output schema, no annotations, and 13 parameters, the description is fairly complete – it covers purpose, the persistence intent, every parameter, and the confirmation requirement. It stops short of any error/permission context, which an agent calling a write tool would benefit from.

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?

Schema description coverage is 0%, so the description must compensate, and it does: all 13 parameters get meaningful semantics beyond type, notably IBAN format, swift as 'routing code or branch code', and the non-obvious constraint that countryISO2 'must match the content of the swift code'. It omits which fields are required vs. optional, which the schema supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a clear verb+resource ('Saves a Recipient Bank Account (RBA)') plus the downstream purpose ('for use on future withdrawals'). It distinguishes the tool from siblings like netfluid__beneficiary_add and netfluid__wallet_rba_list by naming the RBA concept and persistence intent, though it never explicitly contrasts with those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'for use on future withdrawals' and 'Confirm (yes/no) before executing' give a sense of context and a required confirmation step. There is no explicit when-to-use vs. when-not guidance and no named alternative for adding recipient accounts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_rba_listCInspect

List all Recipient Bank Accounts (RBAs) on this wallet

List all Recipient Bank Accounts (RBAs) on this wallet @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full burden, yet it says nothing about pagination, result limits, ordering, or whether the list can be empty. The @param notes hint at auth (token from /access/login, api_key per application) but only implicitly, offering little behavioral context for a list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, wasting space, and the closing '@return: a json object' contributes nothing. The useful param notes are buried in boilerplate rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and a 0%-coverage input schema, the description should shoulder more. It omits return shape, pagination behavior, and its relationship to sibling RBA tools, leaving an agent under-informed for a required-3-param call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and all three params are required, so the description must compensate. It does document all three (@param api_key, token, wallet_fk), and the origin notes ('provided by /access/login') add real value, but wallet_fk's definition is tautological and no format/type guidance is given. Partial compensation merits a middle score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb ('List') and resource ('Recipient Bank Accounts (RBAs)') with the scope qualifier 'on this wallet'. However, it does not distinguish itself from the sibling netfluid__wallet_rba (presumably the create/register counterpart), so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites stated, and no alternatives named. The reader must infer that this is the read-side companion to netfluid__wallet_rba entirely on their own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_referral_codeBInspect

Returns this wallet's referral code.

Returns this wallet's referral code. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty. The description implies a read-only operation via 'Returns' and documents the provenance of the authentication parameters (api_key, token, wallet_fk), but it omits rate limits, permission requirements, error behavior, and whether the referral code is static or dynamic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is duplicated verbatim, which is unnecessary repetition. The parameter annotations are useful but the overall description is not front-loaded efficiently and wastes space on the redundant line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with no output schema and no annotations, the description covers the required inputs but only says '@return: a json object'. It does not describe the response structure or any error conditions, leaving a gap that the missing output schema would otherwise fill.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the full burden. It successfully defines all three parameters, including where token and wallet_fk come from ('provided by /access/login') and what api_key represents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Returns this wallet's referral code.' This clearly identifies the operation, though it does not explicitly differentiate from sibling tools or mention when it should be used over alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. It simply states what it returns, with no context about scenarios, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_verifyBInspect

Verifies the status of the wallet token, while keeping the token session alive.

Verifies the status of the wallet token, while keeping the token session alive. Call this regularly to keep the token active. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden, and it does disclose one genuinely non-obvious behavioral trait: the call has a side effect of keeping the token session alive. It omits whether the call requires valid auth, what happens when the token has already expired, whether it is idempotent, and what the returned status values mean.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, and the JSDoc-style @param/@return tags bloat the block without adding structure the agent can use. The one high-value instruction (call regularly) is buried below the repeat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No annotations and no output schema, so the description should do more; it notes the return is "a json object" but not what status information comes back or how errors surface. It is roughly adequate for invoking the call, but thin for interpreting the result of a session-keeping operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate; it at least names all three parameters and gives their provenance (api_key allocated to the application; token and wallet_fk from /access/login). That is useful sourcing information but no format, type, or validation detail, so it only partially offsets the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (verifies) and resource (wallet token status), plus a secondary effect (keeping the token session alive). That distinguishes it meaningfully from sibling verify-type tools such as wallet_google_auth_verify or wallet_kyc_check, though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Call this regularly to keep the token active" gives a real usage cue about cadence, which is more than most definitions offer. However, it offers no when-not guidance, no conditions for choosing this over other wallet endpoints, and no failure/renewal path if the token is already dead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__wallet_voucher_listBInspect

Lists all vouchers kept in this wallet's vault.

Lists all vouchers kept in this wallet's vault. These are vouchers issued by any account_fk in this wallet @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses the read scope (vault contents, all issuers) and the auth prerequisites (api_key, token and wallet_fk from /access/login), but says nothing about pagination, filtering, rate limits, or the actual return shape beyond "a json object."

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the text is short, but the opening sentence is duplicated verbatim, which is pure waste and makes the definition look sloppy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should do more work. It covers auth sourcing but leaves the return value as an unhelpful "a json object," so an agent lacks detail on what a voucher list entry contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does name all three params and usefully states where token and wallet_fk come from (/access/login), but gives no type or format detail and leaves wallet_fk's integer type to the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Lists all vouchers kept in this wallet's vault") and adds that these are vouchers issued by any account in the wallet. It is clear what the tool does, but it does not explicitly distinguish itself from voucher-related siblings like netfluid__netfluid_voucher_check or paywall__pay_subscription_with_ott_voucher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when not to, or which sibling to use instead. The only usage-adjacent info is that the tokens come from /access/login, which is prerequisite detail rather than routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__webhook_pauseCInspect

Pauses the webhook on this wallet from receiving events

Pauses the webhook on this wallet from receiving events @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden: it implies a state mutation but says nothing about whether already-queued events are dropped, whether pausing an inactive webhook errors, or whether the operation is idempotent, and the '@return: a json object' gives no meaningful disclosure of the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening purpose sentence appears verbatim twice, which is pure waste and pushes the actual substance down. The @param and @return lines are an unedited docstring block that was never front-loaded or trimmed for agent consumption.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description would need to cover return shape and failure modes, which it largely does not ('a json object'). It does adequately cover all three required parameters, so it is usable but not complete for a mutation tool with a three-parameter contract.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of parameter meaning — and it does add value by naming each parameter and its source (api_key for the application, token and wallet_fk from /access/login). It stops short of format or type details, but this is meaningfully better than a bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Pauses the webhook on this wallet from receiving events'. An agent can immediately tell this is the pause counterpart to webhook_resume, though the description never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pause versus using webhook_resume, webhook_set, or webhook_view, and no prerequisites or preconditions are stated. The agent must infer usage entirely from the name and the one-line purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__webhook_resumeCInspect

Resumes a webhook

Resumes a webhook @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden and delivers almost nothing: it does not say whether resuming is idempotent, what state it changes, whether delivery of queued events resumes, or what happens if the webhook is not paused. The only disclosure is indirect auth context from the param list, and "@return: a json object" conveys no real behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The body is short and the action statement is front-loaded, but "Resumes a webhook" is repeated twice, which is pure waste, and the docstring-style @param/@return block is a raw code-comment artifact rather than user-facing prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description should explain the state change and outcome. Instead the return is dismissed as "a json object" and nothing about the effect of the operation is stated, so an agent cannot confidently predict the result.

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?

Schema description coverage is 0%, so the description must compensate, and it does meaningfully: it identifies api_key as the application key and states that token (wallet_api_token) and wallet_fk both come from /access/login. That provenance is valuable for an agent assembling a call. It still omits format/dtype detail (e.g. that wallet_fk is an integer identifier), keeping it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Resumes a webhook" names a verb and resource, so the basic action is identifiable. However, it never explains what resuming means operationally (re-enabling delivery? clearing a paused flag?) and gives no differentiation from the sibling netfluid__webhook_pause, with which it forms an obvious pair. The line is also duplicated verbatim, adding no clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites (e.g. the webhook must already exist and be paused), and no mention of the pause/view/set siblings. The pairing with webhook_pause implies usage, but nothing is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__webhook_setBInspect

Sets a webhook on this wallet

Sets a webhook on this wallet. The webhook URL receives a PUT call containing a JSON object whenever an event in triggered on this wallet. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login @param url: The url on which to receive a PUT containing a JSON object

@return: a json object
NameRequiredDescriptionDefault
urlYes
tokenYes
api_keyYes
wallet_fkYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With empty annotations the description carries the full burden. It usefully discloses that the URL receives a PUT call with a JSON object whenever an event fires, which is real behavioral context. However, it never says whether this overwrites an existing webhook, what permissions are needed, or how failures surface.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim, wasting space, and the JSDoc-style @param/@return block is functional but not front-loaded for an agent. Content is otherwise tight with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers purpose, parameter sources, and the return type adequately. It stops short of stating overwrite semantics, auth failure behavior, or error conditions, leaving real gaps.

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?

Schema coverage is 0%, so the description must compensate and largely does: every one of the four parameters gets a meaning, and three include provenance ('provided by /access/login'). This meaningfully exceeds the bare schema, though it omits format expectations like the integer nature of wallet_fk.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Sets a webhook on this wallet.' This clearly distinguishes it from the sibling webhook_view, webhook_pause, and webhook_resume tools. The repeat of the first sentence is redundant but doesn't harm clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus webhook_pause/resume/view, no prerequisites, and no stated conditions or exclusions. The agent must infer that 'set' means create/configure a webhook from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__webhook_viewCInspect

View the webhook on this wallet

View the webhook on this wallet. @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param wallet_fk: The wallet_fk provided by /access/login

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
wallet_fkYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full disclosure burden. 'View' weakly implies a read, but the description says nothing about what happens when no webhook is configured, whether the call is idempotent, or what the returned object actually contains, offering only '@return: a json object'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is duplicated verbatim ('View the webhook on this wallet' twice), which is pure noise. The JSDoc @param/@return block is boilerplate, though the parameter provenance lines do carry some value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should explain the returned webhook representation, but it only says 'a json object'. Auth requirements are at least traceable through the @param provenance notes, so the definition is minimally usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The @param lines do add provenance the schema lacks — api_key is the application's key, and token/wallet_fk come from /access/login — but they give no format, scope, or validation detail for the three required parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('View') and resource ('the webhook on this wallet'), so an agent can tell it is a read of webhook configuration. It never distinguishes itself from the closely related siblings netfluid__webhook_set, netfluid__webhook_pause, and netfluid__webhook_resume, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus webhook_set/pause/resume, nor any prerequisite or exclusion. The only implied context is the repetition of 'on this wallet', which does not tell the agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__withdraw_ott_providers_listAInspect

Returns a list of supported providers.

Step 1. Returns a list of supported providers, an array of provider_id is returned, select one and use with /withdraw/to_ott_quote. @param api_key: The api key allocated to your application

@return: a json object
NameRequiredDescriptionDefault
api_keyYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It discloses the return shape (an array of provider_id) but not safety profile, permissions beyond the api_key, or rate limits. Adequate for a simple read-only list, but thin given zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, but the first sentence is duplicated as "Step 1...", and the @return line ("a json object") adds near-zero value. Roughly a third of the text is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter list tool with no output schema, the definition covers what it returns at a high level and where it fits in the flow, but the repeated sentences and generic " object" return note leave it just barely adequate.

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?

Schema description coverage is 0%, so the description must compensate, and it does explain the single parameter: "@param api_key: The api key allocated to your application." That is meaningful beyond the bare 'string' type in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Returns a list of supported providers") and even names the sibling consumable next (/withdraw/to_ott_quote), so an agent can tell it apart. It loses a point only because the opening sentence is restated verbatim in the second sentence.

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?

Explicitly positions itself as "Step 1" of a workflow and instructs the agent to select a provider_id and pass it to /withdraw/to_ott_quote. That is clear when-to-use context, though it does not state prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__withdraw_to_bankBInspect

Withdraws to a bank account, anywhere world-wide. Confirm (yes/no) before executing

Withdraws to a bank account, anywhere world-wide. The account currency is the currency in which funds will be paid out. The recipient bank account (rba) must already be set. See /wallet/rba @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which to withdraw the funds. @param rba_fk: The rba_fk (recipient bank account id) to pay out to, can be found /wallet/rba_list. @param amount: The amount to withdraw @param note: The note on the transaction

@return: a json object
NameRequiredDescriptionDefault
noteNo
tokenYes
amountYes
rba_fkYes
api_keyYes
account_fkYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden. It usefully discloses that the recipient bank account must be pre-registered, that the account currency determines payout currency, and that confirmation is expected. It omits reversibility, fees, minimum amounts, and auth/rate-limit behavior for a money-movement operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence 'Withdraws to a bank account, anywhere world-wide.' is duplicated verbatim near the top, which is wasted space. The param list is front-loaded and readable, but the repetition costs it structure points.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-required-param financial mutation with no annotations and no output schema, the description covers parameters and one key prerequisite. It leaves the return value as a bare 'a json object' and does not document failure modes or the auth/session flow beyond the token param.

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?

Schema coverage is 0%, so the description must supply all parameter meaning, and it largely does: account_fk is flagged as an int (not address) that may not be 0, rba_fk is tied to a lookup endpoint (/wallet/rba_list), and amount/note are explained. Only minor format details (e.g., amount precision/limits) are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Withdraws to a bank account') and adds scope ('anywhere world-wide'). An agent can distinguish it from siblings like withdraw_to_ott or account_wire by the bank-account target, though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides prerequisites ('rba must already be set. See /wallet/rba') and a confirmation step ('Confirm (yes/no) before executing'), which imply usage. However, it never states when to prefer this over account_wire or withdraw_to_ott, and the confirmation instruction is vague about mechanism.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__withdraw_to_ottAInspect

Withdraws ZAR to any the OTT Mobile supported providers, confirm (yes/no) before executing

Step 3. Performs the withdrawal based on the quote_id returned from /withdraw/to_ott_quote. The final ZAR amount may differ from the quoted amount. On successfully submission a payment_id will be returned @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which the funds will be withdrawn @param quote_id: The quote_id returned from withdraw/to_ott_quote @param mobile: The recipients South African mobile number, format 27XXXXXXXXX

@return: a json object
NameRequiredDescriptionDefault
tokenYes
mobileNo
api_keyYes
quote_idYes
account_fkYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that the final ZAR amount may differ from the quoted amount and that a payment_id is returned on success, but omits failure modes, reversibility, rate limits, and auth requirements beyond what the parameter docs imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening verb phrase is front-loaded well, but the body is a raw docstring dump with a dangling 'Step 3.' fragment and verbose @param/@return tags. The parameter notes earn their place, but the structure is uneven rather than tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter, 0%-coverage mutation tool with no annotations and no output schema, the description covers parameters and the key behavioral caveat (amount may differ). However, @return is only 'a json object', and the confirm yes/no instruction has no parameter backing, leaving the calling contract slightly ambiguous.

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?

Schema coverage is 0%, so the description must compensate, and it does well: it documents the source of token and quote_id, warns that account_fk is a database int (not an address) and cannot be 0, and gives the mobile format 27XXXXXXXXX. Only the unexplained 'confirm (yes/no)' has no corresponding parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: withdraws ZAR to OTT Mobile supported providers, and positions itself as step 3 of a quote-then-withdraw flow. It is distinguishable from withdraw_to_bank and the quote/query siblings, though it never names those alternatives directly.

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?

Gives clear context: it must be preceded by the quote step, since it performs the withdrawal based on the quote_id returned from /withdraw/to_ott_quote. The 'confirm (yes/no)' instruction implies a consent gate. No explicit when-not guidance or named alternative tools, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__withdraw_to_ott_queryBInspect

Queries the state of an OTT Mobile withdrawal

Step 4. Optional. Queries the state of an OTT Mobile withdrawal using the payment_id from withdraw/to_ott @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which the funds were withdrawn @param payment_id: The payment_id returned from withdraw/to_ott

@return: a json object
NameRequiredDescriptionDefault
tokenYes
api_keyYes
account_fkYes
payment_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'Queries the state' implies a safe read, and it notes the result is 'a json object,' but it says nothing about possible state values, error conditions, rate limits, or cost. It adds only minimal behavioral context beyond the read implication.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded and the @param block earns its place, but the opening line and the 'Step 4. Optional. Queries the state...' line restate the same purpose verbatim. The '@return: a json object' line is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a state-query tool with no annotations, no output schema, and 0% parameter coverage, the description should explain what states can be returned, since 'a json object' conveys nothing. Parameter documentation is complete, but the query semantics remain thin.

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?

Schema coverage is 0%, so the description must compensate, and it does document all four parameters. The account_fk note (a database ID, not an account address, must not be 0) and the payment_id provenance ('returned from withdraw/to_ott') add real meaning the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Queries the state of an OTT Mobile withdrawal') and situates it in the withdraw_to_ott flow via payment_id. It is distinguishable from siblings like withdraw_to_ott (the action) and withdraw_to_ott_quote, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Step 4. Optional.' plus the payment_id-from-withdraw/to_ott reference gives clear flow context for when to call it. However, it never states when not to use it, what the alternatives are, or how to interpret different states, so usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

netfluid__withdraw_to_ott_quoteAInspect

Generates a withdrawal quote to a OTT Mobile supported provider

Step2. Generates a withdrawal quote to a OTT Mobile supported provider On successfully submission a quote_id will be returned, use with /withdraw/to_ott @param api_key: The api key allocated to your application @param token: The wallet_api_token provided by /access/login @param account_fk: The account_fk (this is a database ID (int) not an account address (str) and may not be 0) The account_fk from which the funds will be withdrawn @param provider_id: The provider_id returned from withdraw/ott_providers_list @param amount: The amount to be withdrawn from the account_fk, in its native currency.

@return: a json object
NameRequiredDescriptionDefault
tokenYes
amountYes
api_keyYes
account_fkYes
provider_idYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It does reveal useful behavior: a quote_id is returned and is consumed by /withdraw/to_ott, api_key and wallet token are required, and account_fk must be a non-zero database ID. It says nothing about quote validity/expiry, whether funds are reserved, fee handling, or rate limits, which matters for a two-step financial flow.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is repeated verbatim as both a header and a 'Step2.' line, and '@return: a json object' is pure filler given the return is already described. The parameter block is long but every line earns its place, so the waste is confined to the framing around it.

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 quote tool with no output schema and five undocumented params, the description supplies the return value (quote_id) and the follow-up call, plus the auth inputs. Missing only secondary details like quote expiry and fee/amount constraints, which are not essential to invoking it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must document all five parameters — and it does. Each param has meaning and provenance, and account_fk carries an explicit gotcha ('database ID (int) not an account address (str) and may not be 0') that would otherwise cause a likely misuse.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Generates a withdrawal quote') scoped to an 'OTT Mobile supported provider', which separates it from the execution sibling withdraw_to_ott and the listing sibling withdraw_ott_providers_list. It does not name those siblings explicitly, so an agent must infer the distinction from the endpoint paths. The redundant header plus 'Step2.' restatement adds no clarity.

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?

Gives concrete provenance for inputs ('provider_id from withdraw/ott_providers_list', 'token provided by /access/login') and routes the agent forward: 'On successfully submission a quote_id will be returned, use with /withdraw/to_ott'. There is no statement of when NOT to use this tool or whether the quote must precede the withdraw, but the two-step flow is clearly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__cost_per_fup_unitAInspect

Returns the cost of a FUP token when performing a top-up. Customers may purchase additional workflow tokens on any subscription including the freemium tier The additional tokens do not extend the subscription period @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses two business rules — tokens are purchasable on any subscription including freemium, and they do not extend the subscription period — but says nothing about whether the price is quoted, tier-dependent, cached, or what permissions are needed.

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?

Front-loaded with the core purpose in the first sentence. The middle two sentences drift toward describing the top-up product rather than the tool itself, but they are short and add usable pricing context rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does carry the return contract ('values' object), which is helpful. However, it omits the currency/unit of the returned cost and whether the price varies by subscription tier or purchase quantity — notable gaps for a pricing tool on a paywall product.

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?

The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies no input is needed, and the only variable (which subscription) is not passed as an argument.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns the cost of a FUP token for a top-up. An agent can distinguish it from paywall__purchase_add_on_units (which executes the purchase) or paywall__customer_deduct_from_fup (which consumes tokens), but the description never names those siblings to confirm the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied — the text about purchasing additional tokens suggests this is a price-lookup that precedes purchase_add_on_units, but it never says 'call this before purchasing' or when not to use it. No prerequisites (auth, tier eligibility) are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_allowance_workflowBInspect

Returns the customer's available workflow allowance. @param customer_id: The customer's database id @return: a json object, containing the customer id in the "values" object

NameRequiredDescriptionDefault
customer_idYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It does signal a non-destructive read by using 'Returns' and sketches the return shape, but omits permissions, error behavior, and any explanation of what a 'workflow allowance' actually represents or its units.

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 definition is short and front-loads the core purpose in the first sentence, with JSDoc-style tags kept tight. The @return line's reference to a 'values' object is slightly cryptic but does not bloat the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is the only source of behavioral information. It covers the input parameter adequately but only vaguely characterizes the return ('a json object containing the customer id in the values object') and never defines the allowance being fetched, leaving a meaningful gap.

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?

Schema coverage is 0%, so the description must compensate, and it does add meaning: the lone parameter is documented as 'the customer's database id', clarifying it is an internal integer id rather than an external key. That is genuine value beyond the bare 'integer' type in the schema, though no format or constraint detail is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and resource ('customer's available workflow allowance'), so the operation is identifiable. However, it does not differentiate itself from siblings like paywall__customer_subscription_status or paywall__customer_get_credit_balance, and 'workflow allowance' is domain jargon left undefined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no named alternative. The agent is left to infer that this is a read-only lookup distinct from the various balance/status siblings, which is exactly the ambiguity the description should resolve.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_createBInspect

Creates a customer using the unique identifier (session_key). @param identifier: The customer's unique identifier, typically the session_id @param wallet_fk: The Netfluid wallet_fk to assign to the new customer, defaults to 0, can be set later @param account_fk: The Netfluid account_fk to assign to the new customer, defaults to 0, can be set later @param subscription_type_fk: The database subscription type, defaults to 1 the freemium subscription @return: a json object, containing the customer id in the "values" object

NameRequiredDescriptionDefault
wallet_fkNo
account_fkNo
identifierYes
subscription_type_fkNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses defaults (wallet_fk/account_fk default to 0 and can be set later; subscription_type_fk defaults to 1, freemium) and the return shape, but says nothing about auth requirements, duplicate-identifier handling, or side effects of creating against Netfluid fks.

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?

Docstring-style but front-loaded with the core purpose, followed by structured @param tags that each carry distinct information. Little waste; the only slightly redundant element is restating defaults that also appear in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, and the description does explain the return (a JSON object with the customer id in the 'values' object), which is valuable. However, for a create tool with zero annotation coverage, key operational details such as permission needs and behavior on duplicate identifiers are missing, leaving it only adequate.

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?

Schema description coverage is 0%, so the description must compensate, and it does: all four parameters are documented, including identifier as the unique session id, the fk assignments, and the default value and meaning (freemium) of subscription_type_fk. It adds meaning well beyond the bare integer/string types in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource: 'Creates a customer using the unique identifier (session_key).' This distinguishes it from read-side siblings like paywall__customer_find. It does not explicitly name an alternative or contrast, but the create semantics are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as customer_find or the various netfluid signup tools, nor any stated prerequisites or the idempotency behavior if the identifier already exists. The only contextual hint is that wallet_fk and account_fk 'can be set later,' implying minimal setup to create.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_deduct_from_fupAInspect

Deducts a unit from the customer's available workflow allowance. Do not call this tool when the customer is requesting assistance related to the pay wall and its subscriptions. This tool should be called after each AI response that is not pay wall related. @param customer_id: The customer's database id @return: a json object, containing the customer_id and remaining fup token balance in the "values" object

NameRequiredDescriptionDefault
customer_idYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose that this mutates state (consumes one unit of allowance) and describes the return payload shape. It omits failure behavior when the allowance is exhausted, idempotency/retry safety, and how the allowance is replenished — meaningful gaps for a consumption/mutation tool.

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 action and the call-timing rules are front-loaded in the first three lines, with @param/@return JSDoc appended for reference. Every sentence carries information, though the JSDoc tags are slightly more verbose than a plain sentence would need to be.

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?

There is no output schema, and the description steps up by documenting the return object and its 'values' fields (customer_id, remaining fup balance). Combined with the call-timing rules, param meaning, and mutation disclosure, it is nearly complete for a one-parameter tool; only error/edge-case behavior is missing.

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?

Schema description coverage is 0%, so the description must compensate for the single parameter, and it does: customer_id is described as 'the customer's database id', clarifying identity semantics the bare integer schema does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('deducts') and resource ('customer's available workflow allowance'), so the operation is unambiguous. It does not name or contrast with closely related siblings such as paywall__customer_allowance_workflow or paywall__cost_per_fup_unit, so an agent must infer the boundary from the paywall namespace.

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?

Gives a concrete call condition ('after each AI response that is not pay wall related') and an explicit exclusion ('do not call ... when the customer is requesting assistance related to the pay wall and its subscriptions'). No alternative tool is named for the excluded case, which is the only gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_findBInspect

Searches for a customer using the unique identifier (session_key). @param identifier: The customer's unique identifier, typically the session_id @return: a json object, containing the customer id in the "values" object

NameRequiredDescriptionDefault
identifierYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It usefully discloses the return shape (JSON containing the customer id in the "values" object), which is valuable given there is no output schema. However it says nothing about authentication requirements, what happens when no customer matches, or any rate/error 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?

Two compact lines, front-loaded with the action and the key. The @param/@return tags are slightly redundant scaffolding but they carry content (parameter meaning and return shape) that is not available in the schema, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter lookup with no annotations and no output schema, the description covers the input and gives a basic return hint. It still omits not-found behavior and any permission prerequisites, leaving an agent to guess at edge cases, but nothing critical to invoking it is missing.

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?

Schema description coverage is 0%, but the description compensates by explaining the single parameter: the customer's unique identifier, equated to session_key and typically the session_id. This adds real meaning beyond the bare "identifier: string" schema. Minor ambiguity remains about whether session_key and session_id are interchangeable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: "Searches for a customer" plus the lookup key (unique identifier). It is clear what the tool does, though it does not explicitly distinguish itself from sibling customer tools like paywall__customer_create or paywall__customer_get_* beyond the search-by-identifier framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance and no named alternatives. The only usage hint is implicit in "using the unique identifier (session_key)" and the note that the identifier is "typically the session_id," which tells an agent what to pass but not when to reach for this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_get_credit_balanceBInspect

Returns the customer's credit balance in currency. Credit balances are generated when overpaying for a subscription or when purposefully redeeming vouchers to pay for additional fup units @param customer_id: The customer's database id @return: a json object,in the "values" object

NameRequiredDescriptionDefault
customer_idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It adds useful domain context (balances are generated by overpayment or voucher redemption) and hints at the return shape ('values' object), but does not state read-only semantics, auth requirements, or rate limits. Some value beyond the empty annotation set, but thin for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, which is good, but the doc-comment artifacts ('@param', '@return: a json object, in the "values" object') are awkwardly formatted and the return note is garbled. The middle sentence is useful but slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema and no annotations, the description covers the parameter and hints at the return container. It stops short of explaining response fields or usage context, which are the remaining gaps.

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?

Schema description coverage is 0%, so the description must compensate, and it does: 'customer_id: The customer's database id' clarifies that this is an internal database identifier rather than an external reference. The single parameter is adequately explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Returns the customer's credit balance in currency') and adds domain context about when credit balances arise. No sibling is explicitly contrasted (e.g., vs. wallet_accounts_and_balance or payment_history), but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what a credit balance is but gives no guidance on when to call this versus related balance/history tools such as wallet_accounts_and_balance or customer_payment_history. No prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_get_invoicesCInspect

Returns the customer's invoices. @param customer_id: The customer's database id @return: a json object,in the "values" object containing one or more data rows in an object array

NameRequiredDescriptionDefault
customer_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full burden. It discloses the return shape ('values' object with a data-row array), which is useful, but says nothing about pagination, filtering, date ranges, or permission/authentication requirements for a list-style read.

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?

Front-loaded with the core purpose and otherwise terse, with no filler sentences. The @param/@return tags are compact and each carries information, though the return sentence is slightly clunky in phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no annotations and no output schema, the description does describe the return shape, partially offsetting the missing output schema. It still omits pagination behavior and any filtering context, leaving gaps an agent would want before calling it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single parameter, so the description must compensate. It does add real value by clarifying that customer_id is 'the customer's database id' rather than an external identifier, but gives no constraints or allowed-range information beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the customer's invoices'), which is clearly interpretable. It does not, however, distinguish itself from closely related siblings like paywall__customer_payment_history or paywall__delete_unpaid_invoice, so an agent gets no help disambiguating within the paywall family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites (e.g., a customer must exist), and no routing to alternatives such as customer_payment_history. The agent is left to infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_get_linked_wallet_accountBInspect

Returns the customer's linked Netfluid wallet_fk and account_fk, if available. @param customer_id: The customer's database id @return: a json object, in the "values" object

NameRequiredDescriptionDefault
customer_idYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose useful behavior beyond the structured fields: the result may be absent ('if available') and the payload is wrapped in a 'values' object. However, it omits any mention of auth/permission requirements or behavior when no wallet is linked (error vs. empty), so disclosure is partial.

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?

Front-loads the purpose in one sentence, then the param and return notes. It is compact with no filler. The '@return ... in the "values" object' phrasing is slightly awkward but still earns its place by naming the response envelope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema and no annotations, the description covers purpose, parameter, and a rough return shape, which is adequate to invoke it. It is not complete: it says nothing about when the linkage is missing or what permissions are needed, leaving gaps an agent may need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does supply the one meaningful fact the schema lacks: customer_id is 'the customer's database id'. That is the minimum needed but adds no format, range, or lookup guidance, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and a specific resource ('the customer's linked Netfluid wallet_fk and account_fk'), which is enough to distinguish it from the sibling mutator paywall__customer_link_wallet_account. The terms 'wallet_fk'/'account_fk' are jargon but the intent (fetch an existing linkage) is clear. It stops short of an explicit differentiation statement against siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to call this versus alternatives such as paywall__customer_link_wallet_account or paywall__wallet_accounts_and_balance. There is no statement of prerequisites, context, or exclusions. The reader must infer usage entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_log_paymentAInspect

Logs payment of an invoice, invoices may be paid in several micro payments. Only once the invoice is paid in full does the subscription activate. Any amount overpaid is saved towards credit for the next subscription @param invoice_id: The customer's database invoice_id @param amount_paid: The decimal amount paid @param customer_payment_reference: An optional payment reference @return: a json object, in the "values" object

NameRequiredDescriptionDefault
invoice_idYes
amount_paidYes
customer_payment_referenceNoPaid

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose meaningful domain behavior: partial payments are allowed, subscription activation is gated on full payment, and overpayment rolls into credit. It still omits auth/permission requirements, idempotency, and failure behavior for a mutation that triggers a downstream activation.

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?

Front-loaded with the action and its consequences before the parameter tags, with no filler sentences. The closing @return note is vague ('a json object, in the "values" object') but useful given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with zero annotations and no output schema, the description covers the workflow and parameters adequately but leaves gaps around permissions, reversibility/duplicate-payment handling, and error cases that an agent calling a payment logger would want.

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?

Schema description coverage is 0%, so the description must compensate, and its @param tags document all three parameters: invoice_id as the customer's database key, amount_paid as a decimal, and customer_payment_reference as optional. It adds little about currency/units for amount_paid or expected reference format, so it is strong but not complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Logs payment of an invoice') and clarifies the object is an invoice rather than a subscription, which separates it from siblings like customer_log_subscription and customer_payment_history. It stops short of explicitly naming which sibling to use instead, so it earns a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description embeds usage context by explaining the micro-payment workflow and that the subscription only activates on full payment, which implies when this tool applies. However, it never states when NOT to use it or which alternative (e.g. pay_subscription_with_wallet, pay_subscription_with_credits) handles other payment paths, leaving routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_log_subscriptionCInspect

Creates a new subscription for the customer and generates a new invoice. @param customer_id: The customer's database id @param subscription_type_fk: The database subscription type @return: a json object, in the "values" object

NameRequiredDescriptionDefault
customer_idYes
subscription_type_fkYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose one behavioral trait beyond the name: that an invoice is generated as a side effect. But it omits permission/auth requirements, idempotency, whether re-subscribing an already-subscribed customer errors, and error behavior – significant gaps for a mutation tool.

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?

Front-loads the core action in the first clause and keeps the whole definition to a few lines. The @param/@return tag scaffolding is slightly mechanical but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A create tool with invoice side effects, zero annotation coverage, and no output schema should explain auth needs, side-effect scope, and failure modes. It briefly notes the return shape ('json object in the values object'), but that is far short of what an agent needs to call this safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does partially by documenting both params via @param. However, 'The customer's database id' and 'The database subscription type' are thin – no format, source, or valid-value guidance – so it adds marginal meaning over the integer types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Creates a new subscription for the customer') plus a notable side effect ('generates a new invoice'). An agent can distinguish this from siblings like customer_subscription_status or customer_validate_subscription, though the description never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of adjacent siblings (e.g., customer_validate_subscription, customer_subscription_status). The agent must infer that this is the creation path from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_netfluid_fund_blockchainBInspect

Returns Netfluid accounts on which USDC/USDT can be received. A further step will be required to sell the USDC/USDt for ZAR before a wallet_transfer can take place. @param wallet_fk: The Netfluid wallet_fk @param pin: The Netfluid wallet PIN @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
pinYes
wallet_fkYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden. It implies a read-style lookup (returns accounts) and discloses the return envelope ('values' object) and a downstream workflow dependency, which is useful. It does not state authentication/permission requirements beyond the PIN or any rate/scope limits.

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?

Front-loads the core purpose in the first sentence, then workflow context, then param/return tags. Efficient overall, with only minor redundancy (the 'USDC/USDt' typo) and no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description does explain the return shape and the prerequisite workflow, which covers the essentials for a read-style lookup. It still leaves the relationship to sibling fund tools and the wallet_fk format unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does name both parameters. 'pin: The Netfluid wallet PIN' adds real meaning, but 'wallet_fk: The Netfluid wallet_fk' merely restates the parameter name and gives no format or provenance detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete outcome ('Returns Netfluid accounts on which USDC/USDT can be received'), which is clear enough to act on. However, the tool name 'fund_blockchain' implies a funding action while the description describes a query/list, and it does not distinguish this from siblings like customer_netfluid_fund_options or customer_netfluid_fund_sepa_and_ach.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides workflow context ('A further step will be required to sell the USDC/USDT for ZAR before a wallet_transfer can take place'), which tells the agent this is a prerequisite step. It never states when to choose this over the other netfluid_fund_* variants, so selection guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_netfluid_fund_optionsAInspect

Returns ALL funding options via the Netfluid wallet. This is a comprehensive list for all Netfluid funding options that include:

  1. Netfluid wallet addresses for Netfluid to Netfluid payments, sender can use any currency;

  2. Electronic Banks Transfers to registered Netfluid Bank Accounts in multiple countries, including South Africa;

  3. Pay@ Online or at till point of most retailers in South Africa and Botswana;

  4. Payshap instant, low-cost bank to bank transfers in South Africa;

  5. Virtual Banks Accounts (fiat on-ramps) accepting instant fiat payments in Europe and the USA and converting the funds to USDC/USDt use wallet_stablecoin_transfer to cash-out to ZAR;

  6. Blockchain wallets that accept instant USDC/USDt transfers use wallet_stablecoin_transfer to cash-out to ZAR;

  7. Tokenised Visa/Mastercards charged in ZAR;

  8. Netfluid vouchers, simple digital vouchers issued by Netfluid wallets;

  9. OTT vouchers, available for purchase in most retailers, online or at local Spaza shops in South Africa. @param wallet_fk: The Netfluid wallet_fk @param pin: The Netfluid wallet PIN @param account_fk: The Netfluid account_fk (not account address but the database account_fk), if set to 0, we'll use the first available account

@return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
pinYes
wallet_fkYes
account_fkNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that a wallet PIN is required (an auth/sensitivity signal) and describes the return as a JSON object with a 'values' key, but it does not state whether the call is read-only, whether it moves funds, or any rate/cost characteristics. Adequate but incomplete given zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in the first sentence, which is good, but the bulk is a sprawling nine-item enumeration with run-on phrasing (items 5 and 6 splice the cash-out instruction into the list). Much of the list is arguably helpful, yet it is not tightly structured.

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 listing tool with no annotations and no output schema, the description is fairly complete: it explains all params, the default behavior of account_fk, and the shape of the return ('values' object). The main remaining gap is the absence of any safety/read-only characterization, which the missing annotations leave unaddressed.

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?

Schema coverage is 0%, so the description must compensate, and it does: it documents all three parameters and adds real meaning beyond the schema, notably that account_fk is a database key (not an address) and that 0 selects the first available account. This is genuinely useful semantics; only the trivial pin/wallet_fk entries add little.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns ALL funding options via the Netfluid wallet') and enumerates the option types, which conveys the breadth of the resource. The 'ALL/comprehensive' framing implicitly distinguishes it from the narrower siblings (customer_netfluid_fund_blockchain, customer_netfluid_fund_sepa_and_ach, fund_payat, fund_payshap), though it never names those siblings directly as alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this to enumerate every funding path. It also routes the agent to wallet_stablecoin_transfer for cashing out to ZAR within items 5 and 6, which is concrete guidance. However, it never states when to prefer this over the more targeted fund_* siblings, so the when-to-use vs alternatives guidance is only partial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_netfluid_fund_sepa_and_achAInspect

Returns European (SEPA) and/or United States ACH/Wire near-instant virtual bank account funding options via the Netfluid wallet. The reference in the deposit instruction is extremely important in order to route funds correctly. Funds received in these bank accounts are automatically converted to USDC. A further step will be required to sell the USDC for ZAR before a wallet_transfer can take place. @param wallet_fk: The Netfluid wallet_fk @param pin: The Netfluid wallet PIN @param account_fk: The Netfluid account_fk (not account address but the database account_fk), if set to 0, we'll use the first available account @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
pinYes
wallet_fkYes
account_fkNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full burden, and it delivers genuinely non-obvious behavior: the deposit reference is critical for routing, incoming funds are auto-converted to USDC, and a further conversion step is required before a transfer. It omits failure modes, idempotency, and rate/permission limits, keeping it out of the top band.

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?

Front-loaded with the core purpose, then behavioral warnings, then param docs – a sensible order with little waste. The routing remark and the @return line are slightly redundant given the parameter block format, but overall it is tight.

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?

With no annotations, no output schema, and 0% schema coverage, the description covers purpose, parameter meaning (including the account_fk default), conversion behavior, and the return container ("values"). It is close to complete for a 3-param funding tool, missing only error/edge-case behavior.

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?

Schema description coverage is 0%, so the description must compensate, and it documents all three parameters including the non-obvious special case that account_fk=0 selects the first available account and that account_fk is a database key, not an address. It adds no type or format detail, but the semantic clarification of the default value is strong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns SEPA and US ACH/Wire virtual bank account funding options. It names the concrete rails (SEPA, ACH/Wire) which helps distinguish it from generic siblings like customer_netfluid_fund_options. It stops short of explicitly contrasting with those siblings, so it does not reach a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description embeds workflow context – funds are auto-converted to USDC and a further sell step is needed before wallet_transfer – which implies where this fits in a sequence. It never states when to choose this over customer_netfluid_fund_blockchain or customer_netfluid_fund_options, nor any prerequisites beyond the pin.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_payment_historyCInspect

Returns the customer's payment history @param customer_id: The customer's database id @return: a json object, in the "values" object

NameRequiredDescriptionDefault
customer_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It adds one useful detail (the payload lives in a 'values' object), but says nothing about pagination, date range, ordering, permissions, or whether the customer must exist—significant gaps for a history/read tool with zero annotation coverage.

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?

Very short and front-loaded: the purpose is the first clause before the JSDoc-style @param/@return lines. The JSDoc artifacts are slightly awkward but compact and carry real information about the input and return shape.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description is the only source of behavioral context, and it is thin. It gestures at the return shape but omits result volume, pagination, ordering, and access requirements—not enough for an agent to call this confidently in a large paywall sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does add some meaning by clarifying that customer_id is 'the customer's database id' (an internal id, not an external reference), but it provides no format, range, or lookup guidance. Partial compensation for an undocumented parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Returns the customer's payment history'), which is clear and unambiguous. However, it does not distinguish itself from close siblings like paywall__customer_get_invoices or paywall__customer_get_credit_balance, so the agent cannot tell from the description alone why it would choose this over those.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description only says what it returns, leaving the agent to infer context from the name and sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_subscription_statusCInspect

Returns the customer's current subscription status including the expiry_date @param customer_id: The customer's database id @return: a json object, containing the customer id in the "values" object

NameRequiredDescriptionDefault
customer_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full burden. It discloses that the response contains the status and expiry_date, but gives no information on permissions, behavior when no subscription exists, or error cases. Given no annotations and no output schema, more behavioral context was warranted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but the @param/@return tags are embedded awkwardly inline rather than structured, reading like raw docstring remnants. It is front-loaded with the purpose, which is good, but the formatting is sloppy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial one-parameter read tool this is close to adequate, but with no output schema the description should characterize the returned object more fully; 'containing the customer id in the values object' is a thin and somewhat confusing return description given the tool is supposedly about subscription status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single parameter, so the description must compensate. It does clarify that customer_id is 'the customer's database id', which distinguishes it from wallet or account identifiers, but it offers no format or constraint detail beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Returns the customer's current subscription status including the expiry_date.' An agent can tell this is a read of subscription state. It does not, however, differentiate itself from siblings like paywall__customer_validate_subscription or paywall__customer_log_subscription, which are adjacent in scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to call this versus paywall__customer_validate_subscription (validation) or the log/payment history tools. Usage is only implied by the tool name and the word 'status', so an agent must infer the trigger conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__customer_validate_subscriptionCInspect

Returns the current state of a customer's subscription. @param customer_id: The customer's database id @return: a json object, with the current state of a customer's subscription, in the "values" object

NameRequiredDescriptionDefault
customer_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries full behavioral burden. It partially describes the return shape ('values' object) but says nothing about authentication needs, whether 'validate' performs any side effect or check, rate limits, or what the state fields contain. This is thin for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, and the @param tag is useful, but the @return tag largely restates the opening sentence, adding redundancy rather than information. No structural problems, just no strong economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no annotations or output schema, the description is minimally sufficient — it names the param and gestures at the return shape. It falls short on disambiguating from the sibling status tool and on describing what the subscription 'state' actually includes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate — and it does modestly by labeling customer_id as 'the customer's database id', implying an integer identifier. It adds some meaning over the bare schema but no format, constraints, or lookup behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a verb and resource ('Returns the current state of a customer's subscription'), which is understandable. However, it conflicts with the tool name's implied validation semantics ('validate_subscription' suggests a check/verdict, not a plain state read) and fails to distinguish itself from the near-identical sibling paywall__customer_subscription_status. An agent cannot tell these two apart from the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no alternatives named despite a glaringly overlapping sibling (customer_subscription_status). The agent is left to infer selection entirely on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__delete_unpaid_invoiceAInspect

Deletes an unpaid invoice, updates payment history. The system allows unpaid invoices to be deleted. This means the subscription will likely revert to it's last state. Only works on unpaid invoices. @param invoice_id: The database invoice_id @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
invoice_idYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full burden and does disclose meaningful side effects: payment history is updated and the subscription "will likely revert to it's last state." It is silent on permissions/auth requirements, true reversibility, and failure modes, and the hedge "likely" leaves the subscription outcome uncertain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is correctly front-loaded, but "The system allows unpaid invoices to be deleted" and "Only works on unpaid invoices" restate the same constraint, and the JSDoc tags pad the prose. Tighter phrasing would drop roughly a third of the text without losing information.

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 single-parameter tool with no output schema, the description covers the essentials and usefully mentions the return shape ("a json object, containing the results in the 'values' object"), which the absent output schema would otherwise leave undocumented. Missing items are minor: auth/permission expectations and post-delete error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema contributes nothing beyond `type: integer`. The description's "@param invoice_id: The database invoice_id" clarifies that this is the internal database identifier rather than an external/customer-facing reference, which is a small but real addition; it gives no format or example.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line names a specific verb and resource ("Deletes an unpaid invoice") and adds the side effect of updating payment history. No sibling tool performs invoice deletion, but the description never explicitly contrasts itself with the payment/subscription siblings, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Only works on unpaid invoices" gives one clear precondition/exclusion, which is genuinely useful. However, it names no alternative for the paid-invoice case (e.g., refund or credit workflow) and offers no guidance on when a caller would want to delete versus log a payment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__liveness_checkCInspect

Provides a tool to test the network availability of the API @return: a json object

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full behavioral burden, and it delivers almost nothing: no indication of whether authentication is required, what the probe actually contacts, latency/failure semantics, or what fields the returned JSON object contains. '@return: a json object' restates that something is returned without saying what.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but the opening 'Provides a tool to' is pure filler and the '@return:' docstring fragment is stale boilerplate that adds no information. Roughly half the text fails to earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-param, no-output-schema probe the description is minimally viable: the agent knows this is an availability check. But it omits auth expectations and what a failure looks like, which is exactly the context an agent needs to interpret a liveness result.

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?

The tool takes zero parameters, so the baseline is 4 and there is no parameter space for the description to document or omit. Nothing here is misleading about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a health/liveness probe for the API ('test the network availability of the API'), which is a recognizable verb+resource pairing. However, it opens with the filler 'Provides a tool to', and it never distinguishes itself from the similarly-shaped sibling netfluid__help_ping, so an agent must guess which probe to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this tool, when not to, or how it relates to alternatives such as netfluid__help_ping or the other paywall__ tools. The agent gets a purpose but no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__pay_subscription_with_creditsBInspect

Accepts a subscription payment from the customers prepaid credit. These credits could have arrived from an over-payment or calling netfluid_wallet_transfer tool. The invoice_id is the result of a call to customer_log_subscription tool @param customer_id: The database customer_id @param invoice_id: The database invoice_id @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
invoice_idYes
customer_idYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that this is a payment (a mutation), explains the credit source, and sketches the return as a JSON object with a 'values' field. It omits auth requirements, whether the operation is idempotent/reversible, and error conditions.

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 core action is front-loaded in the first sentence, and the provenance notes follow economically. The @param/@return lines are conventional and short, with only minor redundancy against the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the fund source and the invoice_id prerequisite but leaves holes around authorization, failure modes, and side effects. The loose 'values' object mention only partially covers return expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It supplies @param notes for both arguments and usefully reveals that invoice_id is produced by customer_log_subscription, but the remaining text ('the database customer_id/invoice_id') mostly restates the schema types without adding format or validation meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (accepts a payment) and resource (subscription payment) plus the funding source (customer's prepaid credit), which distinguishes it from the sibling pay_subscription_with_wallet and pay_subscription_with_ott_voucher. It doesn't name those alternatives explicitly, so full differentiation relies on inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful provenance context: credits may come from an over-payment or netfluid_wallet_transfer, and invoice_id comes from customer_log_subscription. However, it never states when to choose this tool over the wallet/ott-voucher payment siblings, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__pay_subscription_with_ott_voucherAInspect

Accepts a subscription payment using an OTT Voucher PIN. If successful it will issue and make payment on a subscription invoice, which in turn will either extend or create a customer subscription. This is the preferred tool to use for activating subscriptions using OTT as a payment method @param identifier: The customer unique identified, hint: the session_id is normally also the mobile number @param ott_pin: The OTT voucher PIN, typically a 10-digit number @param subscription_type_fk: The database subscription_type, a number starting at 1, defaults to 1 @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
ott_pinYes
identifierYes
subscription_type_fkNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the success flow (invoice issuance and subscription creation/extension), but omits authentication requirements, voucher single-use semantics, idempotency, error behavior, and reversibility for a payment mutation.

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 purpose and success flow are front-loaded, followed by parameter and return annotations. The length is justified by the empty schema descriptions, and no sentence is clearly redundant, though the @param-style structure is somewhat mechanical.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a payment mutation with no annotations, no output schema, and 0% schema description coverage, the description covers purpose, success flow, parameters, and return shape. It still omits prerequisites, authentication needs, error cases, and enough return detail, leaving clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It documents all three parameters with useful semantics: identifier hint (session_id is normally the mobile number), ott_pin format (typically a 10-digit number), and subscription_type_fk behavior (database value starting at 1, defaults to 1).

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?

States a specific action: accepts a subscription payment via OTT Voucher PIN, then issues and pays an invoice that extends or creates a subscription. It also names the payment method and preferred status, which distinguishes it from sibling payment tools like pay_subscription_with_credits and pay_subscription_with_wallet.

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?

Explicitly says this is the preferred tool for activating subscriptions using OTT as a payment method, giving clear context for selection. It does not, however, state when not to use it or name the alternative sibling tools for other payment methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__pay_subscription_with_walletAInspect

Accepts a subscription payment from a tied Netfluid wallet and account. The customer's attached wallet's PIN is required to perform the transaction. @param identifier: The customer unique identified, hint: the session_id is normally also the mobile number @param from_wallet_pin: The assigned Netfluid wallet PIN, 5 digits as a string @param subscription_type_fk: The database subscription_type, a number starting at 1, defaults to 1 @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
identifierYes
from_wallet_pinYes
subscription_type_fkNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations empty, the description carries the full burden. It usefully discloses the authentication requirement (the attached wallet's 5-digit PIN) and the prerequisite that a wallet be tied to the account, which are real behavioral facts. However it says nothing about reversibility, idempotency, failure modes, fees, or whether a duplicate call double-charges — significant gaps for a payment mutation.

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?

Purpose is front-loaded in the first sentence, followed by the PIN requirement and then parameter/return notes. The @param/@return block is slightly verbose but every line adds information; nothing is wasted.

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 3-parameter payment mutation with no annotations and no output schema, the description covers purpose, auth requirement, all three parameters, and the shape of the response ('values' object). What is missing is error/idempotency behavior and explicit sibling routing, so it is good but not fully complete.

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?

Schema description coverage is 0%, so the description must compensate, and it does: it explains identifier (session_id, typically the mobile number), constrains from_wallet_pin to a 5-digit string, and documents subscription_type_fk's default of 1. Only the identifier's exact format remains loose ('hint'), which keeps this short of a 5.

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?

States a specific verb and resource: accepting a subscription payment, scoped to a tied Netfluid wallet and account. That scoping naturally separates it from the sibling funding sources pay_subscription_with_credits and pay_subscription_with_ott_voucher, so an agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage (paying a subscription out of a wallet balance) and notes the PIN is required, but never states when to prefer this over pay_subscription_with_credits or pay_subscription_with_ott_voucher, nor any precondition such as the wallet already being linked. Usage is inferable, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__purchase_add_on_unitsAInspect

Purchases addition subscription units. The systems use the available credit balances (if available) when no OTT voucher PIN is provided. When an OTT voucher is provided, the voucher is redeemed and the fup allocated to the customer. Any amount OTT voucher may be used. OTT Merchant Fees are 7%, these are deducted before the units are purchased. The total amount used in allocating FUP tokens = credit + (OTT amount - OTT Merchant Fee of 7%) This will work on any subscription including the freemium tier, meaning non-paying subscribers become pay-as-you-go customers Buying additional tokens does not extend your subscription period, it merely adds to your available tokens. @param customer_id: The database customer_id @param mobile: The customers mobile number, typically his session_id @param ott_pin: The OTT Voucher PIN, a 10-digit number @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
mobileNo
ott_pinNo
customer_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses the 7% OTT merchant fee deducted before purchase, that credit balances are drawn first, that the tool works on the freemium tier turning non-payers into pay-as-you-go customers, and that buying tokens does not extend the subscription period. It omits any auth/permission or rate-limit context, keeping it short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body rambles: the merchant-fee arithmetic is restated twice, 'Any amount OTT voucher may be used' is filler, and the legacy @param/@return formatting is noisy. A typo ('addition') and the redundant formula sentence dilute an otherwise information-dense block.

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 3-parameter mutation tool with no annotations and no output schema, the description is largely complete: it covers fees, credit-vs-voucher branching, side effects, and parameter meaning. It still lacks auth requirements and a clearer statement of the return payload beyond 'a json object containing the results in the values object'.

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?

Schema description coverage is 0%, so the description must compensate, and it does: customer_id is 'the database customer_id', mobile is 'typically his session_id', and ott_pin is 'a 10-digit number'. These add real meaning beyond the bare schema types, though it does not clarify the interaction between mobile and customer_id or their required/optional status.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource ('Purchases additional subscription units'), so the core action is unambiguous. However, it does not distinguish this from close siblings like pay_subscription_with_credits, pay_subscription_with_ott_voucher, or customer_deduct_from_fup, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by explaining that credit balances are consumed when no OTT voucher is supplied and that a voucher is redeemed when provided, which hints at the two invocation modes. But it never states when to prefer this tool over the several subscription-payment and FUP siblings, and offers no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__subscription_typesBInspect

Returns the available subscription types @return: a json object, containing the customer id in the "values" object

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations and no output schema, the description carries the full behavioral burden, and it does so poorly. The '@return' note claiming the result contains 'the customer id in the "values" object' conflicts with the stated purpose of returning subscription types, leaving the actual return shape unclear rather than clarifying it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is tight and front-loaded. The second '@return' line is a leftover-style annotation that adds confusion rather than value, so a portion of the limited text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a catalog tool with no output schema and no annotations, the description should at least sketch what a subscription type record contains (ids, labels, pricing). Instead the only return information given is misleading, leaving real gaps for an agent trying to consume the result.

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?

The tool takes zero parameters, so the baseline is 4. There are no arguments whose semantics could be added or obscured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Returns the available subscription types'. This is clear and distinguishable from sibling catalog tools like account_types or commodity_types by domain. It stops short of explicitly naming siblings, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is given. As a zero-parameter catalog lookup, usage is implied (call it to discover valid subscription types before subscribing), but the description never states this relationship to downstream tools like customer_log_subscription.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__wallet_accounts_and_balanceCInspect

Returns the Netfluid wallet's accounts and balances. @param wallet_fk: The Netfluid wallet_fk @param pin: The Netfluid wallet PIN @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
pinYes
wallet_fkYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are empty, so the description carries the full behavioral burden. It does disclose two useful traits: a PIN is required (authentication implication) and the return payload is a JSON object with a 'values' object — the latter is genuinely valuable since no output schema exists. It says nothing about error behavior, whether the call is purely read-only, or any rate/scope limits, so it is adequate but incomplete.

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 short and front-loads the purpose in the first sentence, with params and return following. The @param lines add almost no information, which is padding, but the overall size is appropriate and not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description should at minimum make the parameters unambiguous and route the agent away from the near-duplicate list tools. It does neither, leaving significant gaps for an agent choosing among many wallet-account siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of parameter meaning — yet '@param wallet_fk: The Netfluid wallet_fk' merely restates the parameter name and never explains what a wallet_fk is or how to obtain it. The pin description is equally tautological. With zero coverage the description was obliged to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: 'Returns the Netfluid wallet's accounts and balances.' An agent knows exactly what data comes back. However, it never differentiates itself from near-identical siblings such as netfluid__wallet_accounts_list and netfluid__wallet_accounts_list_verbose, which appear to return the same kind of data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: no prerequisites, no statement of when this is preferable to wallet_accounts_list, wallet_accounts_list_verbose, or wallet_assets_list. The agent must guess between several closely-named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__wallet_stablecoin_transferAInspect

Converts stable coins to ZAR in a Netfluid wallet account. Use this tool to convert the entire USDC, EURC or USDT balance available across all accounts to ZAR. There needs to be ZAR (min 5.00) in the fiat wallet or crypto in the blockchain wallet otherwise the transfer will fail due to gas fees. The ZAR remains in the Netfluid account until wallet_transfer. @param wallet_fk: The Netfluid wallet_fk @param account_fk: The Netfluid account_fk on which to conver the stablecoin to fiat @param pin: The Netfluid wallet PIN @param stable_coin: The stable coin to convert, options are usdc or usdt @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
pinYes
wallet_fkYes
account_fkNo
stable_coinYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose meaningful behavior: conversion is all-or-nothing across accounts, failure occurs when gas funds are absent, and funds remain in the Netfluid account until wallet_transfer. It omits reversibility, broader auth/permission requirements beyond the PIN, and any rate-limit 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?

Front-loaded with the core action and usage guidance, with prerequisites and the follow-up step following logically and @param/@return tags at the end. Slightly dense with some repetition between the prose and the param tags, but no sentences are wasted.

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 mutation tool with no annotations and no output schema, the description covers the action, prerequisites, fund-retention behavior, parameter meanings, and the shape of the return ('values' object). It is mostly self-sufficient; only deeper auth/reversibility detail is missing.

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?

Schema description coverage is 0%, so the description must compensate, and it does document all four parameters (wallet_fk, account_fk, pin, stable_coin). It loses a point for inconsistency: the intro lists USDC/EURC/USDT but the @param stable_coin line restricts options to `usdc` or `usdt`, leaving the enum ambiguous.

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?

States a specific verb and resource (converts stablecoins to ZAR in a Netfluid wallet), scopes it precisely (the entire USDC/EURC/USDT balance across all accounts), and positions it relative to the sibling wallet_transfer which completes the flow. An agent can distinguish this from paywall__wallet_transfer and netfluid__crypto_swap from the text alone.

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?

Gives clear context ('use this tool to convert the entire balance'), states a concrete prerequisite (min 5.00 ZAR in fiat wallet or crypto in blockchain wallet to cover gas), and names the follow-up step (ZAR remains until wallet_transfer). It does not state explicit when-not conditions or name alternative conversion paths, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__wallet_transferAInspect

Transfers amount from wallet_fk, account_fk to the system wallet This tool only transfers the amount, it does not activate or act on the transfer. The sending wallet's PIN is required to perform the transaction. Use it for account top-ups or if successful to log a customer payment. The benefit of using a Netfluid wallet is that Netfluid does not charge a fee on internal transfers, implying a cost saving. Funds received in the system account become credits on the customer account. These credits can then be used to purchase subscriptions. On a successful payment this wallet and account can OPTIONALLY be linked to a customer's subscription. @param from_wallet_fk: The sender Netfluid wallet_fk @param from_wallet_pin: The sender Netfluid wallet PIN @param from_wallet_account_fk: The sender Netfluid account_fk (not account address but the database account_fk), if set to 0, we'll try and find an account_fk that matches the currency_fk=7 (ZAR) and has more than amount available @param amount: The decimal amount to transfer, 2 decimal points @param customer_id: The customer's database id @return: a json object, containing the OTT voucher amounts in the "values" object

NameRequiredDescriptionDefault
amountYes
customer_idNo
from_wallet_fkYes
from_wallet_pinYes
from_wallet_account_fkNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose real behavior: the sender's PIN is required, funds land in the system wallet and become customer credits, and the wallet/account can optionally be linked to a subscription on success. It adds the no-fee internal-transfer property, though it omits failure handling, reversibility, and auth/rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is reasonably front-loaded and @param/@return tags give structure, but the body rambles with marketing fluff ('implying a cost saving') and an ambiguous, semi-garbled sentence about top-ups/logging payments. Trimming the fluff would sharpen it without losing content.

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?

No annotations and no output schema, so the description must cover both behavior and parameters; it largely does, including the PIN requirement, credit semantics, optional subscription linking, and full parameter coverage. It is let down mainly by an incoherent @return note ('OTT voucher amounts' for a wallet transfer) and no failure/error guidance.

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?

Schema description coverage is 0%, so the description must compensate, and it does document all five parameters via @param tags. Most valuable is the from_wallet_account_fk fallback rule (0 => auto-find a ZAR account with sufficient balance), which is absent from the schema; amount's 2-decimal constraint is also given. customer_id is documented only thinly as 'database id', leaving its role in the transfer unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Transfers amount from wallet_fk, account_fk to the system wallet') and clarifies scope ('only transfers the amount, it does not activate or act on the transfer'). It doesn't explicitly name the sibling it differs from (e.g. paywall__wallet_stablecoin_transfer or paywall__pay_subscription_with_wallet), so differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it for account top-ups or if successful to log a customer payment' gives implied usage context, but the clause is garbled and no alternatives are named or excluded. An agent must still infer when to pick this over wallet_stablecoin_transfer or customer_log_payment.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__wallet_visa_mastercard_card_listAInspect

Returns the Netfluid wallet's tokenised Visa/Mastercards. For a card to be tokenised, one previous 3D secure transaction is required, see payment_3d_secure_link. Use wallet_visa_mastercard_recharge to charge the card. @param wallet_fk: The Netfluid wallet_fk @param pin: The Netfluid wallet PIN @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
pinYes
wallet_fkYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does reasonably well: it discloses the tokenisation prerequisite, cross-references the enabling tool, and describes the return shape (a JSON object with results under "values"). It omits any note on auth/session requirements beyond the PIN or on pagination, but covers the non-obvious behavioral trait (tokenisation precondition).

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?

Front-loaded with the purpose, then prerequisite, then related tool, then return shape. The @param lines are low-value chaff, but overall the structure is tight and every other sentence earns its place.

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 two-param list tool with no output schema and no annotations, the description supplies the prerequisite, the related tools, and the return envelope ("values" object). It is largely sufficient; only parameter detail and explicit sibling disambiguation are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must fully compensate, but it barely does. The @param wallet_fk text ("The Netfluid wallet_fk") is circular and adds nothing, while @param pin adds only that it is a wallet PIN. Neither clarifies format, validity, or security implications for these two required params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Returns) and resource (the wallet's tokenised Visa/Mastercards), which is concrete enough to distinguish it from most siblings. However, it does not distinguish itself from the adjacent sibling netfluid__wallet_card_list, leaving ambiguity about card-type scope.

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?

Gives a clear prerequisite for the returned data (a card must have one prior 3D secure transaction, routing the agent to payment_3d_secure_link) and names the follow-up action tool (wallet_visa_mastercard_recharge). It stops short of explicitly stating when NOT to use it versus wallet_card_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

paywall__wallet_visa_mastercard_rechargeAInspect

Charges the Netfluid wallet's tokenised Visa/mastercards. The funds received from the card will remain in the Netfluid account_fk balance until transferred, see wallet_transfer. Only tokenised cards can be charged, use payment_3d_secure_link, when wallet_visa_mastercard_card_list returns empty in order to tokenize the card. Use wallet_visa_mastercard_card_list to retrieve the wallet_card_id Minimum amount is 1 ZAR. Merchant fees (3.5%) plus Netfluid Card Deposit fees (2.5%) will be deducted from the amount received. Always set the amount to charge at least 6% more than what's required in the wallet. @param wallet_fk: The Netfluid wallet_fk @param pin: The Netfluid wallet PIN @param wallet_card_id: The Netfluid tokenised card id, use wallet_visa_mastercard_card_list to retrieve this id. @param amount: The amount in ZAR to charge the card, must be 2 decimals. @param account_fk: The Netfluid account_fk into which the funds will be deposited, if 0 the system will select the first available ZAR account. On completion, use wallet_transfer to transfer funds to the paywall wallet. @return: a json object, containing the results in the "values" object

NameRequiredDescriptionDefault
pinYes
amountYes
wallet_fkYes
account_fkNo
wallet_card_idYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the entire burden and does so well: it discloses the fee structure (3.5% merchant + 2.5% Netfluid card deposit deducted from received amount), that funds land in the account_fk balance rather than the paywall wallet, and the minimum amount. It stops short of covering idempotency, failure/retry behavior, or PIN-lockout consequences, so not a full 5.

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?

Purpose and fund-flow are front-loaded, and the workflow/fee/minimum sentences all earn their place. The trailing @param block partially repeats content already stated in prose (e.g. wallet_card_id retrieval is said twice), which is minor redundancy but slightly inflates length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param mutation tool with no annotations and no output schema, the description covers purpose, sequencing with sibling tools, fee economics, edge conditions (minimum, 6% buffer, default account_fk), and even the return shape ('values' object). Nothing essential for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates fully by documenting all five parameters: wallet_fk, pin, wallet_card_id (with how to obtain it via wallet_visa_mastercard_card_list), amount (ZAR, must be 2 decimals), and account_fk (default 0 means system picks the first available ZAR account). This is exactly what the schema omits.

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?

Opens with a specific verb+resource ('Charges the Netfluid wallet's tokenised Visa/mastercards') and distinguishes itself from siblings by naming wallet_visa_mastercard_card_list and wallet_transfer in the same breath. An agent can tell it apart from fund_card_recharge or wallet_transfer without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and prerequisites: only tokenised cards can be charged, use payment_3d_secure_link when wallet_visa_mastercard_card_list returns empty, and after completion use wallet_transfer. It also states the minimum (1 ZAR) and the required 6% buffer, which is actionable guidance an agent must follow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 142 tool updates
    • Changednetfluid__access_pause1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__access_platform_assign1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__access_platform_login1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__access_platform_wallet_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__access_recover1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__access_resume1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__access_wallet_pin_change1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_address1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_alias1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_buy1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_buy_telco1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_charge1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_info1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_merchant_voucher_issue1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_merchant_voucher_quote1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_merchant_voucher_redeem1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_mint1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_pair1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_pause1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_pay1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_resume1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_sell1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_send1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_send_sms1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_statement1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_swap1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_types1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_unlock1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__account_wire1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__ask_gemini1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__automated_agent_signup1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__automated_signup1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__beneficiaries_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__beneficiary_add1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__beneficiary_remove1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__bridge_blockchain1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__bridge_delete1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__bridge_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__bridge_off_ramp_ach_wire1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__bridge_off_ramp_sepa1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__bridge_on_ramp1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__bridge_rename1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__commodity_types1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__compliance1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_balance1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_blockchains1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_dex_swap1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_digitalasset_info1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_digitalassets1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_from_key1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_info1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_optin1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_optout1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_spend1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_swap1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_token_balance1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__crypto_verify1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__currency_crypto1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__currency_forex1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__currency_rates1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__currency_types1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__email1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__fees1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__fund_banks1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__fund_card_quote1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__fund_card_recharge1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__fund_ott1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__fund_payat1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__fund_payshap1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__help_ping1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__netfluid_voucher_check1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__payment_wallet_set1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__payment_wallet_signup1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__privacy1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__push_message_devices1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__push_message_send1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__send_email1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__session1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__session_2_token1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__skill1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__telco_accounts1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__telco_bundles1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__terms1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_accounts_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_accounts_list_verbose1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_assets_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_card_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_card_remove1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_domain1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_fee1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_google_auth_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_google_auth_verify1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_kyc_check1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_kyc_check_lite1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_kyc_session_create1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_mnemonic1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_rba1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_rba_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_referral_code1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_verify1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__wallet_voucher_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__webhook_pause1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__webhook_resume1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__webhook_set1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__webhook_view1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__withdraw_ott_providers_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__withdraw_to_bank1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__withdraw_to_ott1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__withdraw_to_ott_query1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changednetfluid__withdraw_to_ott_quote1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__cost_per_fup_unit1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_allowance_workflow1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_create1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_deduct_from_fup1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_find1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_get_credit_balance1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_get_invoices1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_get_linked_wallet_account1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_link_wallet_account1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_log_payment1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_log_subscription1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_netfluid_fund_blockchain1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_netfluid_fund_options1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_netfluid_fund_sepa_and_ach1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_payment_history1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_subscription_status1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__customer_validate_subscription1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__delete_unpaid_invoice1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__liveness_check1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__pay_subscription_with_credits1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__pay_subscription_with_ott_voucher1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__pay_subscription_with_wallet1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__payment_3d_secure_link1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__payment_payat_link1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__purchase_add_on_units1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__subscription_types1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__wallet_accounts_and_balance1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__wallet_stablecoin_transfer1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__wallet_transfer1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__wallet_visa_mastercard_card_list1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
    • Changedpaywall__wallet_visa_mastercard_recharge1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "type": "object"
        -}New value: +null
  2. 2 tool updates
    • Changednetfluid__automated_signup1 field changed
      • addedInput schema / properties / customer_referral_code
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": ""
        +}
    • Changednetfluid__payment_wallet_signup1 field changed
      • changedInput schema / properties / secret / default
        Previous value: -"0611bcc5-fc8c-4d2b-a823-bc4c3c34a241"New value: +"9e85cf58-8c45-4cc4-b1e8-aea6054d6ee4"
  3. 2 tool updates
    • Changednetfluid__automated_signup2 fields changed
      • addedInput schema / properties / app_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": 1
        +}
      • addedInput schema / properties / org_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": 0
        +}
    • Changednetfluid__payment_wallet_signup1 field changed
      • changedInput schema / properties / secret / default
        Previous value: -"81fc6380-782c-4bde-8d0e-4c26eebca55b"New value: +"0611bcc5-fc8c-4d2b-a823-bc4c3c34a241"
  4. 1 tool update
    • Addedpaywall__payment_payat_link
  5. 9 tool updates
    • Addedpaywall__customer_netfluid_fund_blockchain
    • Addedpaywall__customer_netfluid_fund_options
    • Addedpaywall__customer_netfluid_fund_sepa_and_ach
    • Addedpaywall__payment_3d_secure_link
    • Addedpaywall__wallet_accounts_and_balance
    • Addedpaywall__wallet_stablecoin_transfer
    • Changedpaywall__wallet_transfer4 fields changed
      • addedInput schema / properties / from_wallet_account_fk / anyOf
        Added value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / from_wallet_account_fk / default
        Added value: +0
      • removedInput schema / properties / from_wallet_account_fk / type
        Removed value: -"integer"
      • changedInput schema / required
        Previous value: -[
        -  "from_wallet_fk",
        -  "from_wallet_pin",
        -  "from_wallet_account_fk",
        -  "amount"
        -]New value: +[
        +  "from_wallet_fk",
        +  "from_wallet_pin",
        +  "amount"
        +]
    • Addedpaywall__wallet_visa_mastercard_card_list
    • Addedpaywall__wallet_visa_mastercard_recharge
  6. 2 tool updates
    • Changednetfluid__payment_wallet_signup1 field changed
      • changedInput schema / properties / secret / default
        Previous value: -"56a6d06e-4448-4c11-8eef-805be38d5a50"New value: +"81fc6380-782c-4bde-8d0e-4c26eebca55b"
    • Changedpaywall__customer_link_wallet_account4 fields changed
      • addedInput schema / properties / encrypted_wallet_pin / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / encrypted_wallet_pin / default
        Added value: +""
      • removedInput schema / properties / encrypted_wallet_pin / type
        Removed value: -"string"
      • changedInput schema / required
        Previous value: -[
        -  "customer_id",
        -  "wallet_fk",
        -  "account_fk",
        -  "encrypted_wallet_pin"
        -]New value: +[
        +  "customer_id",
        +  "wallet_fk",
        +  "account_fk"
        +]
  7. 1 tool update
    • Changedpaywall__customer_link_wallet_account2 fields changed
      • addedInput schema / properties / encrypted_wallet_pin
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "customer_id",
        -  "wallet_fk",
        -  "account_fk"
        -]New value: +[
        +  "customer_id",
        +  "wallet_fk",
        +  "account_fk",
        +  "encrypted_wallet_pin"
        +]
  8. 2 tool updates
    • Addednetfluid__payment_wallet_set
    • Addednetfluid__payment_wallet_signup
  9. 2 tool updates
    • Changedpaywall__customer_link_wallet_account1 field changed
      • changedInput schema / properties / account_fk / type
        Previous value: -"string"New value: +"integer"
    • Changedpaywall__wallet_transfer1 field changed
      • addedInput schema / properties / customer_id
        Added value: +{
        +  "default": 0,
        +  "type": "integer"
        +}
  10. 1 tool update
    • Addedpaywall__cost_per_fup_unit
  11. 1 tool update
    • Addedpaywall__customer_subscription_status
  12. 40 tool updates
    • Addedpaywall__customer_allowance_workflow
    • Addedpaywall__customer_create
    • Addedpaywall__customer_deduct_from_fup
    • Addedpaywall__customer_find
    • Addedpaywall__customer_get_credit_balance
    • Addedpaywall__customer_get_invoices
    • Addedpaywall__customer_get_linked_wallet_account
    • Addedpaywall__customer_link_wallet_account
    • Addedpaywall__customer_log_payment
    • Addedpaywall__customer_log_subscription
    • Addedpaywall__customer_payment_history
    • Addedpaywall__customer_validate_subscription
    • Addedpaywall__delete_unpaid_invoice
    • Addedpaywall__liveness_check
    • Addedpaywall__pay_subscription_with_credits
    • Addedpaywall__pay_subscription_with_ott_voucher
    • Addedpaywall__pay_subscription_with_wallet
    • Addedpaywall__purchase_add_on_units
    • Addedpaywall__subscription_types
    • Addedpaywall__wallet_transfer
    • Removedsubscriptions__customer_allowance_workflow
    • Removedsubscriptions__customer_create
    • Removedsubscriptions__customer_deduct_from_fup
    • Removedsubscriptions__customer_find
    • Removedsubscriptions__customer_get_credit_balance
    • Removedsubscriptions__customer_get_invoices
    • Removedsubscriptions__customer_get_linked_wallet_account
    • Removedsubscriptions__customer_link_wallet_account
    • Removedsubscriptions__customer_log_payment
    • Removedsubscriptions__customer_log_subscription
    • Removedsubscriptions__customer_payment_history
    • Removedsubscriptions__customer_validate_subscription
    • Removedsubscriptions__delete_unpaid_invoice
    • Removedsubscriptions__liveness_check
    • Removedsubscriptions__pay_subscription_with_credits
    • Removedsubscriptions__pay_subscription_with_ott_voucher
    • Removedsubscriptions__pay_subscription_with_wallet
    • Removedsubscriptions__purchase_add_on_units
    • Removedsubscriptions__subscription_types
    • Removedsubscriptions__wallet_transfer
  13. 2 tool updates
    • Removedsubscriptions__netfluid_wallet_transfer
    • Addedsubscriptions__wallet_transfer
  14. 25 tool updates
    • Removednetfluid__about
    • Removednetfluid__accounts
    • Removednetfluid__ACH
    • Removednetfluid__beneficiaries
    • Removednetfluid__bridges
    • Removednetfluid__commodity
    • Removednetfluid__contact
    • Removednetfluid__crypto
    • Removednetfluid__currency
    • Removednetfluid__fund
    • Removednetfluid__off_ramps
    • Removednetfluid__on_ramps
    • Removednetfluid__push
    • Removednetfluid__push_message
    • Removednetfluid__rea
    • Removednetfluid__realtime_event_alerts
    • Removednetfluid__SEPA
    • Removednetfluid__signup
    • Removednetfluid__support
    • Removednetfluid__text
    • Removednetfluid__text_message
    • Removednetfluid__virtual_account
    • Removednetfluid__virtual_accounts
    • Removednetfluid__whois
    • Removednetfluid__withdraw
  15. 2 tool updates
    • Addedsubscriptions__customer_get_invoices
    • Addedsubscriptions__delete_unpaid_invoice

Publisher details

Operator
Netfluid · Publisher source
Operator website
https://www.netfluid.io
Vendor relationship
First-party
Trust center
Not applicable
Restrictions
Not applicable

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources