MCP server for zero-interest BNPL (Buy Now Pay Later) instant credit scoring and underwriting
Single tool 'execute_skill_action' has a reasonable name starting with verb, but critical gaps undermine quality. Description is 97 chars (within 10-1024 range but minimal). Input schema is present with 3 parameters, all with type and description. However, NO output schema is documented anywhere, the tool returns a complex credit decision object but LLMs have no visibility into its structure. The mcp_server.py file shows only a stub that prints a JSON status message; actual tool invocation logic is absent. Tool definition appears inferred from client.py rather than explicitly registered in the MCP server. No error handling, no validation guidance, no recovery paths. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). The server does not implement proper MCP protocol, it just prints a status and exits.
Execute credit scoring and underwriting action for zero-interest BNPL
No output schema documented. Tool returns credit decision object (credit_decision, granted_credit_line_cop, installment_amount_cop, etc.) but LLMs cannot see the structure, types, or required fields. Violates pattern:tool requirement that output schema must be documented.
Tool definition inferred from client.py, not explicitly registered in MCP server. mcp_server.py contains only a stub that prints status; no actual tool handler or schema registration visible.
No error handling or recovery guidance. Tool description does not explain what happens on invalid input (e.g. invalid national ID format, negative cart amount, zero installments). No error classification (retryable vs user-fixable vs fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
No input validation constraints documented. Parameters lack format/range guidance: user_national_id has no format pattern (Colombian ID format?), cart_amount_cop has no min/max bounds, installments_count has no range (1-12? 1-60?). Invites invalid LLM inputs.
Tool description (97 chars) is minimal and lacks context. Does not explain WHEN to use it, WHAT it returns, or any prerequisites. Does not state that this modifies credit state or has irreversible consequences. Violates pattern:tool-description baseline (avg 194 chars, p10=34, p90=392).