The server defines 12 tools with basic schemas and descriptions, but has significant quality gaps. All tools have descriptions (positive), but many lack sufficient detail about when to use them vs. alternatives, what they return, or dependencies. Input schemas are visible and typed, but several parameters lack descriptions or have minimal guidance. The `create_link_token` tool has an empty input schema (`{}`), which is a critical issue. Output schemas are not documented, LLMs cannot predict return structures. Parameters use free-form strings where enums would be appropriate (e.g., direction in enrich_transactions could be an enum INFLOW|OUTFLOW). Descriptions are often under 50 characters, well below the production baseline of 194 chars. Error handling guidance is absent, tools do not explain what to do if an item_id is invalid. No evidence of idempotency hints, confirmation patterns, or recovery guides. Tool composition is reasonable (clear verb_noun naming: get_*, create_*, list_*), but missing output-chaining references (e.g., does create_link_token return something subsequent tools need?). Security is not addressed in tool design (secrets appear to be server-side per the code review, but this is not documented in tool metadata). Overall, this is a functional but minimally polished tool set typical of a community server, not production-grade.
Create a Plaid Link token for account linking. This token is used to initialize the Plaid Link UI for connecting a bank account.
Download a bank statement as a PDF
Enrich transaction data with merchant and category information
Exchange a Plaid public token for an access token. Called after user completes Plaid Link flow.
Get accounts for a connected item
Get account balances for a connected item
create_link_token has an empty input schema ({}). Critical tooling issue: LLMs expect a documented schema even for zero-parameter tools; empty schemas violate JSON Schema conventions and confuse schema validators.
Output schemas are not documented anywhere in tool definitions. LLMs cannot predict return structures, preventing them from planning downstream tool calls or extracting the right fields. This violates the documented-output-schema pattern.
Tool descriptions are too short and lack actionable guidance. Average description length is ~50 chars, well below the 194-char production baseline. Descriptions do not explain WHEN to use each tool vs. alternatives (e.g., get_transactions vs. get_recurring_transactions distinction is unclear).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | 2024-11-05+ | v1 |
Get investment holdings for a connected item
Get recurring transaction streams for a connected item
Get transactions for a connected item
List all stored bank connections
List available statements for a connected item
Refresh bank statements for a date range
Multiple parameters lack descriptions. E.g., 'account_ids' in get_transactions and get_recurring_transactions has a description but direction parameter in enrich_transactions is implied (INFLOW/OUTFLOW) without explicit enum declaration. Free-form strings invite hallucinated values.
No error handling guidance. Tools do not explain what happens if item_id is invalid, if date formats are wrong, or how to recover. LLMs receive no actionable recovery path.
Parameters accepting known enums are not constrained. E.g., 'direction' in enrich_transactions transactions array should be an enum (INFLOW, OUTFLOW); 'account_type' and 'account_subtype' are free-form strings that should be enums or validated.
No pagination documentation. Tools like list_items, list_statements, and get_transactions mention optional limit params but do not document total_count, next_cursor, or pagination strategy. Large result sets could blow context windows.
Tool composition assumes implicit knowledge. The flow create_link_token → exchange_public_token → subsequent tools is not documented. LLMs don't know that create_link_token output is needed for exchange_public_token input.
No idempotency hints or confirmation patterns for write operations (exchange_public_token, refresh_statements). Agents retrying on ambiguous failures could create duplicate items or refresh statements multiple times.