# Service Fusion MCP by usefulapi (io.usefulapi/service-fusion): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/io.usefulapi%2Fservice-fusion/versions/latest)
- Connected to: https://service-fusion.usefulapi.io/mcp
- Homepage: https://usefulapi.io/service-fusion/
- Repository: https://github.com/m190/usefulapi-mcp
- Scoring rules: v2
- Tools: 26
- Average: 49.1 / 100 (Cloudy)
- Near-identical pairs: 0

This page shows how Service Fusion MCP by usefulapi (io.usefulapi/service-fusion)'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

- Minor: 26 tools. Above 25, models start to tell tools apart less well.

## Tools

- `servicefusion_create_job`: 39 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: contact_first_name, contact_last_name, street_1, street_2, city, state_prov, postal_code, location_name, is_gated, gate_instructions, project, phase, po_number, contract, note_to_customer, custom_fields[].name, custom_fields[].value, techs_assigned[].id, techs_assigned[].first_name, techs_assigned[].last_name, tasks, tasks[].description, tasks[].is_completed, notes[].notes, products, products[].name, products[].description, products[].rate, products[].cost, products[].is_show_rate_items, products[].tax, services, services[].name, services[].description, services[].rate, services[].cost, services[].is_show_rate_items, services[].tax, other_charges, other_charges[].other_charge, other_charges[].name, other_charges[].rate, other_charges[].is_percentage, check_number, priority, completion_notes, payment_type, customer_payment_terms, called_in_by, is_requires_follow_up.
  - Minor: The meaning of the boolean argument is_gated is unclear.
  - Minor: The meaning of the boolean argument tasks[].is_completed is unclear.
  - Minor: The meaning of the boolean argument products[].is_show_rate_items is unclear.
  - Minor: The meaning of the boolean argument services[].is_show_rate_items is unclear.
  - Minor: The meaning of the boolean argument other_charges[].is_percentage is unclear.
  - Minor: The meaning of the boolean argument is_requires_follow_up is unclear.
  - Minor: Says nothing about what it returns.
- `servicefusion_create_estimate`: 40 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: contact_first_name, contact_last_name, street_1, street_2, city, state_prov, postal_code, location_name, is_gated, gate_instructions, project, phase, po_number, contract, note_to_customer, custom_fields[].name, custom_fields[].value, techs_assigned[].id, techs_assigned[].first_name, techs_assigned[].last_name, tasks, tasks[].description, tasks[].is_completed, notes[].notes, products, products[].name, products[].description, products[].rate, products[].cost, products[].is_show_rate_items, products[].tax, services, services[].name, services[].description, services[].rate, services[].cost, services[].is_show_rate_items, services[].tax, other_charges, other_charges[].other_charge, other_charges[].name, other_charges[].rate, other_charges[].is_percentage, tags[].tag.
  - Minor: The meaning of the boolean argument is_gated is unclear.
  - Minor: The meaning of the boolean argument tasks[].is_completed is unclear.
  - Minor: The meaning of the boolean argument products[].is_show_rate_items is unclear.
  - Minor: The meaning of the boolean argument services[].is_show_rate_items is unclear.
  - Minor: The meaning of the boolean argument other_charges[].is_percentage is unclear.
  - Minor: Says nothing about what it returns.
- `servicefusion_get_calendar_task`: 41 / 100
  - Major: The description only restates the name (8 words).
  - 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: calendar_task_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_get_invoice`: 41 / 100
  - Major: The description only restates the name (7 words).
  - 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: invoice_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_create_customer`: 42 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: account_number, credit_rating, labor_charge_type, labor_charge_default_rate, is_bill_for_drive_time, is_vip, referral_source, discount, discount_type, payment_type, payment_terms, assigned_contract, industry, is_taxable, tax_item_name, contacts, contacts[].fname, contacts[].lname, contacts[].prefix, contacts[].suffix, contacts[].job_title, contacts[].department, contacts[].is_primary, contacts[].phones, contacts[].phones[].phone, contacts[].phones[].ext, contacts[].phones[].type, contacts[].emails, contacts[].emails[].email, contacts[].emails[].class, contacts[].emails[].types_accepted, locations, locations[].street_1, locations[].street_2, locations[].city, locations[].state_prov, locations[].postal_code, locations[].country, locations[].nickname, locations[].gate_instructions, locations[].location_type, locations[].is_primary, locations[].is_gated, locations[].is_bill_to, custom_fields[].name, custom_fields[].value.
  - Minor: The meaning of the boolean argument is_bill_for_drive_time is unclear.
  - Minor: The meaning of the boolean argument is_vip is unclear.
  - Minor: The meaning of the boolean argument is_taxable is unclear.
  - Minor: The meaning of the boolean argument contacts[].is_primary is unclear.
  - Minor: The meaning of the boolean argument locations[].is_primary is unclear.
  - Minor: The meaning of the boolean argument locations[].is_gated is unclear.
  - Minor: The meaning of the boolean argument locations[].is_bill_to is unclear.
  - Minor: Says nothing about what it returns.
- `servicefusion_list_payment_types`: 42 / 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.
- `servicefusion_get_crew`: 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.
  - Minor: Required identifiers whose description does not say where the value comes from: crew_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_get_tech`: 45 / 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: tech_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_list_tech_departments`: 46 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Says nothing about what it returns.
- `servicefusion_get_customer`: 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: customer_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_get_customer_equipment`: 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: customer_id, equipment_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_get_estimate`: 49 / 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: estimate_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_get_job`: 49 / 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: job_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_list_crews`: 49 / 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.
- `servicefusion_list_estimates`: 49 / 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.
- `servicefusion_list_techs`: 49 / 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.
- `servicefusion_get_me`: 51 / 100
  - Minor: Says nothing about what it returns.
- `servicefusion_list_jobs`: 51 / 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.
- `servicefusion_list_customer_equipment`: 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: customer_id. Name the tool or the place that returns it, or models look it up first.
- `servicefusion_list_customers`: 52 / 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.
- `servicefusion_list_job_categories`: 56 / 100
  - 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.
- `servicefusion_list_job_statuses`: 56 / 100
  - 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.
- `servicefusion_list_sources`: 56 / 100
  - 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.
- `servicefusion_list_calendar_tasks`: 57 / 100
  - Minor: No `required` list, so every argument is optional.
  - Minor: Says nothing about what it returns.
- `servicefusion_get_availability`: 60 / 100
  - Minor: Says nothing about what it returns.
- `servicefusion_list_invoices`: 62 / 100
  - Minor: No `required` list, so every argument is optional.
  - 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)
