Model Context Protocol server exposing Furlpay tools to AI coding assistants
Furlpay MCP server has critical definition gaps across all tools. Tool descriptions are present but minimal (10-20 chars baseline vs. 194 char production average). NO parameter descriptions exist, every input parameter lacks guidance on format, constraints, or purpose. Input schemas are present but incomplete: missing type annotations on string/number fields, no enums for constrained values (e.g., 'side' in place_investment_order should be enum, not free-form string). Output schemas are entirely undocumented, LLMs cannot predict response structure. Error handling is absent; no recovery guidance. Tool names follow verb_noun convention (positive), but parameter naming is inconsistent (e.g., 'address' vs 'fromToken'). Security concern: API_KEY exposed in environment without validation. Overall, definitions lack the LLM-optimization and completeness required for reliable agent composition.
Fetch the user's Safe smart account stablecoin balances and active modules.
Place a fractional stock/ETF order (Alpaca).
Get the cheapest cross-chain stablecoin swap route (Li.Fi/1inch).
AML-screen a wallet address (Chainalysis/TRM) and return a risk verdict.
Run a KYC identity check (Persona/Sumsub).
Zero parameter descriptions across all 5 tools. LLMs cannot infer what 'fromToken', 'amountIn', 'symbol', 'address', 'fullName', 'dateOfBirth', 'documentNumber' mean or what format they expect.
No output schemas documented. Agents cannot predict response structure (e.g., does get_wallet_balances return {balances: [...]} or {data: {balances: [...]}}?). Breaks downstream tool chaining.
Tool descriptions are 10-20 characters (vs. 194 char production baseline). 'Fetch the user's Safe smart account stablecoin balances and active modules' is the longest; others are vague. Insufficient for LLM tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
Missing enum constraints on constrained inputs. 'side' in place_investment_order accepts free-form strings instead of enum ['buy', 'sell']. 'fromChain' and 'toChain' in quote_swap have no validation. Invites hallucinated invalid values.
No error handling or recovery guidance. If verify_identity fails (invalid document, KYC rejection), the agent receives a raw error with no actionable next step. No distinction between retryable vs. fatal errors.