Skip to main content
Glama

Jid: the trust API for AI agents

Should I engage? (screen a lead, sender, vendor or website)

screen

A fast engage-or-not answer before you reply to, onboard, pay or buy from someone. Pass any of domain, url, email, phone or company_name, the context (lead, inbound_email, partnership, vendor, purchase, marketplace_seller, agent_action), an optional amount (USD) and a policy (strict, balanced, permissive; default balanced). Returns engage (true or false), risk (low, medium, high, unknown), confidence 0 to 1, subject_type, reasons (each with source and evidence), concrete mitigations, checks and a read (headline, recommendation engage | verify_first | do_not_engage, failed checks, lookup links: show the user the read first) and a signed receipt_id. Deterministic, no AI in the decision, usually under a second. Act on engage=true; on engage=false, show the reasons and mitigations to the user. A possible sanctions name match is engage=false with 'manual review', never a finding. Individuals get only technical checks of the address, phone or domain. engage is advisory. Rules: https://jid.com/screen-rules. Counts as 1 check with a key; free tier without one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoWebsite or page URL (purchase checks: only the host is used)
siteNoThe submitting website's domain (binds the signal token)
emailNoSender e-mail address (hashed on the receipt, never stored)
phoneNoPhone number, ideally in +E.164
amountNoAmount at stake, USD
domainNoCompany domain
ip_asnNoASN of the request's network, to recognise hosting and VPN networks
policyNostrict, balanced (default) or permissive
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
contextNoWhat engaging means here; default lead (purchase when only a url or domain is given)
countryNoDefault country for a phone number without +, ISO alpha-2
ip_regionNoRegion of the request (ISO 3166-2, e.g. US-CA or CA)
ip_countryNoCountry the request came from (ISO alpha-2), for the location consistency check
company_nameNoCompany name as stated
stated_countryNoCountry the counterparty stated
browser_timezoneNoIANA time zone reported by the browser

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • 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"
      +}
  2. Changed5 schema fields changed
    • addedInput schema / properties / browser_timezone
      Added value: +{
      +  "description": "IANA time zone reported by the browser",
      +  "maxLength": 60,
      +  "type": "string"
      +}
    • addedInput schema / properties / ip_asn
      Added value: +{
      +  "description": "ASN of the request's network, to recognise hosting and VPN networks",
      +  "exclusiveMinimum": 0,
      +  "maximum": 9007199254740991,
      +  "type": "integer"
      +}
    • addedInput schema / properties / ip_country
      Added value: +{
      +  "description": "Country the request came from (ISO alpha-2), for the location consistency check",
      +  "maxLength": 2,
      +  "minLength": 2,
      +  "type": "string"
      +}
    • addedInput schema / properties / ip_region
      Added value: +{
      +  "description": "Region of the request (ISO 3166-2, e.g. US-CA or CA)",
      +  "maxLength": 10,
      +  "type": "string"
      +}
    • addedInput schema / properties / stated_country
      Added value: +{
      +  "description": "Country the counterparty stated",
      +  "maxLength": 2,
      +  "minLength": 2,
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so richly: it declares determinism ('no AI in the decision'), typical latency ('usually under a second'), the advisory nature of the verdict, how sanctions name matches are handled ('engage=false with manual review, never a finding'), billing ('counts as 1 check with a key; free tier without one'), and the full return shape including a receipt_id and user-facing 'read'. It also links to governing rules.

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 is front-loaded with the core purpose and decision, then covers inputs, outputs, and operational rules. It is long but justified by the tool's complexity (16 optional parameters, no output schema). The single dense paragraph could be more scannable, but every sentence contributes actionable 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?

Given the complexity (16 parameters, no output schema, no annotations), the description is nearly complete: it explains the verdict, return fields, determinism, edge-case handling, billing, and how to present results. It does not cover every parameter's mutual precedence or the role of less common fields (e.g., signal, ip_asn), but the schema handles those, leaving only minor gaps.

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 16 parameters thoroughly. The description restates the main input options (domain, url, email, phone, company_name, context, amount, policy) and notes the default policy, but adds little meaning beyond what the schema provides; baseline 3 applies when schema does the heavy lifting.

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?

The description states a clear verb and resource: it gives a fast 'engage-or-not' answer for screening a lead, sender, vendor or website. It is specific about the decision it returns (engage true/false with risk, confidence, reasons, mitigations), but it does not explicitly distinguish itself from siblings like qualify_counterparty or verify_business.

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?

It clearly states the context of use ('before you reply to, onboard, pay or buy from someone') and enumerates supported contexts (lead, inbound_email, partnership, vendor, purchase, marketplace_seller, agent_action). It also tells the agent how to act on the result (act on engage=true; on engage=false, show reasons and mitigations). However, it does not name alternative tools or state when not to use this one.

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