Skip to main content
Glama
GraysonCAdams

sophtron-mcp

sophtron-mcp

MCP server for Sophtron — connect bank accounts and retrieve financial data (accounts, balances, transactions) through the Model Context Protocol.

Sophtron is a financial data aggregation platform. This server wraps the Sophtron API and exposes it as a set of MCP tools that Claude (or any MCP client) can use to search for banks, connect accounts with credential and MFA handling, list accounts, and pull transaction history.

Tools

Tool

Description

connect_bank

Launch an interactive wizard to connect a new bank or credit card account (UI-based)

manage_accounts

Open the account management UI to select, rename, and organize linked bank accounts (UI-based)

search_institutions

Search for banks and financial institutions by name

create_connection

Create a new bank connection with login credentials; returns a job ID for polling

poll_job

Check the status of a connection or refresh job; poll every 4-5 seconds until complete

answer_mfa

Submit an MFA response (security question, verification code, token choice, phone verification, or captcha)

get_connection_accounts

List accounts for a specific bank connection

save_account_preferences

Save account selection and custom names after connecting a bank

get_account_preferences

Read stored account preferences (selection, custom names) for a connection

rename_account

Set or clear a custom display name for a bank account

toggle_account

Show or hide a bank account from the active list

list_connections

List all linked bank connections for this account

list_accounts

List accounts for a bank connection (selected accounts only by default)

get_transactions

Get transactions for a bank account (defaults to last 90 days)

refresh_account

Trigger a fresh data pull from the bank for a specific account; returns a job ID to poll

Related MCP server: poke-bank

Environment Variables

Variable

Required

Description

SOPHTRON_USER_ID

Yes

Your Sophtron API user ID

SOPHTRON_ACCESS_KEY

Yes

Your Sophtron API access key (secret)

SOPHTRON_API_ENDPOINT

No

