Example implementations and scripts demonstrating the Koko Finance API for credit card analysis, comparison, recommendations, and portfolio management
This is an example repository demonstrating Koko Finance API usage, not a production MCP server. Tool definitions are present with schemas and descriptions, but lack depth. All 7 tools have basic descriptions (avg ~80 chars) and input schemas with type definitions. However, descriptions are generic and lack LLM-optimization guidance (e.g., 'when to use', 'prerequisites', 'what it returns'). No output schemas documented. Error handling is absent, no guidance on retryability, user-fixable errors, or recovery paths. Parameter descriptions are minimal; several lack context (e.g., 'benefit_selections' array items are strings but no enum or format guidance). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Naming is verb-forward (compare_, recommend_, check_, analyze_, which_, merchant_, get_) but some are vague ('which_card_at_merchant' vs 'recommend_card_at_merchant'). This reads as a reference implementation, not a hardened production tool.
Analyze a credit card portfolio with card names, spending data, benefit selections, and point balances for full value breakdown
Check if a credit card is worth renewing at annual fee time. Pass benefit_selections to specify which benefits the user actually uses (selected count at 100%, unselected at 0%).
Compare two or three credit cards side-by-side
Discover valid benefit keys and categories for use in analysis. Returns all valid benefit keys that can be used in benefit_selections parameter.
Check card credits at a merchant and get earning recommendation. Returns which of your cards have credits at a specific merchant (e.g. Saks, Uber, Disney+) and which card earns the most there.
Find the best credit card for a spending category
No output schemas documented. LLMs cannot plan downstream calls or extract structured data from responses.
Descriptions lack LLM-optimization guidance. Missing 'when to use', prerequisites, and return value hints. Avg length ~80 chars; baseline is 194 chars for A+ tools.
No error handling guidance. Tools do not indicate retryability, user-fixable errors, or recovery paths. LLMs cannot self-correct on failure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Which card to use at a specific merchant. Auto-detects spending category from merchant name and ranks portfolio cards by reward value.
Parameter 'benefit_selections' (array of strings) lacks enum or format constraints. LLMs may hallucinate invalid benefit keys. No guidance on valid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY but this is not declared in schema.