Skip to main content
Glama

GBG Loqate - Reach

Verify Contact

verify_contact
Read-only

Verify address, email, and/or phone together. Returns individual results plus an overall recommendation (most conservative of all provided fields). Set 'suggest' to also get alternative addresses suggested by Loqate whenever the address does not clear the policy; offer them to the user and verify the chosen one in a second call before treating it as good. Suggestions require a separately licensed Loqate feature enabled on the account — without it, verification still succeeds and the problem is reported in suggestions.error. Requires a Loqate API key — pass it via the 'key' field.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoYour own identifier for this record, echoed back by Loqate
keyNoLoqate API key — required unless the server has one configured or the request carries an Authorization: Bearer header
emailNoEmail address to verify
phoneNoPhone number to verify
policyNoPolicy name: strict shipping standard (default) or permissive
addressNoFull address string
contactNoContact name for the delivery
countryNoISO 2-letter country code
optionsNoLoqate API options as nested JSON, e.g. {"ServerOptions": {"FieldStatus": "true"}}. Dot notation is equivalent: {"ServerOptions.FieldStatus": "true"}. Pass GeoCode here as a boolean — it is sent at the request root where Loqate expects it. In-Options booleans (Certify Version Enhance Deceased Goneaways) take JSON booleans; ServerOptions values (e.g. OutputCasing DefaultCountry) are strings. Set ServerOptions.FieldStatus to "true" to get the changes list
premiseNoPremise or house number
suggestNoWhen true, look up alternative addresses suggested by Loqate and return them under address.suggestions. Requires the Loqate address-suggestion feature to be enabled on the account (licensed separately from verification). The lookup runs when the address is not accepted (review or reject) OR when it is accepted below the confidence floor (see suggest_below). Address-only — does not affect phone or email; off by default
surnameNoRecipient's last name
address2NoSecond address line
address3NoThird address line
address4NoFourth address line
address5NoFifth address line
address6NoSixth address line
address7NoSeventh address line
address8NoEighth address line
buildingNoBuilding name
forenameNoRecipient's first name
functionNoContact's job title or function
latitudeNoLatitude, for a reverse geocode
localityNoCity or town
post_boxNoPO box
postcodeNoPostal or ZIP code
full_nameNoRecipient's full name
longitudeNoLongitude, for a reverse geocode
admin_areaNoState or province
departmentNoDepartment within the organisation
verify_keyNoCustom address verification API key (overrides LOQATE_VERIFY_KEY env var)
verify_urlNoCustom address verification endpoint URL (overrides LOQATE_VERIFY_URL env var)
middle_nameNoRecipient's middle name
organizationNoCompany or organisation name
sub_buildingNoSub-building (e.g. flat, apartment or suite)
thoroughfareNoStreet name
suggest_belowNoConfidence floor for suggestions (0-1). An accepted address scoring below it still gets suggestions. Omit to use the policy value (standard 0.85); 0 disables the floor. Address-only
suggest_limitNoMaximum number of suggestions to return (1-10, default 5). Requires suggest
suggestion_idNoId of a suggestion previously returned in address.suggestions. The tool retrieves that address's cleansed components from Loqate and verifies those, which is how you confirm a suggestion the user chose. Use INSTEAD OF address, not alongside it. CONSUMES A LOQATE CREDIT — pass one id, for the one suggestion that was chosen, never several. Ids are not stable over time; a stale one returns SUGGESTION_NOT_FOUND and you must search again rather than retry
detect_countryNoWhen true and no country is supplied, guess the country from the address and flag the guess in the result (country_guessed). Address-only — does not affect phone or email; off by default
delivery_addressNoFull delivery address
delivery_address1NoDelivery address line 1
delivery_address2NoDelivery address line 2
delivery_address3NoDelivery address line 3
delivery_address4NoDelivery address line 4
delivery_address5NoDelivery address line 5
delivery_address6NoDelivery address line 6
delivery_address7NoDelivery address line 7
delivery_address8NoDelivery address line 8
dependent_localityNoDependent locality (e.g. neighbourhood)
sub_building_floorNoFloor
dependent_thoroughfareNoDependent street name
sub_administrative_areaNoSub administrative area (e.g. county)
double_dependent_localityNoDouble dependent locality
super_administrative_areaNoSuper administrative area

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedInput schema / properties / contact
      Added value: +{
      +  "description": "Contact name for the delivery",
      +  "type": "string"
      +}
    • addedInput schema / properties / department
      Added value: +{
      +  "description": "Department within the organisation",
      +  "type": "string"
      +}
    • addedInput schema / properties / forename
      Added value: +{
      +  "description": "Recipient's first name",
      +  "type": "string"
      +}
    • addedInput schema / properties / full_name
      Added value: +{
      +  "description": "Recipient's full name",
      +  "type": "string"
      +}
    • addedInput schema / properties / function
      Added value: +{
      +  "description": "Contact's job title or function",
      +  "type": "string"
      +}
    • addedInput schema / properties / id
      Added value: +{
      +  "description": "Your own identifier for this record, echoed back by Loqate",
      +  "type": "string"
      +}
    • addedInput schema / properties / middle_name
      Added value: +{
      +  "description": "Recipient's middle name",
      +  "type": "string"
      +}
    • addedInput schema / properties / surname
      Added value: +{
      +  "description": "Recipient's last name",
      +  "type": "string"
      +}
  2. Changed7 schema fields changed
    • changedInput schema / properties / dependent_locality / description
      Previous value: -"Dependent locality (e.g. neighborhood)"New value: +"Dependent locality (e.g. neighbourhood)"
    • changedInput schema / properties / latitude / description
      Previous value: -"Latitude for reverse geocode"New value: +"Latitude, for a reverse geocode"
    • changedInput schema / properties / longitude / description
      Previous value: -"Longitude for reverse geocode"New value: +"Longitude, for a reverse geocode"
    • changedInput schema / properties / organization / description
      Previous value: -"Organization or business name"New value: +"Company or organisation name"
    • changedInput schema / properties / post_box / description
      Previous value: -"PO Box number"New value: +"PO box"
    • changedInput schema / properties / sub_building / description
      Previous value: -"Sub-building (e.g. apartment, suite)"New value: +"Sub-building (e.g. flat, apartment or suite)"
    • changedInput schema / properties / sub_building_floor / description
      Previous value: -"Floor number"New value: +"Floor"
  3. Changed1 schema field changed
    • changedInput schema / properties / options / description
      Previous value: -"Loqate API options. Pass GeoCode here as a boolean — it is sent at the request root where Loqate expects it. In-Options booleans (Certify Version Enhance Deceased Goneaways) take JSON booleans; ServerOptions values (e.g. OutputCasing DefaultCountry) are strings"New value: +"Loqate API options as nested JSON, e.g. {\"ServerOptions\": {\"FieldStatus\": \"true\"}}. Dot notation is equivalent: {\"ServerOptions.FieldStatus\": \"true\"}. Pass GeoCode here as a boolean — it is sent at the request root where Loqate expects it. In-Options booleans (Certify Version Enhance Deceased Goneaways) take JSON booleans; ServerOptions values (e.g. OutputCasing DefaultCountry) are strings. Set ServerOptions.FieldStatus to \"true\" to get the changes list"
  4. Changed2 schema fields changed
    • changedInput schema / properties / suggest / description
      Previous value: -"When true, look up alternative addresses suggested by Loqate and return them under address.suggestions. The lookup runs when the address is not accepted (review or reject) OR when it is accepted below the confidence floor (see suggest_below). Address-only — does not affect phone or email; off by default"New value: +"When true, look up alternative addresses suggested by Loqate and return them under address.suggestions. Requires the Loqate address-suggestion feature to be enabled on the account (licensed separately from verification). The lookup runs when the address is not accepted (review or reject) OR when it is accepted below the confidence floor (see suggest_below). Address-only — does not affect phone or email; off by default"
    • addedInput schema / properties / suggestion_id
      Added value: +{
      +  "description": "Id of a suggestion previously returned in address.suggestions. The tool retrieves that address's cleansed components from Loqate and verifies those, which is how you confirm a suggestion the user chose. Use INSTEAD OF address, not alongside it. CONSUMES A LOQATE CREDIT — pass one id, for the one suggestion that was chosen, never several. Ids are not stable over time; a stale one returns SUGGESTION_NOT_FOUND and you must search again rather than retry",
      +  "type": "string"
      +}
  5. Changed3 schema fields changed
    • addedInput schema / properties / suggest
      Added value: +{
      +  "description": "When true, look up alternative addresses suggested by Loqate and return them under address.suggestions. The lookup runs when the address is not accepted (review or reject) OR when it is accepted below the confidence floor (see suggest_below). Address-only — does not affect phone or email; off by default",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / suggest_below
      Added value: +{
      +  "description": "Confidence floor for suggestions (0-1). An accepted address scoring below it still gets suggestions. Omit to use the policy value (standard 0.85); 0 disables the floor. Address-only",
      +  "type": [
      +    "null",
      +    "number"
      +  ]
      +}
    • addedInput schema / properties / suggest_limit
      Added value: +{
      +  "description": "Maximum number of suggestions to return (1-10, default 5). Requires suggest",
      +  "type": "integer"
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / detect_country
      Added value: +{
      +  "description": "When true and no country is supplied, guess the country from the address and flag the guess in the result (country_guessed). Address-only — does not affect phone or email; off by default",
      +  "type": "boolean"
      +}
  7. Changed1 schema field changed
    • changedInput schema / properties / options / description
      Previous value: -"Loqate API options (e.g. GeoCode, Certify, DefaultCountry, OutputCasing)"New value: +"Loqate API options. Pass GeoCode here as a boolean — it is sent at the request root where Loqate expects it. In-Options booleans (Certify Version Enhance Deceased Goneaways) take JSON booleans; ServerOptions values (e.g. OutputCasing DefaultCountry) are strings"
  8. Changed1 schema field changed
    • changedInput schema / properties / key / description
      Previous value: -"Loqate API key — required unless the server has one configured"New value: +"Loqate API key — required unless the server has one configured or the request carries an Authorization: Bearer header"
  9. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations only cover readOnlyHint and openWorldHint, and the description goes well beyond them: it discloses credit consumption ('CONSUMES A LOQATE CREDIT'), the stale-id failure mode (SUGGESTION_NOT_FOUND, and that retrying is wrong), the separately licensed Loqate feature requirement and its failure path (reported in suggestions.error, verification still succeeds), and the auth requirement (key field / Authorization header). These are exactly the operational traits an agent cannot infer from structured fields.

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?

The description front-loads the core purpose and then walks through the suggest/licensing/error conditions in a logical order, with no filler. Sentences are long and dense for a niche feature (suggestions), but each clause carries real operational information rather than restating the schema.

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 55-parameter tool with no output schema, the description supplies the essentials: what is returned, how the overall recommendation is computed, where suggestions surface (address.suggestions), auth and licensing requirements, and one error case. It stops short of detailing the full result structure (e.g. what 'individual results' contain), so an agent must infer some return shape.

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 description coverage is 100%, so the baseline is 3. The description still adds value above the schema by explaining cross-parameter semantics: the 'overall recommendation' is derived as the most conservative across the provided fields, 'suggest' is address-only, and suggestion_id must be used instead of address and only once. That is meaningful guidance beyond the per-field descriptions.

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?

The description names a precise verb (Verify) and resource set (address, email, and/or phone) and adds the key differentiator 'together', which separates it from the single-field siblings verify_address, verify_email, and verify_phone. It also states what comes back (individual results plus an overall recommendation that is the most conservative of the provided fields), so an agent can identify the tool and its output shape 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 Guidelines3/5

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

There is useful conditional guidance for the suggest workflow ('offer them to the user and verify the chosen one in a second call') and for suggestion_id ('Use INSTEAD OF address, not alongside it'). However, nothing tells the agent when to pick verify_contact over verify_address/verify_email/verify_phone (e.g. only reach for this when fields must be judged together). Tool-selection guidance is implied rather than stated.

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.