Skip to main content
Glama

Jid: the trust API for AI agents

Qualify a business lead or counterparty

qualify_counterparty
Read-only

Qualifies a business that made contact (a form submission, an inquiry, an outreach reply). Input: the sender's e-mail (or the company domain), the company name if given, and the context (form type, message, stated value, stated role). Jid checks the domain (MX, SPF, DMARC, registration date over RDAP, the website), matches it to a Jid business file, reads that file's registrations, licences, filings, capital raises, loans and adverse records, and returns signals (each with source, source_url, verified_at), three scores (legitimacy, capacity, consistency, 0 to 100 with reasons), checks (each pass, fail or unknown with one line of evidence) and a read: a one-line headline ("Passed all 7 checks Jid could run. Recommendation: engage."), the recommendation (engage, verify_first, do_not_engage), the failed checks and up to 4 links to verify by hand, plus a signed receipt reference. detail "full" adds each signal's raw value, each check's lookup link and the full signed receipt. Businesses only: personal webmail or no matched business returns individual_or_unverified with no scores. A possible list match is returned as 'review', not as a finding. Counts as 2 checks with a key; free tier without one. Not intended for credit, employment, insurance or housing decisions about any person.

Input Schema

NameRequiredDescriptionDefault
siteNoThe submitting website's domain (binds the signal token)
emailNoSender's e-mail address
detailNocompact (default): signals without raw values and a receipt reference; full: raw signal values and the full signed receipt
domainNoCompany domain, when no e-mail is available
ip_asnNoASN of the submitting network, to recognise hosting and VPN networks
policyNoHow cautious `engage` is (default balanced)
signalNoJid Signals token (the form's jid_signal field): Jid's own reading of the visitor's location; replaces the ip_* fields when it verifies
countryNoStated country, ISO 3166-1 alpha-2
messageNoThe submission's free text (hashed, never stored)
summaryNoAdd a short plain-English summary grounded in the signals (with an API key only)
activityNoRegulated activity whose licences matter, if any
form_typeYesWhat kind of submission this is
ip_regionNoRegion the submission came from (ISO 3166-2, e.g. US-CA or CA)
ip_countryNoCountry the submission came from, ISO alpha-2 (location consistency check)
stated_roleNoThe sender's stated role
company_nameNoCompany name as stated by the sender
stated_valueNoDeal or purchase size the sender states, USD
stated_countryNoCountry the submitter stated (same as country)
claimed_websiteNoFor vendor_claim / listing_claim: the website of the business or listing being claimed (enables the affiliation check)
browser_timezoneNoIANA time zone reported by the submitter's browser

Output Schema

NameRequiredDescriptionDefault
idYes
noteYesTerms of use for the facts
readYesWhat a person sees: headline, recommendation, failed checks and lookup links
checksYes
entityNo
receiptNo
signalsYes
summaryNo
capacityNo
assessmentYesbusiness | individual_or_unverified
checked_atNo
legitimacyNo
checks_usedYes
consistencyNo
recommendationYesengage | verify_first | do_not_engage, with the reason
questions_to_askNo
suggested_next_stepNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "compact (default): signals without raw values and a receipt reference; full: raw signal values and the full signed receipt",
      +  "enum": [
      +    "compact",
      +    "full"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / summary / description
      Previous value: -"Add a short plain-English summary grounded in the signals"New value: +"Add a short plain-English summary grounded in the signals (with an API key only)"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": {},
      +  "properties": {
      +    "assessment": {
      +      "description": "business | individual_or_unverified",
      +      "type": "string"
      +    },
      +    "capacity": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "reasons": {
      +              "items": {},
      +              "type": "array"
      +            },
      +            "score": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "checked_at": {
      +      "type": "string"
      +    },
      +    "checks": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "evidence": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "severity": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "description": "pass | fail | unknown | not_applicable",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "checks_used": {
      +      "type": "number"
      +    },
      +    "consistency": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "reasons": {
      +              "items": {},
      +              "type": "array"
      +            },
      +            "score": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "entity": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "id": {
      +              "type": "string"
      +            },
      +            "relied_on": {
      +              "type": "boolean"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "id": {
      +      "type": "string"
      +    },
      +    "legitimacy": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {
      +            "reasons": {
      +              "items": {},
      +              "type": "array"
      +            },
      +            "score": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "note": {
      +      "description": "Terms of use for the facts",
      +      "type": "string"
      +    },
      +    "questions_to_ask": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "read": {
      +      "additionalProperties": {},
      +      "description": "What a person sees: headline, recommendation, failed checks and lookup links",
      +      "properties": {
      +        "failed": {
      +          "description": "Failed checks, worst first, at most 3",
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "evidence": {
      +                "type": "string"
      +              },
      +              "label": {
      +                "type": "string"
      +              },
      +              "lookup": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "label": {
      +                    "type": "string"
      +                  },
      +                  "url": {
      +                    "type": "string"
      +                  }
      +                },
      +                "type": "object"
      +              }
      +            },
      +            "required": [
      +              "label",
      +              "evidence"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "headline": {
      +          "description": "One line, e.g. \"Passed all 7 checks Jid could run. Recommendation: engage.\"",
      +          "type": "string"
      +        },
      +        "not_checked": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "passed": {
      +          "type": "number"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "recommendation": {
      +          "description": "engage | verify_first | do_not_engage",
      +          "type": "string"
      +        },
      +        "total": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "headline",
      +        "recommendation",
      +        "passed",
      +        "total",
      +        "failed"
      +      ],
      +      "type": "object"
      +    },
      +    "receipt": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "description": "Signed receipt reference; get_receipt returns the full signed statement",
      +          "properties": {
      +            "issued_at": {
      +              "type": "string"
      +            },
      +            "keys": {
      +              "type": "string"
      +            },
      +            "receipt_id": {
      +              "type": "string"
      +            },
      +            "signature": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "alg": {
      +                  "type": "string"
      +                },
      +                "kid": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "alg",
      +                "kid"
      +              ],
      +              "type": "object"
      +            },
      +            "url": {
      +              "type": "string"
      +            },
      +            "verify_url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "receipt_id"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": {},
      +          "properties": {},
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    "recommendation": {
      +      "description": "engage | verify_first | do_not_engage, with the reason"
      +    },
      +    "signals": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "detail": {},
      +          "effect": {},
      +          "name": {
      +            "type": "string"
      +          },
      +          "source": {},
      +          "source_url": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "verified_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "suggested_next_step": {
      +      "type": "string"
      +    },
      +    "summary": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "assessment",
      +    "recommendation",
      +    "read",
      +    "signals",
      +    "checks",
      +    "checks_used",
      +    "note"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / activity / enum
      Previous value: -[
      -  "general_commerce",
      -  "sell_prescription_drugs",
      -  "manufacture_drugs",
      -  "sell_medical_devices",
      -  "haul_freight",
      -  "broker_freight",
      -  "sell_alcohol",
      -  "produce_spirits",
      -  "provide_investment_advice",
      -  "accept_deposits",
      -  "lend",
      -  "bill_medicare_medicaid",
      -  "healthcare_supplier",
      -  "federal_contracting",
      -  "charitable_solicitation",
      -  "operate_psilocybin_healing_center"
      -]New value: +[
      +  "general_commerce",
      +  "sell_prescription_drugs",
      +  "manufacture_drugs",
      +  "sell_medical_devices",
      +  "haul_freight",
      +  "broker_freight",
      +  "sell_alcohol",
      +  "produce_spirits",
      +  "provide_investment_advice",
      +  "accept_deposits",
      +  "lend",
      +  "bill_medicare_medicaid",
      +  "healthcare_supplier",
      +  "federal_contracting",
      +  "charitable_solicitation",
      +  "construction",
      +  "operate_psilocybin_healing_center"
      +]
  3. Changed7 schema fields changed
    • addedInput schema / properties / browser_timezone
      Added value: +{
      +  "description": "IANA time zone reported by the submitter's browser",
      +  "maxLength": 60,
      +  "type": "string"
      +}
    • addedInput schema / properties / ip_asn
      Added value: +{
      +  "description": "ASN of the submitting network, to recognise hosting and VPN networks",
      +  "exclusiveMinimum": 0,
      +  "maximum": 9007199254740991,
      +  "type": "integer"
      +}
    • changedInput schema / properties / ip_country / description
      Previous value: -"Country the submission came from, ISO alpha-2"New value: +"Country the submission came from, ISO alpha-2 (location consistency check)"
    • addedInput schema / properties / ip_region
      Added value: +{
      +  "description": "Region the submission came from (ISO 3166-2, e.g. US-CA or CA)",
      +  "maxLength": 10,
      +  "type": "string"
      +}
    • addedInput schema / properties / signal
      Added value: +{
      +  "description": "Jid Signals token (the form's jid_signal field): Jid's own reading of the visitor's location; replaces the ip_* fields when it verifies",
      +  "maxLength": 800,
      +  "type": "string"
      +}
    • addedInput schema / properties / site
      Added value: +{
      +  "description": "The submitting website's domain (binds the signal token)",
      +  "maxLength": 253,
      +  "type": "string"
      +}
    • addedInput schema / properties / stated_country
      Added value: +{
      +  "description": "Country the submitter stated (same as country)",
      +  "maxLength": 2,
      +  "minLength": 2,
      +  "type": "string"
      +}
  4. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/non-destructive, but the description adds non-obvious behavior: this consumes 2 checks with an API key (free tier without one), a possible list match is returned as 'review' not a finding, and personal webmail/no-match degrades to individual_or_unverified with no scores. It also discloses the exact checks and receipt output, though much of that overlaps the existing output schema.

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 is front-loaded, but the body is a dense run-on that enumerates return contents (signals, three scores, checks, read, receipt) already covered by the output schema, spending length on redundant detail rather than call-relevant guidance.

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 20-parameter tool with rich annotations and an output schema, the description supplies the missing decision context: eligibility (businesses only), degraded outcomes, billing cost, and prohibited use cases. Return-value explanation is largely redundant with the output schema, so it is thorough but not fully lean.

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%, so the schema already documents all 20 parameters, including enums. The description adds only marginal meaning (context inputs such as form type/message/stated value/stated role, and that the signal token replaces ip_* fields); baseline 3 applies.

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

Purpose4/5

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

States a specific verb (qualifies) and resource (a business that made contact) and scopes it clearly to inbound submissions like form submissions, inquiries and outreach replies. It is distinguishable from outbound-style siblings such as verify_business or search_business, though it names no sibling explicitly.

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?

Gives a clear triggering context (a business that made contact) plus explicit exclusions: 'Businesses only', personal webmail returns individual_or_unverified, and 'Not intended for credit, employment, insurance or housing decisions about any person.' It stops short of naming alternative tools for adjacent jobs.

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.

Resources