Skip to main content
Glama

GBG Loqate - Reach

Verify Addresses (Batch)

verify_address_batch
Read-only

Verify up to 100 addresses in one call. Up to 100 records per call; the results array is in submission order and each entry carries its input index, so results can be zipped back onto rows without relying on order. One bad record fails only itself — it carries an error while the rest are verified. Suggestions are not available in batch. Records are grouped by country before being sent, as Loqate recommends, so the cost is one upstream call per distinct country in the batch rather than one per call. Set detect_country to guess the country of records that do not supply one — detection runs per record, before grouping, so a mixed batch still sends each group with the right default. 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 record in the batch
addressesYesAddresses 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 record that does not supply one, from its address text, and flag the guess in that record's result. Records are then grouped by their detected country, so a mixed-country batch each gets the right default. Off by default

Schema Changelog

Changes observed during successful MCP inspections.

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

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint; the description supplies the real behavioral payload: results in submission order with an input index for zipping, per-record error isolation ('one bad record fails only itself'), the absence of suggestions, country-based grouping that changes upstream call cost to one per distinct country, and detection ordering relative to grouping.

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

Conciseness4/5

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

Front-loaded with the core capability and largely waste-free, but the country-grouping/cost sentence is dense and slightly overlaps with the detect_country explanation. Most sentences earn their place; a little compression is possible.

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

Completeness5/5

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

With no output schema, the description carries the return-value burden and does so: it describes the results array shape, ordering guarantee, embedded input index, and per-record error field. For a nested, 7-parameter batch tool this is complete enough to call correctly.

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 the baseline is 3, but the description adds genuine meaning: it explains detect_country's per-record-then-grouping ordering and the key field's role as the Loqate credential. It doesn't add anything for policy, options, verify_key or verify_url beyond what the schema already says.

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') and resource ('addresses') with the batch scope ('up to 100 addresses in one call'), which cleanly distinguishes it from the sibling verify_address. An agent can tell exactly what this tool does 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?

Conveys when this tool applies (bulk verification, up to 100 records) and notes a key limitation versus the single-record path ('Suggestions are not available in batch'), which routes an agent that needs suggestions elsewhere. It never explicitly names verify_address as the alternative for single or suggestion-bearing lookups, so it falls short of a full when/when-not statement.

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.