# Hail (io.github.hail-hq/hail-mcp): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/io.github.hail-hq%2Fhail-mcp/versions/latest)
- Connected to: https://mcp.hail.so
- Homepage: https://hail.so/mcp
- Repository: https://github.com/hail-hq/hail
- Scoring rules: v2
- Tools: 38
- Average: 61.5 / 100 (Cloudy)
- Near-identical pairs: 0

This page shows how Hail (io.github.hail-hq/hail-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

- Minor: 38 tools. Above 25, models start to tell tools apart less well.
- Minor: The server has no instructions. Say there, once, what the server is for and when to use it: Claude Code and Gemini CLI read the instructions before the tool descriptions.

## Tools

- `get_sms`: 45 / 100
  - Major: Arguments without a description: sms_id.
  - Minor: String arguments with no constraint or example: sms_id.
  - Minor: Required identifiers whose description does not say where the value comes from: sms_id. Name the tool or the place that returns it, or models look it up first.
- `list_sms`: 45 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: cursor, limit, status, to.
  - Minor: No `required` list, so every argument is optional.
- `get_agent`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: agent_id.
  - Minor: String arguments with no constraint or example: agent_id.
- `get_number`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: number_id.
  - Minor: String arguments with no constraint or example: number_id.
- `route_number`: 50 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: number_id, voice_agent_id, sms_agent_id, clear_voice, clear_sms.
  - Minor: String arguments with no constraint or example: number_id.
  - Minor: The meaning of the boolean argument clear_voice is unclear.
  - Minor: The meaning of the boolean argument clear_sms is unclear.
- `get_email_attachment`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: email_id, attachment_id.
  - Minor: String arguments with no constraint or example: email_id, attachment_id.
- `get_email_raw`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: email_id.
  - Minor: String arguments with no constraint or example: email_id.
  - Minor: Required identifiers whose description does not say where the value comes from: email_id. Name the tool or the place that returns it, or models look it up first.
- `cancel_verification`: 55 / 100
  - Major: Arguments without a description: verification_id.
  - Minor: String arguments with no constraint or example: verification_id.
  - Minor: Required identifiers whose description does not say where the value comes from: verification_id. Name the tool or the place that returns it, or models look it up first.
- `create_contact`: 55 / 100
  - Major: Arguments without a description: name, phone_e164, email.
  - Minor: String arguments with no constraint or example: name.
- `get_call`: 55 / 100
  - Major: Arguments without a description: call_id.
  - Minor: String arguments with no constraint or example: call_id.
  - Major: The name is made of generic words only.
  - Minor: Required identifiers whose description does not say where the value comes from: call_id. Name the tool or the place that returns it, or models look it up first.
- `get_email`: 55 / 100
  - Major: Arguments without a description: email_id.
  - Minor: String arguments with no constraint or example: email_id.
  - Minor: Required identifiers whose description does not say where the value comes from: email_id. Name the tool or the place that returns it, or models look it up first.
- `get_verification`: 55 / 100
  - Major: Arguments without a description: verification_id.
  - Minor: String arguments with no constraint or example: verification_id.
- `list_calls`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: cursor, limit, status, to.
  - Minor: No `required` list, so every argument is optional.
- `list_contacts`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: q, limit.
  - Minor: No `required` list, so every argument is optional.
- `list_numbers`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: limit, cursor.
  - Minor: No `required` list, so every argument is optional.
- `update_agent`: 55 / 100
  - Major: Arguments without a description: agent_id, name, system_prompt, first_message, ai_disclosure, recording_enabled, ai_disclosure_line, language, voice_id, tools, max_duration_seconds, handover_max_duration_seconds, voice_enabled, sms_enabled, status, handover_contacts, clear_fields.
  - Minor: String arguments with no constraint or example: agent_id.
  - Minor: Required identifiers whose description does not say where the value comes from: agent_id. Name the tool or the place that returns it, or models look it up first.
- `list_emails`: 60 / 100
  - Major: Arguments without a description: cursor, limit, status, direction.
  - Minor: No `required` list, so every argument is optional.
- `lookup_contact`: 60 / 100
  - Major: Arguments without a description: query.
  - Minor: String arguments with no constraint or example: query.
- `upload_email_attachment`: 60 / 100
  - Major: Arguments without a description: content_base64, filename, content_type.
  - Minor: String arguments with no constraint or example: content_base64, filename, content_type.
- `confirm_verification`: 62 / 100
  - Major: Arguments without a description: verification_id, code.
  - Minor: String arguments with no constraint or example: verification_id, code.
- `get_events`: 62 / 100
  - Major: Arguments without a description: id, kind, cursor, limit.
  - Minor: No `required` list, so every argument is optional.
- `list_verifications`: 62 / 100
  - Major: Arguments without a description: purpose.
  - Minor: No `required` list, so every argument is optional.
- `delete_agent`: 63 / 100
  - Major: Arguments without a description: agent_id, confirm_name.
  - Minor: String arguments with no constraint or example: agent_id, confirm_name.
  - Minor: Required identifiers whose description does not say where the value comes from: agent_id. Name the tool or the place that returns it, or models look it up first.
- `acquire_number`: 65 / 100
  - Major: Arguments without a description: quote_id, country_code, number_type, confirm_total_cents, idempotency_key, subject_type, verification_id.
  - Minor: String arguments with no constraint or example: quote_id, country_code, number_type.
- `get_email_events`: 65 / 100
  - Major: Arguments without a description: email_id, cursor, limit.
  - Minor: String arguments with no constraint or example: email_id.
  - Minor: Required identifiers whose description does not say where the value comes from: email_id. Name the tool or the place that returns it, or models look it up first.
- `list_email_domains`: 67 / 100
  - Major: Arguments without a description: cursor, limit.
  - Minor: No `required` list, so every argument is optional.
- `create_agent`: 68 / 100
  - Major: Arguments without a description: name, system_prompt, first_message, ai_disclosure, recording_enabled, ai_disclosure_line, language, voice_id, tools, max_duration_seconds, handover_max_duration_seconds, voice_enabled, sms_enabled, handover_contacts.
  - Minor: String arguments with no constraint or example: name, system_prompt.
  - Minor: The meaning of the boolean argument ai_disclosure is unclear.
  - Minor: The meaning of the boolean argument voice_enabled is unclear.
  - Minor: The meaning of the boolean argument sms_enabled is unclear.
- `release_number`: 68 / 100
  - Major: Arguments without a description: number_id, confirm_e164.
  - Minor: String arguments with no constraint or example: number_id, confirm_e164.
- `get_email_stats`: 69 / 100
  - Major: Arguments without a description: from_, to, bucket.
  - Minor: No `required` list, so every argument is optional.
- `get_verification_requirements`: 69 / 100
  - Major: Arguments without a description: country_code, number_type, subject_type, quote_id, number_id, purpose.
  - Minor: String arguments with no constraint or example: country_code, number_type, subject_type.
- `submit_verification`: 70 / 100
  - Major: Arguments without a description: country_code, number_type, fields, documents, files, attest_authorized, subject_type, address, quote_id, number_id, purpose.
  - Minor: String arguments with no constraint or example: country_code, number_type.
  - Minor: The meaning of the boolean argument attest_authorized is unclear.
- `list_agents`: 72 / 100
  - Major: Says nothing about when to use it, or when not to.
- `list_number_regions`: 72 / 100
  - Major: Says nothing about when to use it, or when not to.
- `place_call`: 72 / 100
  - Minor: The description is long (468 words). It helps selection but costs steps and tokens.
  - Major: Arguments without a description: to, recipient_consent, system_prompt, llm, from_, first_message, language, ai_disclosure, recording_enabled, metadata, tools, idempotency_key, consent_source, consent_obtained_at, message_type, agent_id.
  - Minor: String arguments with no constraint or example: to.
  - Minor: The meaning of the boolean argument recipient_consent is unclear.
  - Minor: The meaning of the boolean argument ai_disclosure is unclear.
- `quote_numbers`: 73 / 100
  - Major: Arguments without a description: country_code, capabilities, number_type, area_code, city, region.
  - Minor: String arguments with no constraint or example: country_code.
- `send_email`: 75 / 100
  - Major: Arguments without a description: to, subject, recipient_consent, body_text, body_html, from_, from_name, cc, bcc, reply_to, metadata, idempotency_key, consent_source, consent_obtained_at, message_type, attachment_ids.
  - Minor: String arguments with no constraint or example: subject.
  - Minor: The meaning of the boolean argument recipient_consent is unclear.
- `send_sms`: 75 / 100
  - Major: Arguments without a description: to, body, recipient_consent, from_, metadata, idempotency_key, consent_source, consent_obtained_at, message_type.
  - Minor: String arguments with no constraint or example: to, body.
  - Minor: The meaning of the boolean argument recipient_consent is unclear.
- `whoami`: 87 / 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)
