Skip to main content
Glama

GBG Loqate - Reach

Verify Contacts (Batch)

verify_contact_batch
Read-only

Verify up to 100 contacts in one call, each with any combination of address, email and phone, returning an overall recommendation per contact. Results are in submission order and each carries its input index. One bad record fails only itself, and a field that cannot be verified does not remove the contact — the overall recommendation is drawn from whichever fields were checked. The three types run concurrently, so a full batch is paced by email at roughly 7 seconds per 100. Requires a Loqate API key — pass it via the 'key' field.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyNoLoqate API key — required unless the server has one configured or the request carries an Authorization: Bearer header
policyNoPolicy name: strict shipping standard (default) or permissive
optionsNoLoqate API options as nested JSON, applied to every address in the batch
contactsYesContacts to verify, up to 100. Results are returned in the same order, each carrying its input index
verify_keyNoCustom address verification API key
verify_urlNoCustom address verification endpoint URL
detect_countryNoWhen true, guess the country of any contact whose address does not supply one and flag the guess in that contact's address result. Off by default

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / contacts / items / properties / contact
      Added value: +{
      +  "description": "Contact name for the delivery",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / department
      Added value: +{
      +  "description": "Department within the organisation",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / forename
      Added value: +{
      +  "description": "Recipient's first name",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / full_name
      Added value: +{
      +  "description": "Recipient's full name",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / function
      Added value: +{
      +  "description": "Contact's job title or function",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / id
      Added value: +{
      +  "description": "Your own identifier for this record, echoed back by Loqate",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / middle_name
      Added value: +{
      +  "description": "Recipient's middle name",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / surname
      Added value: +{
      +  "description": "Recipient's last name",
      +  "type": "string"
      +}
  2. Changed30 schema fields changed
    • addedInput schema / properties / contacts / items / properties / address2
      Added value: +{
      +  "description": "Second address line",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / address3
      Added value: +{
      +  "description": "Third address line",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / address4
      Added value: +{
      +  "description": "Fourth address line",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / address5
      Added value: +{
      +  "description": "Fifth address line",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / address6
      Added value: +{
      +  "description": "Sixth address line",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / address7
      Added value: +{
      +  "description": "Seventh address line",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / address8
      Added value: +{
      +  "description": "Eighth address line",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / building
      Added value: +{
      +  "description": "Building name",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address
      Added value: +{
      +  "description": "Full delivery address",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address1
      Added value: +{
      +  "description": "Delivery address line 1",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address2
      Added value: +{
      +  "description": "Delivery address line 2",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address3
      Added value: +{
      +  "description": "Delivery address line 3",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address4
      Added value: +{
      +  "description": "Delivery address line 4",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address5
      Added value: +{
      +  "description": "Delivery address line 5",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address6
      Added value: +{
      +  "description": "Delivery address line 6",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address7
      Added value: +{
      +  "description": "Delivery address line 7",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / delivery_address8
      Added value: +{
      +  "description": "Delivery address line 8",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / dependent_locality
      Added value: +{
      +  "description": "Dependent locality (e.g. neighbourhood)",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / dependent_thoroughfare
      Added value: +{
      +  "description": "Dependent street name",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / double_dependent_locality
      Added value: +{
      +  "description": "Double dependent locality",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / latitude
      Added value: +{
      +  "description": "Latitude, for a reverse geocode",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / longitude
      Added value: +{
      +  "description": "Longitude, for a reverse geocode",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / organization
      Added value: +{
      +  "description": "Company or organisation name",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / post_box
      Added value: +{
      +  "description": "PO box",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / premise
      Added value: +{
      +  "description": "Premise or house number",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / sub_administrative_area
      Added value: +{
      +  "description": "Sub administrative area (e.g. county)",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / sub_building
      Added value: +{
      +  "description": "Sub-building (e.g. flat, apartment or suite)",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / sub_building_floor
      Added value: +{
      +  "description": "Floor",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / super_administrative_area
      Added value: +{
      +  "description": "Super administrative area",
      +  "type": "string"
      +}
    • addedInput schema / properties / contacts / items / properties / thoroughfare
      Added value: +{
      +  "description": "Street name",
      +  "type": "string"
      +}
  3. Added

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond readOnlyHint/openWorldHint by disclosing batch-specific traits: one bad record fails only itself, unverifiable fields do not drop a contact, the overall recommendation aggregates only checked fields, submission order/indexing, and a concrete concurrency/pacing figure (~7s per 100, email-bound). The auth requirement is also restated in plain language.

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

Conciseness5/5

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

Front-loads the batch scope, then layers failure semantics, partial-verification rules, timing, and auth in five tight sentences with no filler or repetition of the annotations.

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?

For a nested-object batch tool with no output schema, the description covers return ordering, per-record indexing, and the per-contact recommendation, which is enough to call it correctly. It stops short of describing the recommendation's possible values or how policy/options influence results, but the essentials are present.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3; the description adds task-level meaning by telling the caller to pass the Loqate key via the 'key' field, and re-anchoring the 100-item cap and index behavior in operational terms. It does not, however, explain policy/options/detect_country semantics beyond what the schema already carries.

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 (verify), resource (contacts), and scope (up to 100 per call, mixing address/email/phone), plus the return shape (an overall recommendation per contact). An agent can distinguish it from verify_contact and from the per-channel batch tools without opening a schema.

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

Usage Guidelines3/5

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

The batching scope and per-record error isolation imply the right context (many contacts, tolerate partial failures), but the description never explicitly says when to prefer this over verify_contact or the single-type batch tools, nor states prerequisites beyond the API key.

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.