# Spur (com.usespur/spur): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/com.usespur%2Fspur/versions/latest)
- Connected to: https://mcp.usespur.com/mcp
- Homepage: https://usespur.com/
- Scoring rules: v2
- Tools: 87
- Average: 55.0 / 100 (Cloudy)
- Near-identical pairs: 9

This page shows how Spur (com.usespur/spur)'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: 87 tools. Above 40, models choose less accurately.
- Minor: The server's instructions are 5827 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

- `spur_save_properties`: 36 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: listings[].zpid, listings[].address, listings[].address.streetAddress, listings[].address.city, listings[].address.state, listings[].address.zipcode.
  - Minor: String arguments with no constraint or example: listings[].address.streetAddress, listings[].address.city, listings[].address.state, listings[].address.zipcode.
  - Minor: Says nothing about what it returns.
- `spur_get_campaign_stats`: 42 / 100
  - Major: The description is too short (7 words).
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: campaign_id. Name the tool or the place that returns it, or models look it up first.
- `spur_get_sms_conversation`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: owner_id. Name the tool or the place that returns it, or models look it up first.
- `spur_get_outreach_report`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: String arguments with no constraint or example: date_to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `spur_list_campaigns`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_list_letter_templates`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `spur_list_message_templates`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_list_sms_conversations`: 43 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_get_property`: 44 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_add_properties_to_list`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: list_id, property_ids. Name the tool or the place that returns it, or models look it up first.
- `spur_create_property_list`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `spur_find_owners`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `spur_get_direct_mail_analytics`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_get_owner`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: owner_id. Name the tool or the place that returns it, or models look it up first.
- `spur_get_property_stats`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_get_texting_setup`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_list_images`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_list_property_lists`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_list_search_automations`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_list_workflows`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_set_default_phone_number`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: number_id. Name the tool or the place that returns it, or models look it up first.
- `spur_create_workflow`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: steps[].type, steps[].type, steps[].type, steps[].return_address_id, steps[].type, steps[].days, steps[].hours.
  - Minor: String arguments with no constraint or example: steps[].type, steps[].type, steps[].type, steps[].return_address_id, steps[].type.
  - Minor: Says nothing about what it returns.
- `spur_list_saved_properties`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_list_postcard_templates`: 48 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `spur_delete_image`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: image_id. Name the tool or the place that returns it, or models look it up first.
- `spur_delete_qr_code`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: qr_code_id. Name the tool or the place that returns it, or models look it up first.
- `spur_get_billing_summary`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_get_workflow`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: workflow_id. Name the tool or the place that returns it, or models look it up first.
- `spur_list_qr_codes`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_manage_billing`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_preview_letter_template`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_preview_message_template`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_preview_postcard_template`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_top_up_wallet`: 49 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_save_texting_registration`: 50 / 100
  - Major: Arguments without a description: registration_type, business_info, business_info.business_type, business_info.industry, business_info.company_type, business_info.stock_ticker, business_info.stock_exchange, address, address.line2, address.city, address.postal_code, address.country, contact, contact.first_name, contact.last_name, contact.email, contact.job_title, contact.job_position, messaging, messaging.privacy_policy_url, messaging.terms_url.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_delete_letter_template`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_delete_postcard_template`: 51 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_get_automation_logs`: 51 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: automation_id. Name the tool or the place that returns it, or models look it up first.
- `spur_delete_message_template`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_enroll_owners_in_workflow`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: workflow_id, owner_ids. Name the tool or the place that returns it, or models look it up first.
- `spur_remove_postcard_qr_code`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_set_workflow_step_template`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: workflow_id, step_id, template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_show_billing_options`: 52 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_pay_texting_fees`: 54 / 100
  - Minor: Says nothing about what it returns.
- `spur_release_phone_number`: 54 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: number_id. Name the tool or the place that returns it, or models look it up first.
- `spur_enrich`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_resend_texting_verification`: 56 / 100
  - Minor: Says nothing about what it returns.
- `spur_save_uploaded_image`: 56 / 100
  - Minor: Says nothing about what it returns.
- `fetch`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `search`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
- `spur_add_postcard_qr_code`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id, qr_code_id. Name the tool or the place that returns it, or models look it up first.
- `spur_create_qr_code`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_get_qr_code_activity`: 57 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: qr_code_id. Name the tool or the place that returns it, or models look it up first.
- `spur_set_workflow_active`: 57 / 100
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: workflow_id. Name the tool or the place that returns it, or models look it up first.
- `spur_submit_texting_registration`: 57 / 100
  - Minor: Says nothing about what it returns.
- `spur_update_qr_code`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: qr_code_id. Name the tool or the place that returns it, or models look it up first.
- `spur_search_phone_numbers`: 58 / 100
  - Minor: Arguments without a description: city, limit.
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_send_test_email`: 59 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_set_auto_recharge`: 59 / 100
  - Minor: Says nothing about what it returns.
- `spur_buy_phone_number`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: The description mentions none of its 3 or more arguments.
  - Minor: Says nothing about what it returns.
- `spur_update_sms_template`: 60 / 100
  - Minor: Arguments without a description: replacements[].replace.
  - Minor: String arguments with no constraint or example: replacements[].replace.
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_check_payment`: 61 / 100
- `spur_list_return_addresses`: 61 / 100
- `spur_update_letter_template`: 61 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_create_letter_template`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `spur_preview_postcard_campaign`: 62 / 100
- `spur_send_sms`: 62 / 100
  - Minor: Says nothing about what it returns.
- `spur_preview_message_draft`: 63 / 100
  - Minor: Says nothing about what it returns.
- `spur_change_plan`: 64 / 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: plan_id. Name the tool or the place that returns it, or models look it up first.
- `spur_get_letter_template`: 64 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_get_postcard_template`: 64 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_parse_search_query`: 65 / 100
  - Minor: Says nothing about what it returns.
- `spur_run_search_automation`: 65 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: automation_id. Name the tool or the place that returns it, or models look it up first.
- `spur_send_letters`: 65 / 100
  - Minor: Says nothing about what it returns.
- `spur_send_postcards`: 65 / 100
  - Minor: Says nothing about what it returns.
- `spur_update_email_template`: 65 / 100
  - Minor: Arguments without a description: replacements[].replace.
  - Minor: String arguments with no constraint or example: replacements[].replace.
  - Minor: Says nothing about what it returns.
- `spur_draft_message`: 66 / 100
  - Major: Says nothing about when to use it, or when not to.
- `spur_preview_letter_campaign`: 66 / 100
  - Minor: The description mentions none of its 3 or more arguments.
- `spur_create_email_template`: 67 / 100
  - Minor: Says nothing about what it returns.
- `spur_create_sms_template`: 67 / 100
  - Minor: Says nothing about what it returns.
- `spur_get_message_template`: 67 / 100
  - Minor: Says nothing about what it returns.
  - Minor: Required identifiers whose description does not say where the value comes from: template_id. Name the tool or the place that returns it, or models look it up first.
- `spur_upload_image`: 69 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_search_properties`: 72 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `spur_update_postcard_template`: 75 / 100
  - Minor: Arguments without a description: replacements[].replace.
  - Minor: String arguments with no constraint or example: replacements[].replace.
  - Minor: Says nothing about what it returns.
- `spur_create_postcard_template`: 77 / 100
  - Minor: Says nothing about what it returns.
- `spur_save_image`: 79 / 100
- `spur_create_search_automation`: 80 / 100
  - Minor: Says nothing about what it returns.

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)
