Skip to main content
Glama

HubVibe: Pay-per-Call Agent Tools: Web Search, Email Verify, KYC Screening, Stocks, Crypto, News

Verify an email address before you send

hubvibe_email_verify
Read-onlyIdempotent

Email verification / email validation: will mail to this address arrive? Checked live at the source: syntax, the domain's DNS (MX, null MX, no such domain) and its own mail server, asked whether the mailbox exists and whether it accepts any address (catch-all). No message sent. Flags disposable domains, role accounts (info@), free providers and typos (gmial.com). Verdict: deliverable, undeliverable, risky or unknown, with the reason. Input: email. $0.02 per call. Returns: email, normalized, local_part, domain, domain_ascii, verdict, reason, syntax_valid, domain_exists, accepts_mail, mx[{host, priority}], mail_provider, mailbox{checked, exists, catch_all, smtp_code, smtp_message, mx_host}, disposable, role_account, free_provider, did_you_mean, disposable_list_as_of, notes[], checked_at.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
emailYesOne email address, such as jane@example.com.
languageNoOptional BCP-47 language tag (en, ja, ko, pt-BR): the human-readable strings of the result (notes, details, reasons) are translated into this language; data, codes, numbers and URLs are untouched. Default: as produced.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
statusYes
workerYes
price_usdYes
provenanceYes
receipt_idYes
attributionNo
receipt_urlYes
billing_warningNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changed
    • removedOutput schema / description
      Removed value: -"The 200 body of every paid /work call. `result` is the worker's own output (its schema is per route); everything else is the same on every /work route. A receipt for the job is at `receipt_url`."
    • removedOutput schema / properties / attribution / description
      Removed value: -"Present only when the result's text was machine-translated: the credit to show with it."
    • removedOutput schema / properties / attribution / items / description
      Removed value: -"A credit."
    • removedOutput schema / properties / attribution / items / properties
      Removed value: -{
      -  "text": {
      -    "description": "Credit.",
      -    "examples": [
      -      "Translated by Google"
      -    ],
      -    "type": "string"
      -  },
      -  "url": {
      -    "description": "Link.",
      -    "examples": [
      -      "https://translate.google.com"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / attribution / items / required
      Removed value: -[
      -  "text",
      -  "url"
      -]
    • removedOutput schema / properties / attribution / items / type
      Removed value: -"object"
    • removedOutput schema / properties / billing_warning / description
      Removed value: -"Present only when the charge was recorded with a caveat."
    • removedOutput schema / properties / billing_warning / examples
      Removed value: -[
      -  "settlement pending"
      -]
    • removedOutput schema / properties / price_usd / description
      Removed value: -"What this call cost, in USD."
    • removedOutput schema / properties / price_usd / examples
      Removed value: -[
      -  0.02
      -]
    • removedOutput schema / properties / provenance / description
      Removed value: -"How the result was produced: which providers ran and how long each took."
    • removedOutput schema / properties / provenance / properties
      Removed value: -{
      -  "attempts": {
      -    "description": "Provider attempts made, including retries and failovers.",
      -    "examples": [
      -      1
      -    ],
      -    "type": "integer"
      -  },
      -  "elapsed_ms": {
      -    "description": "Wall-clock milliseconds for the whole job.",
      -    "examples": [
      -      340
      -    ],
      -    "type": "integer"
      -  },
      -  "providers_used": {
      -    "description": "Providers that served the job.",
      -    "examples": [
      -      [
      -        "coinbase-advanced-trade-public"
      -      ]
      -    ],
      -    "items": {
      -      "description": "Provider name.",
      -      "examples": [
      -        "coinbase-advanced-trade-public"
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "steps": {
      -    "description": "Every step the job ran, in order.",
      -    "items": {
      -      "description": "One step of the job.",
      -      "properties": {
      -        "ms": {
      -          "description": "Milliseconds the step took.",
      -          "examples": [
      -            312
      -          ],
      -          "type": "integer"
      -        },
      -        "ok": {
      -          "description": "Whether the step succeeded.",
      -          "examples": [
      -            true
      -          ],
      -          "type": "boolean"
      -        },
      -        "provider": {
      -          "description": "Provider that served the step.",
      -          "examples": [
      -            "coinbase-advanced-trade-public"
      -          ],
      -          "type": "string"
      -        },
      -        "reason": {
      -          "description": "Failure reason, on a failed step.",
      -          "examples": [
      -            "provider_timeout"
      -          ],
      -          "type": "string"
      -        },
      -        "step": {
      -          "description": "Step name inside the worker.",
      -          "examples": [
      -            "quote"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "step",
      -        "ok",
      -        "ms"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  }
      -}
    • removedOutput schema / properties / provenance / required
      Removed value: -[
      -  "steps",
      -  "providers_used",
      -  "attempts",
      -  "elapsed_ms"
      -]
    • removedOutput schema / properties / receipt_id / description
      Removed value: -"Receipt id for this job."
    • removedOutput schema / properties / receipt_id / examples
      Removed value: -[
      -  "rcpt_9f1c2b3a4d5e6f70"
      -]
    • removedOutput schema / properties / receipt_url / description
      Removed value: -"Where to fetch the machine-readable receipt (free, no payment)."
    • removedOutput schema / properties / receipt_url / examples
      Removed value: -[
      -  "/work/receipts/rcpt_9f1c2b3a4d5e6f70"
      -]
    • removedOutput schema / properties / result / properties
      Removed value: -{
      -  "accepts_mail": {
      -    "description": "The domain has somewhere to deliver mail (MX or address fallback); null when not looked up.",
      -    "examples": [
      -      true
      -    ],
      -    "type": [
      -      "boolean",
      -      "null"
      -    ]
      -  },
      -  "checked_at": {
      -    "description": "When this node read the source (UTC). Nothing here is cached.",
      -    "examples": [
      -      "2026-09-26T18:00:00Z"
      -    ],
      -    "format": "date-time",
      -    "type": "string"
      -  },
      -  "did_you_mean": {
      -    "description": "A likely intended address when the domain looks like a typo of a common provider.",
      -    "examples": [
      -      "jane@gmail.com"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "disposable": {
      -    "description": "The domain is a known throwaway-mail domain.",
      -    "examples": [
      -      false
      -    ],
      -    "type": "boolean"
      -  },
      -  "disposable_list_as_of": {
      -    "description": "Date of the disposable-domain list used.",
      -    "examples": [
      -      "2026-09-28"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "domain": {
      -    "description": "The domain as given.",
      -    "examples": [
      -      "github.com"
      -    ],
      -    "type": "string"
      -  },
      -  "domain_ascii": {
      -    "description": "The domain in ASCII (punycode for internationalised names); null when invalid.",
      -    "examples": [
      -      "github.com"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "domain_exists": {
      -    "description": "The domain exists in DNS; null when not looked up.",
      -    "examples": [
      -      true
      -    ],
      -    "type": [
      -      "boolean",
      -      "null"
      -    ]
      -  },
      -  "email": {
      -    "description": "The address as given.",
      -    "examples": [
      -      "support@github.com"
      -    ],
      -    "type": "string"
      -  },
      -  "free_provider": {
      -    "description": "A free consumer mail provider (gmail.com, outlook.com...).",
      -    "examples": [
      -      false
      -    ],
      -    "type": "boolean"
      -  },
      -  "local_part": {
      -    "description": "The part before @.",
      -    "examples": [
      -      "support"
      -    ],
      -    "type": "string"
      -  },
      -  "mail_provider": {
      -    "description": "Who runs the domain's mail (google, microsoft, yahoo, zoho, proton, amazon_ses...); null when not recognised.",
      -    "examples": [
      -      "google"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "mailbox": {
      -    "description": "What the mail server said.",
      -    "properties": {
      -      "catch_all": {
      -        "description": "The server also accepted a random address on the domain; null when not tested.",
      -        "examples": [
      -          false
      -        ],
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "checked": {
      -        "description": "The mail server gave a yes-or-no answer about the mailbox.",
      -        "examples": [
      -          true
      -        ],
      -        "type": "boolean"
      -      },
      -      "exists": {
      -        "description": "The mailbox exists; null when it could not be proved.",
      -        "examples": [
      -          true
      -        ],
      -        "type": [
      -          "boolean",
      -          "null"
      -        ]
      -      },
      -      "mx_host": {
      -        "description": "The mail server that answered.",
      -        "examples": [
      -          "aspmx.l.google.com"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "smtp_code": {
      -        "description": "The server's reply code to the mailbox question.",
      -        "examples": [
      -          250
      -        ],
      -        "type": [
      -          "integer",
      -          "null"
      -        ]
      -      },
      -      "smtp_message": {
      -        "description": "The server's reply text, trimmed.",
      -        "examples": [
      -          "2.1.5 OK"
      -        ],
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "checked",
      -      "exists",
      -      "catch_all",
      -      "smtp_code",
      -      "smtp_message",
      -      "mx_host"
      -    ],
      -    "type": "object"
      -  },
      -  "mx": {
      -    "description": "The domain's mail servers, in the order mail tries them.",
      -    "examples": [
      -      []
      -    ],
      -    "items": {
      -      "description": "One mail server.",
      -      "properties": {
      -        "host": {
      -          "description": "Mail server host.",
      -          "examples": [
      -            "aspmx.l.google.com"
      -          ],
      -          "type": "string"
      -        },
      -        "priority": {
      -          "description": "MX preference (lower is tried first).",
      -          "examples": [
      -            1
      -          ],
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "host",
      -        "priority"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  "normalized": {
      -    "description": "Local part with the domain lower-cased and punycoded; null when the syntax is invalid.",
      -    "examples": [
      -      "support@github.com"
      -    ],
      -    "type": [
      -      "string",
      -      "null"
      -    ]
      -  },
      -  "notes": {
      -    "description": "Caveats; empty when none.",
      -    "examples": [
      -      []
      -    ],
      -    "items": {
      -      "description": "A caveat.",
      -      "examples": [
      -        "Role address: it usually reaches a team or a shared inbox, not one person."
      -      ],
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  "reason": {
      -    "description": "Why the verdict is what it is.",
      -    "enum": [
      -      "mailbox_exists",
      -      "invalid_syntax",
      -      "domain_not_found",
      -      "domain_accepts_no_mail",
      -      "no_mail_server",
      -      "mailbox_not_found",
      -      "disposable_domain",
      -      "accept_all_domain",
      -      "smtp_refused",
      -      "smtp_try_later",
      -      "smtp_unreachable",
      -      "smtp_inconclusive"
      -    ],
      -    "examples": [
      -      "mailbox_exists"
      -    ],
      -    "type": "string"
      -  },
      -  "role_account": {
      -    "description": "The local part is a role (info, sales, support...), not a person.",
      -    "examples": [
      -      true
      -    ],
      -    "type": "boolean"
      -  },
      -  "syntax_valid": {
      -    "description": "The address is well-formed.",
      -    "examples": [
      -      true
      -    ],
      -    "type": "boolean"
      -  },
      -  "verdict": {
      -    "description": "deliverable: the mail server confirmed the mailbox. undeliverable: bad syntax, no such domain, no mail server, or no such mailbox. risky: disposable domain or a server that accepts every address. unknown: the server would not say.",
      -    "enum": [
      -      "deliverable",
      -      "undeliverable",
      -      "risky",
      -      "unknown"
      -    ],
      -    "examples": [
      -      "deliverable"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedOutput schema / properties / result / required
      Removed value: -[
      -  "email",
      -  "normalized",
      -  "local_part",
      -  "domain",
      -  "domain_ascii",
      -  "verdict",
      -  "reason",
      -  "syntax_valid",
      -  "domain_exists",
      -  "accepts_mail",
      -  "mx",
      -  "mail_provider",
      -  "mailbox",
      -  "disposable",
      -  "role_account",
      -  "free_provider",
      -  "did_you_mean",
      -  "disposable_list_as_of",
      -  "notes",
      -  "checked_at"
      -]
    • removedOutput schema / properties / status / description
      Removed value: -"Present only on a delivered result."
    • removedOutput schema / properties / worker / description
      Removed value: -"Catalog name of the worker that ran."
    • removedOutput schema / properties / worker / examples
      Removed value: -[
      -  "market.quote"
      -]
    • removedOutput schema / title
      Removed value: -"email.verify response"
  2. Changed1 schema field changed
    • addedOutput schema / properties / attribution
      Added value: +{
      +  "description": "Present only when the result's text was machine-translated: the credit to show with it.",
      +  "items": {
      +    "description": "A credit.",
      +    "properties": {
      +      "text": {
      +        "description": "Credit.",
      +        "examples": [
      +          "Translated by Google"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Link.",
      +        "examples": [
      +          "https://translate.google.com"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "text",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  3. Added

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/destructive/idempotent annotations, it discloses real behavioral traits: checks are performed live against DNS and the mail server, no message is sent, a per-call cost of $0.02, the four possible verdicts, and the exact signals flagged (disposable, role account, catch-all, typos). This is materially more than the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and caveats are front-loaded well, but the trailing enumeration of every return field (email, normalized, local_part, domain, ... checked_at) largely duplicates the output schema and pads length without adding decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers what is checked, the verdict taxonomy, cost, and side-effect-free behavior, which is enough to call it correctly. The long return-field list is unnecessary given an output schema exists, but nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the schema already documents 'email' and the optional BCP-47 'language'. The description only restates 'Input: email' and does not mention the language parameter at all, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Email verification / email validation') and immediately frames the question it answers ('will mail to this address arrive?'), which no sibling tool does — the closest relatives (hubvibe_phone_parse, hubvibe_identity_check) operate on different inputs. An agent can select this without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The title and the framing 'before you send' make the use context explicit, and 'No message sent' clarifies the non-intrusive mode. However, it never names an alternative or states when NOT to use it (e.g., bulk list hygiene vs single-address checks), which keeps it short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.