# RateAPI — live US mortgage, auto, HELOC, personal & deposit rates (dev.rateapi/mcp): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/dev.rateapi%2Fmcp/versions/latest)
- Connected to: https://mcp.rateapi.dev/mcp
- Homepage: https://rateapi.dev/mcp
- Scoring rules: v2
- Tools: 89
- Average: 65.5 / 100 (Cloudy)
- Near-identical pairs: 1

This page shows how RateAPI — live US mortgage, auto, HELOC, personal & deposit rates (dev.rateapi/mcp)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Major: 89 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 5086 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `delete_scenario`: 39 / 100
  - Major: The description only restates the name (6 words).
  - Major: The description is too short (6 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `remove_campaign_recipient`: 39 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: id, recipient_id.
  - Minor: Required identifiers whose description does not say where the value comes from: id, recipient_id. Name the tool or the place that returns it, or models look it up first.
- `delete_monitor`: 42 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: monitor_id. Name the tool or the place that returns it, or models look it up first.
- `add_campaign_recipients`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: recipients[].email, recipients[].name.
  - Minor: String arguments with no constraint or example: id, recipients[].email, recipients[].name.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `unsubscribe_rate_alert`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
- `update_monitor`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: conditions[].field, conditions[].operator, conditions[].value.
  - Minor: String arguments with no constraint or example: webhook_url.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: monitor_id. Name the tool or the place that returns it, or models look it up first.
- `delete_digest`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_monitor`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Required identifiers whose description does not say where the value comes from: monitor_id. Name the tool or the place that returns it, or models look it up first.
- `get_scenario`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_scenarios`: 46 / 100
  - Major: The description only restates the name (9 words).
  - Major: Says nothing about when to use it, or when not to.
- `delete_cohort`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `get_cohort`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_decision_logs`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `list_rate_alerts`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
- `delete_email_campaign`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_rates`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: product_type, term_months, loan_program, min_apr, max_apr.
  - Minor: String arguments with no constraint or example: loan_program.
  - Minor: No `required` list, so every argument is optional.
- `compare_total_cost`: 54 / 100
  - Minor: Arguments without a description: term_months, credit_score, down_payment_percent, fees, fees.origination_percent, fees.flat_fees.
  - Minor: String arguments with no constraint or example: state.
- `generate_client_report`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `list_monitors`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `batch_decisions`: 56 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: scenarios[].product_type, scenarios[].intent, scenarios[].amount, scenarios[].term_months, scenarios[].down_payment_percent.
  - Minor: String arguments with no constraint or example: scenarios[].state.
- `get_email_branding`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_monitor_stats`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_digests`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_email_campaigns`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `estimate_affordability`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
- `estimate_monthly_cost`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
- `save_scenario`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `schedule_digest`: 58 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: cohort_id. Name the tool or the place that returns it, or models look it up first.
- `send_test_campaign`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `simulate_monitor`: 58 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `get_doc`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `set_email_branding`: 60 / 100
  - Minor: No `required` list, so every argument is optional.
- `assess_rate_lock`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: product_type, loan_amount.
  - Minor: String arguments with no constraint or example: state, lock_expiration_date.
  - Minor: The description mentions none of its 3 or more arguments.
- `generate_share_link`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_extraction_stats`: 62 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
- `list_credit_unions`: 62 / 100
  - Minor: No `required` list, so every argument is optional.
- `optimize_buydown`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `scan_portfolio`: 62 / 100
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `revoke_share`: 63 / 100
  - Major: Says nothing about when to use it, or when not to.
- `update_email_campaign`: 63 / 100
  - Minor: Arguments without a description: name, cadence, intro_text_override, status.
  - Minor: String arguments with no constraint or example: id, name, intro_text_override.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `list_webhook_deliveries`: 65 / 100
  - Minor: Arguments without a description: limit, offset.
  - Minor: No `required` list, so every argument is optional.
- `send_campaign_now`: 65 / 100
  - Minor: String arguments with no constraint or example: id.
  - Minor: Required identifiers whose description does not say where the value comes from: id. Name the tool or the place that returns it, or models look it up first.
- `simulate_decision`: 65 / 100
- `check_advice_guardrails`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_deposit_beta`: 67 / 100
  - Major: Arguments without a description: term_months, window, group_by, benchmark.
- `get_product_access_envelopes`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `list_cohorts`: 67 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_deposit_benchmarks`: 68 / 100
  - Minor: No `required` list, so every argument is optional.
- `get_eligibility_changes`: 68 / 100
- `get_league_table`: 68 / 100
  - Major: Says nothing about when to use it, or when not to.
- `get_usage`: 68 / 100
- `max_loan`: 68 / 100
  - Major: Says nothing about when to use it, or when not to.
- `search_eligibility_entities`: 68 / 100
- `build_amortization_schedule`: 69 / 100
- `get_personal_access_catalog`: 69 / 100
- `get_rate_history`: 69 / 100
  - Major: Says nothing about when to use it, or when not to.
- `create_email_campaign`: 70 / 100
  - Minor: String arguments with no constraint or example: name.
- `get_coverage`: 70 / 100
- `project_pmi_removal`: 70 / 100
- `save_cohort`: 70 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
- `create_monitor`: 72 / 100
- `get_benchmarks`: 72 / 100
  - Minor: No `required` list, so every argument is optional.
- `list_shares`: 72 / 100
- `subscribe_rate_alert`: 72 / 100
- `deliver_test_webhook`: 73 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Required identifiers whose description does not say where the value comes from: monitor_id. Name the tool or the place that returns it, or models look it up first.
- `find_product_rates_near_zip`: 73 / 100
- `resolve_eligibility_entities`: 73 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `create_competitor_monitor`: 74 / 100
  - Minor: Arguments without a description: conditions.change_direction.
  - Minor: String arguments with no constraint or example: loan_program, webhook_url.
  - Minor: The description mentions none of its 3 or more arguments.
- `compare_reachable_offers`: 75 / 100
- `explain_ranking`: 76 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `get_rate_delta`: 76 / 100
- `refinance_break_even`: 77 / 100
  - Minor: String arguments with no constraint or example: state.
  - Minor: The description mentions none of its 3 or more arguments.
- `assess_buy_timing`: 78 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `get_credit_union`: 78 / 100
- `find_reachable_offers`: 79 / 100
  - Minor: Arguments without a description: person.relative_memberships[].status.
- `scan_savings`: 80 / 100
- `get_eligibility_coverage`: 82 / 100
- `compare_products`: 83 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `find_credit_unions_near_zip`: 83 / 100
- `evaluate_eligibility_cohort`: 84 / 100
- `check_competitive_position`: 85 / 100
- `search_docs`: 85 / 100
- `check_membership_eligibility`: 87 / 100
  - Minor: The description is long (445 words). It helps selection but costs steps and tokens.
  - Minor: Arguments without a description: relative_memberships[].status.
  - Minor: Required identifiers whose description does not say where the value comes from: credit_union_ids. Name the tool or the place that returns it, or models look it up first.
- `compare_personal_access_catalogs`: 87 / 100
  - Minor: Arguments without a description: products, limit_per_product, total_limit.
- `analyze_rent_vs_buy`: 88 / 100
- `get_financing_decision`: 88 / 100
- `find_eligible_credit_unions`: 89 / 100
  - Minor: The description is long (644 words). It helps selection but costs steps and tokens.
  - Minor: Arguments without a description: relative_memberships[].status.
  - Minor: No `required` list, so every argument is optional.
- `extract_eligibility_facts`: 90 / 100
- `rate_sanity_check`: 93 / 100

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