API base URL (defaults to https://api.sophtron.com/api)

SOPHTRON_CUSTOMER_NAME

No

Customer name override

Installation

npm ci

Usage

stdio mode (for MCP clients like Claude Desktop)

SOPHTRON_USER_ID=your-id SOPHTRON_ACCESS_KEY=your-key node dist/index.js

Claude Desktop configuration

Add to your Claude Desktop MCP config:

{
  "mcpServers": {
    "sophtron": {
      "command": "node",
      "args": ["/path/to/sophtron-mcp/dist/index.js"],
      "env": {
        "SOPHTRON_USER_ID": "your-id",
        "SOPHTRON_ACCESS_KEY": "your-key"
      }
    }
  }
}

HTTP mode (with mcp-proxy)

mcp-proxy --port 8001 -- node dist/index.js

Data Storage

Account preferences (custom names, selected/hidden status) are stored locally in ~/.sophtron-mcp/connections.json. No bank credentials are stored locally.

License

MIT

Available Tools

15 tools
answer_mfaAnswer MFA ChallengeB

Submit an MFA response (security question answer, verification code, captcha, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of MFA challenge
jobIdYesJob ID
valueYesThe answer/code/choice

TDQS

B3.4/5.0
Behavior3/5

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

The description states the action clearly as submitting an MFA response, which aligns with readOnlyHint=false. However, it does not disclose behavioral consequences such as consuming the pending challenge, advancing the job, or error behavior if the answer is wrong.

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?

A single sentence with the verb front-loaded and parenthetical examples that are compact and informative. No filler or redundancy.

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 and no description of the surrounding MFA flow, the source of jobId, or what to do after submitting a response. For a mutation tool in a multi-step connection workflow, this is an incomplete picture.

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 100%, so the parameters are already well documented. The description's parenthetical examples loosely mirror the type enum and value semantics, but add little meaning beyond what the schema already provides.

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

Purpose5/5

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

The description uses the specific verb 'Submit' plus the resource 'MFA response' and gives concrete examples (security question answer, verification code, captcha). It is immediately distinguishable from all sibling tools, none of which deal with MFA challenges.

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 is given about when to call this tool, such as after a connection flow returns an MFA challenge or after a poll_job indicates MFA is required. No alternatives or exclusions are mentioned, so an agent must infer the usage context from the tool name and siblings.

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

connect_bankConnect Bank AccountA

Launch an interactive wizard to connect a new bank or credit card account. Renders a guided UI for searching institutions, entering credentials, and handling MFA verification.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (not read-only, not destructive, open-world). The description adds useful behavioral context beyond annotations by disclosing that the tool renders a UI, requires credential entry, and handles MFA verification. No contradiction with annotations.

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?

Two sentences with no wasted words. The core action is front-loaded, and the second sentence efficiently summarizes what the wizard does. Every 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 zero-parameter, interactive wizard tool, the description gives enough context for an agent to know what will happen when invoked. It could be more explicit about what the wizard returns or whether the connection is fully established on completion, but given the minimal invocation surface, this is a minor 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?

The tool has zero parameters and full schema coverage, so there is nothing for the description to document. Per the zero-parameter baseline, the description appropriately focuses on the tool's behavior instead of parameter details.

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

Purpose5/5

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

The description clearly states the tool launches an interactive wizard to connect a bank or credit card account, and it names the concrete steps (searching institutions, entering credentials, handling MFA). This distinguishes it from siblings like create_connection, which presumably handles programmatic connection creation rather than a guided UI.

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 this tool is for interactive, user-driven flows by highlighting the wizard and guided UI, but it never explicitly contrasts it with alternatives such as create_connection or states when the programmatic path should be used. The guidance is contextual but not explicit.

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

create_connectionCreate Bank ConnectionA

Create a new bank connection with login credentials. Returns a job ID for polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
pinNoPIN if required
passwordYesBank login password
usernameYesBank login username
institutionIdYesInstitution ID from search results

TDQS

A3.5/5.0
Behavior4/5

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

Beyond the annotations, the description usefully discloses that creation is asynchronous by returning a job ID for polling. It does not mention MFA possibilities or failure modes, but it adds meaningful behavioral context not available in the annotations or schema.

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?

Two short sentences with no filler. The action and the key return behavior are front-loaded, and every clause earns 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?

The description is adequate for a basic call: what to create, what credentials are needed, and the async return value. Gaps remain around naming the polling tool, handling MFA via answer_mfa, and explaining potential external side effects, which would make it more complete.

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 100%, so the schema already documents all parameters, including that institutionId comes from search results and pin is conditionally required. The description adds no additional parameter detail, so the baseline of 3 is appropriate.

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 clearly states the action ('Create'), the resource ('bank connection'), and the return value ('job ID for polling'). It does not explain how it differs from the similarly named sibling connect_bank, so it stops short of full 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?

The description gives no explicit guidance on when to use this tool versus connect_bank, nor does it mention prerequisites such as calling search_institutions first. The polling hint is present but not framed as an explicit workflow instruction.

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

get_account_preferencesGet Account PreferencesA
Read-only

Read stored account preferences (selection, custom names) for a connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
userInstitutionIdYesUserInstitution ID

TDQS

A4.1/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes the safe, non-mutating nature of the tool. The description adds context about the contents of the preferences (selection, custom names) and their association with a connection, but does not disclose any other behavioral traits (e.g., error handling, missing preferences).

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?

The description is a single, well-structured sentence that front-loads the action (Read) and packs in the key details (what preferences, for a connection) without any wasted words.

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?

Given the simplicity of the tool (one parameter, simple read operation, no output schema), the description adequately explains what the tool does and what will be returned (the preferences, including selection and custom names). It is complete for an agent to decide and invoke correctly.

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?

The input schema has full description coverage for the single parameter (userInstitutionId), so the description does not need to compensate heavily. The phrase 'for a connection' subtly suggests that the parameter identifies a connection, but this is not explicit or additive beyond the schema description.

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

Purpose5/5

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

The description clearly states the verb 'Read' and the resource 'stored account preferences', with specific detail about what kind of preferences (selection, custom names) and scope (for a connection). This distinguishes it from sibling tools like save_account_preferences and list_accounts.

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

Usage Guidelines4/5

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

The description provides clear context that this is a read-only retrieval of preferences for a connection, which implies its use case relative to save_account_preferences. However, it does not explicitly name alternatives or exclusion criteria, 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.

get_connection_accountsGet Connection AccountsA

List accounts for a specific bank connection

ParametersJSON Schema
NameRequiredDescriptionDefault
userInstitutionIdYesUserInstitution ID from the connection

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 of disclosure. It clearly signals a read-only listing operation, but does not mention possible pagination, empty results, or whether the connection must be active. Basic behavior is transparent, but deeper behavioral context is absent.

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?

The description is a concise single sentence with no filler or redundant wording. It front-loads the verb and resource, making it easy for an agent to parse quickly.

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 one-parameter read-only tool with no output schema, the description covers the essential invocation context: list accounts scoped to a specific bank connection. It does not explain output shape or pagination, but the tool's low complexity reduces the need for additional explanation.

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?

The single parameter is already fully documented by the input schema with 100% coverage. The description adds no extra meaning about the parameter's format, source, or interpretation, so the baseline score of 3 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?

The description states a clear verb ('List') and resource ('accounts') with a specific scope ('for a specific bank connection'), making the tool's purpose unambiguous. It distinguishes itself from generic account-listing siblings like list_accounts by emphasizing the connection scoe, though it does not name 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 Guidelines3/5

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

The phrase 'for a specific bank connection' implies the tool is used when an agent already has a connection and needs its accounts, but there is no explicit when-to-use guidance or distinction from list_accounts. Usage is inferable rather than directly stated.

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

get_transactionsGet TransactionsA
Read-only

Get transactions for a bank account. Defaults to last 90 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date (YYYY-MM-DD). Defaults to today.
accountIdYesAccount ID
startDateNoStart date (YYYY-MM-DD). Defaults to 90 days ago.

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint annotation already signals this is a safe read operation, and the description adds the 90-day default window. It does not disclose pagination, ordering, or response shape, but for a simple read-only tool the added context is reasonable.

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?

The description is two short sentences with no filler. The core action is front-loaded, and the default behavior is stated efficiently.

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 read-only tool with one required parameter and no output schema, the description covers the essential purpose and default range. It could mention response format or ordering, but the agent has enough to invoke it correctly.

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?

Input schema coverage is 100%, so all three parameters are already documented with types and defaults. The description restates the default window but adds no new parameter-level detail beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb ('get') and a specific resource ('transactions for a bank account'), clearly stating what the tool does. The default date window further clarifies the scope and distinguishes it from other account-related tools like list_accounts.

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 about when to use this tool versus alternatives such as get_connection_accounts or list_accounts. The usage context is implied by the name and description, but no exclusions or alternative routing are provided.

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

list_accountsList AccountsA
Read-only

List accounts for a bank connection. By default only shows selected (active) accounts with custom name overrides. Use includeAll to show hidden accounts too.

ParametersJSON Schema
NameRequiredDescriptionDefault
includeAllNoInclude hidden/deselected accounts (default: false)
userInstitutionIdYesUserInstitution ID

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description need not repeat that. It adds useful context about default filtering and including hidden accounts. However, it does not disclose other behavioral traits such as pagination, ordering, or any prerequisites beyond the parameter, leaving some gaps.

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

Conciseness5/5

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

The description is two concise sentences. The first sentence states the primary action, and the second explains the optional parameter. No filler or redundancy, and it is front-loaded with the verb and resource.

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 the tool's simplicity (2 params, 1 required, no output schema) and the readOnlyHint annotation, the description adequately covers purpose and behavior. It explains the default selection behavior and how to include hidden accounts. It could mention return format or prerequisites, but these are not critical for a basic list 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 description coverage is 100%, so parameters are already documented. The description adds minimal extra meaning: it rephrases includeAll ('show hidden accounts too') and gives context that the tool operates on a bank connection. This adds little 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 clearly states the tool lists accounts for a bank connection, with a specific verb and resource. It mentions default behavior and the includeAll option. However, it doesn't explicitly distinguish from the sibling tool get_connection_accounts, so it lacks full 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 Guidelines3/5

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

The description provides implicit usage context by explaining the default selected-account view and the includeAll option. It does not explicitly state when to prefer this tool over alternatives like get_connection_accounts or when not to use it, so 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.

list_connectionsList Bank ConnectionsA
Read-only

List all linked bank connections (UserInstitutions) for this account, with local storage overlays (logo, selected account count).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds useful behavioral detail about local storage overlays (logo, selected account count) and account scoping, going beyond just the read-only flag.

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?

A single, concise sentence that front-loads the action and resource, includes relevant details about overlays, and avoids any redundant or filler 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?

Given the tool's simplicity (0 params, no output schema), the description adequately conveys what is listed and the overlay detail. It could mention pagination or return format, but this is not critical for basic usage.

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 schema has zero parameters, so the baseline is 4. The description does not need to document parameters; it only adds context about returned overlay fields, which is sufficient given the lack of params.

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?

Description clearly states the action (list) and resource (linked bank connections/UserInstitutions), defines scope as 'for this account', and distinguishes itself from sibling tools like list_accounts and get_connection_accounts by focusing on connections and mentioning overlays.

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 context (listing linked bank connections) but does not explicitly mention when to use this tool over alternatives like search_institutions or get_connection_accounts. No alternatives or exclusions are provided.

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

manage_accountsManage Bank AccountsA

Open the account management UI to select, rename, and organize your linked bank accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already convey the safety profile (readOnlyHint=false, destructiveHint=false). The description adds a key behavioral trait: it opens a UI rather than performing direct data operations, but it does not disclose what happens after the UI opens (e.g., side effects, interaction requirements, or response format). This is adequate but not rich, given annotations cover the mutation concern.

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?

The description is a single, front-loaded sentence that directly states the action and its purpose. There is no redundant information or extraneous detail, making it highly concise and well-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?

Given the tool has no parameters and no output schema, the description is mostly complete for what the tool does. However, it does not specify any return values or post-action behavior, which could be relevant in an MCP context, but for a UI-opening tool the description is sufficient.

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 input schema has zero parameters, and the description implies no arguments are needed by stating a simple UI-opening action. With 0 params, the baseline is 4; the description adds no conflicting information, so this is appropriate.

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

Purpose5/5

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

The description clearly states the action: 'Open the account management UI' with a specific resource ('your linked bank accounts') and the scope of activities ('select, rename, and organize'). This distinguishes it from sibling tools like rename_account or list_accounts which perform individual operations, whereas manage_accounts opens a higher-level UI.

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 guidance on when to use this tool versus alternatives such as rename_account or list_accounts. It does not clarify whether direct operations should invoke this UI or the specific sibling tools, leaving the agent to infer the appropriate usage context.

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

poll_jobPoll Job StatusA

Check the status of a connection or refresh job. Poll every 4-5 seconds. If MFA fields appear (SecurityQuestion, TokenMethod, TokenSentFlag, CaptchaImage), use answer_mfa. Done when LastStatus is "Completed" — SuccessFlag true or null means success, false means failure. Refresh jobs may never set SuccessFlag.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYesJob ID from create_connection or refresh_account

TDQS

A4.4/5.0
Behavior5/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 excellently. It discloses polling interval, MFA field appearance, completion condition (LastStatus 'Completed'), success/failure semantics for SuccessFlag, and the edge case that refresh jobs may never set SuccessFlag. This goes well beyond a simple 'check status' and provides actionable operational detail.

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?

The description is four concise sentences, each carrying essential information with no redundancy. It is front-loaded with the purpose, then adds operational details. Every sentence earns its place, making it highly efficient.

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 a single parameter, no output schema, and no annotations, the description covers the most critical aspects: how to poll, when to switch to answer_mfa, and how to interpret completion. It could additionally mention timeout/error handling, but for a polling tool it is largely complete. The minor gap keeps it from a 5.

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?

The input schema already fully describes jobId as 'Job ID from create_connection or refresh_account' (100% coverage). The description adds only the context of 'connection or refresh job' without additional parameter-specific details. Per the baseline for high schema coverage, a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Check the status of a connection or refresh job.' This is a specific verb+resource pairing that distinguishes it from siblings like create_connection or answer_mfa. It also references job types and MFA handling, making its scope unmistakable.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: poll every 4-5 seconds, and if MFA fields appear, use answer_mfa instead. It also gives clear completion criteria. However, it does not explicitly state when not to use this tool, only when to switch to an alternative, so it falls just short of 'explicit when/when-not/alternatives'.

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

refresh_accountRefresh AccountA

Trigger a fresh data pull from the bank for a specific account. Returns a job ID. IMPORTANT: You must poll this job with poll_job (every 4-5 seconds) just like a new connection — the bank may require MFA during refresh. Use answer_mfa if MFA fields appear. Poll until SuccessFlag is true or false.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountIdYesAccount ID to refresh

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotation readOnlyHint=false, the description reveals critical behavioral traits: the operation is asynchronous (returns a job ID), requires polling, may trigger MFA, and must be polled until SuccessFlag is true or false. This goes well beyond the simple mutation flag and prepares the agent for the non-immediate nature of the operation.

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?

The description is three sentences long and every sentence earns its place: the first states the action and return, the second gives critical polling and MFA instructions, and the third defines the completion condition. It is front-loaded with the core purpose and includes necessary caveats without unnecessary verbosity.

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 tool with one parameter and no output schema, the description fully covers what the agent needs: the action, the returned job ID, the polling workflow, MFA handling, and the termination condition. It effectively references sibling tools (poll_job, answer_mfa) to complete the process, making it self-sufficient for correct invocation.

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?

The schema already covers accountId with a description 'Account ID to refresh,' and the description does not add extra detail about the parameter. Since schema description coverage is 100%, the baseline of 3 is appropriate—no additional semantic value is provided beyond what the schema already states.

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

Purpose5/5

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

The description clearly states the verb and resource: 'Trigger a fresh data pull from the bank for a specific account.' It also distinguishes itself from sibling tools by focusing on refreshing an existing account rather than creating or managing accounts. The explicit mention of returning a job ID further clarifies the tool's purpose.

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

Usage Guidelines4/5

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

The description provides strong usage guidance by instructing the agent to poll the job with poll_job every 4-5 seconds, and to use answer_mfa if MFA fields appear. It implicitly distinguishes from alternatives by specifying 'for a specific account' and comparing to a new connection, though it does not explicitly name alternatives like create_connection. The polling and MFA instructions are clear and actionable.

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

rename_accountRename AccountA

Set or clear a custom display name for a bank account. Pass null to restore the original name.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountIdYesAccount ID
customNameYesCustom display name, or null to restore original
userInstitutionIdYesUserInstitution ID

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, indicating a write operation. The description adds valuable behavioral context by explaining that passing null restores the original name, which goes beyond the annotation. It does not mention side effects or permissions, but the annotation covers the core mutating nature.

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?

The description is two concise sentences that immediately state the action and include a crucial usage hint. Every word earns its place, with no redundancy or unnecessary detail.

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 rename operation with three clearly described parameters and no output schema, the description sufficiently covers the tool's function and the null clearing behavior. It does not explain expected responses, but that is acceptable given the simplicity and the write-operation annotation.

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 100%, including the null semantics for customName already documented in the schema. The description repeats the null behavior but adds no new parameter-specific details, so it appropriately meets the baseline for high schema coverage.

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

Purpose5/5

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

The description uses specific verbs 'Set or clear' and identifies the exact resource 'custom display name for a bank account', clearly distinguishing it from account management and connection tools. The null behavior is also mentioned, which clarifies the full scope of the action.

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 provides a usage hint about passing null to restore the original name, but it does not explicitly state when to use this tool versus alternatives like 'manage_accounts' or 'toggle_account'. There are no exclusions or alternative recommendations, so the agent must infer context from the tool name and sibling list.

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

save_account_preferencesSave Account PreferencesA

Save account selection and custom names after connecting a bank. Called by the wizard after the user configures their accounts.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountsYesAccount preferences
institutionIdYesInstitution ID
institutionUrlNoInstitution website URL
institutionLogoNoInstitution logo URL
institutionNameYesInstitution display name
userInstitutionIdYesUserInstitution ID

TDQS

A4.2/5.0
Behavior3/5

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

Annotations only provide readOnlyHint: false, which the description aligns with by saying 'Save.' The description adds the contextual detail that this is called by the wizard, but it does not disclose additional behavioral traits such as whether existing preferences are overwritten, idempotency, or error conditions. Since the annotation already implies mutation, the added value is moderate.

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?

The description is two sentences long, front-loaded with the verb and resource, and immediately provides the call context. Every sentence adds value with no redundant 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?

Given the tool's moderate complexity (6 parameters, nested accounts array) and no output schema, the description provides essential context: what it saves and when it is invoked. It could mention side effects like overwriting existing preferences, but for a save operation in a wizard flow, the current description is reasonably 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?

While the schema has 100% description coverage, those descriptions are generic (e.g., 'Account preferences', 'Institution ID'). The tool description adds semantic meaning by explaining that the tool saves 'account selection and custom names,' which directly clarifies the purpose of the `selected` and `customName` fields. This goes beyond the schema's bare parameter names.

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

Purpose5/5

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

The description uses a specific verb ('Save') and resource ('account preferences'), and clearly specifies what is saved ('account selection and custom names'). It effectively distinguishes this from sibling tools like get_account_preferences, rename_account, and toggle_account by indicating it's the write operation for preferences after connecting a bank.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: 'Called by the wizard after the user configures their accounts' and 'after connecting a bank.' However, it does not explicitly state when not to use it or mention alternatives, so it lacks explicit exclusions or alternative references.

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

search_institutionsSearch InstitutionsB

Search for banks and financial institutions by name

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesBank or institution name

TDQS

B3.3/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 of behavioral disclosure. It states the operation and the search key, but does not explain matching semantics, result structure, case sensitivity, pagination, or whether the operation is read-only beyond what 'search' implies.

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?

The description is one concise sentence with no filler. The action and resource are front-loaded, and every word contributes to 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 simple one-parameter search tool, the description is nearly sufficient for invocation. However, with no output schema and no annotations, an agent receives no indication of the result shape or how returned institution identifiers might feed into connect_bank workflows, which is a noticeable but minor gap.

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?

The schema already fully documents the only parameter ('query' with description 'Bank or institution name'), and schema description coverage is 100%. The description restates name-based searching but adds no new meaning beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

The description uses a specific action ('Search') and resource ('banks and financial institutions'), and adds the criterion 'by name,' which gives concrete scope. This clearly distinguishes it from sibling tools that operate on connections, accounts, and transactions, even though no alternative search tool is named.

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 guidance on when to use this tool relative to siblings like connect_bank or list_connections, and it does not mention prerequisites or exclusions. The only implicit cue is that searching likely happens before connecting, but this is not stated.

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

toggle_accountToggle Account VisibilityA

Show or hide a bank account from the active list.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectedYestrue to show, false to hide
accountIdYesAccount ID
userInstitutionIdYesUserInstitution ID

TDQS

A3.8/5.0
Behavior3/5

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

The annotations declare readOnlyHint: false, indicating a write operation. The description adds that the operation affects the active list, but does not disclose persistence, permission requirements, or reversibility beyond this basic behavior. While the bar is lower due to annotations, the description provides minimal additional context.

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?

The description is a single, front-loaded sentence with no redundant information. It achieves maximum efficiency by stating the core function and scope without wasted words.

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?

This is a simple tool with three well-documented parameters and no output schema. The description explains the core function and scope ('active list') sufficiently for an agent to select and invoke it. However, it does not mention return values or prerequisites, which is a minor gap given the low complexity.

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 descriptions cover all three parameters comprehensively, including the semantics of 'selected' (true to show, false to hide). The description does not add parameter information beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Show or hide') and resource ('a bank account from the active list'). It effectively distinguishes this tool from siblings like rename_account or save_account_preferences by focusing on visibility toggling.

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 the tool is for toggling visibility but does not explicitly state when to use it instead of alternatives such as save_account_preferences or rename_account. There is no mention of exclusions or when-not conditions, leaving usage somewhat implied.

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. 15 tool updatesv1.0.0
    • First observedanswer_mfa
    • First observedconnect_bank
    • First observedcreate_connection
    • First observedget_account_preferences
    • First observedget_connection_accounts
    • First observedget_transactions
    • First observedlist_accounts
    • First observedlist_connections
    • First observedmanage_accounts
    • First observedpoll_job
    • First observedrefresh_account
    • First observedrename_account
    • First observedsave_account_preferences
    • First observedsearch_institutions
    • First observedtoggle_account

TDQS

A3.8/5.0

Scored across 15 tools

Disambiguation4/5

Most tools target distinct resources and actions. The main overlap is get_connection_accounts and list_accounts, which both list accounts for a connection, though list_accounts includes filtering and preference overrides. This is just one pair, so mostly distinct.

Naming Consistency5/5

All tools use a consistent verb_noun pattern with snake_case, such as connect_bank, poll_job, list_accounts. No mixed conventions.

Tool Count4/5

15 tools is at the upper end of the typical range but each tool addresses a specific part of the bank connection lifecycle. One redundancy (get_connection_accounts vs list_accounts) makes it slightly over-scoped.

Completeness3/5

The server covers connection creation, polling, MFA, account listing, preferences, transactions, and refresh. However, there is no tool for deleting or disconnecting a bank connection, which is a notable gap in lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes Enable Banking API tools for interacting with bank accounts through Open Banking. It enables users to authenticate sessions, list accounts, and fetch transaction history or balances via a secure self-hosted server.
    2
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for accessing and managing Banktivity personal finance data, enabling account, transaction, and budget operations through natural language.
    3
    MIT