Skip to main content
Glama

Lordevo Shop (x402 website checks)

URL risk signals before you click or pay (evidence + risk level, never a safety claim) ($0.002/call)

url_trust
Read-onlyIdempotent

$0.002 per call (x402, USDC on Base; free trial: add "trial": true or use try_free). [Web and domain checks] Pre-click / pre-pay risk signals for one URL: TLS validity and expiry, redirect chain (HTTPS downgrades, cross-domain hops), domain age via RDAP, brand lookalike and punycode/mixed-script signals, parked or scam-pattern content, seed-phrase or lookalike login forms, security-header grade, and, if the URL answers 402, whether its x402 challenge is valid (USDC on Base, payTo, amount, resource host). Output trust/2: signals[] with evidence, risk {level: low_observed_risk / elevated / high / unknown, score 0-100 = risk, confidence, observed bad rate}, coverage (what was not checked) and not_a_guarantee. No third-party blocklist; low observed risk is not a safety certification. Method and measured error rates: https://shop.lordevo.com/docs/trust-methodology

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "url_trust"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesPublic http(s) URL or bare domain, e.g. https://example.com
trialNoOptional. true = free if a trial call is left (3 per IP per UTC day), else the payment terms.

Output Schema

NameRequiredDescriptionDefault
tlsNo
urlNo
riskNo
toolNo
x402No
cacheNo
_trialNoPresent when the call was a free trial call.
domainNo
schemaNo
contentNo
reasonsNo
signalsNo
verdictNoDeprecated alias of risk.level, removed after 2027-01-31
coverageNo
findingsNo
providerNo
final_urlNo
price_usdNo
redirectsNo
threat_listNo
methodology_urlNo
not_a_guaranteeNo
security_headersNo
not_a_guarantee_textNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / trial / description
      Previous value: -"Optional. true = answer free if a trial call is left (3 per IP per UTC day); otherwise you get the payment terms."New value: +"Optional. true = free if a trial call is left (3 per IP per UTC day), else the payment terms."
  2. Changed2 schema fields changed
    • addedInput schema / properties / trial
      Added value: +{
      +  "description": "Optional. true = answer free if a trial call is left (3 per IP per UTC day); otherwise you get the payment terms.",
      +  "type": "boolean"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "required": [
      +        "tool",
      +        "url",
      +        "reasons",
      +        "schema",
      +        "risk",
      +        "signals",
      +        "coverage",
      +        "not_a_guarantee"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "accepts": {
      +          "type": "array"
      +        },
      +        "error": {
      +          "type": "string"
      +        },
      +        "resource": {
      +          "type": "object"
      +        },
      +        "x402Version": {
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "x402Version",
      +        "accepts"
      +      ]
      +    },
      +    {
      +      "properties": {
      +        "charged": {
      +          "type": "boolean"
      +        },
      +        "error": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "error"
      +      ]
      +    }
      +  ],
      +  "properties": {
      +    "_trial": {
      +      "description": "Present when the call was a free trial call.",
      +      "type": "object"
      +    },
      +    "cache": {
      +      "type": "object"
      +    },
      +    "content": {
      +      "type": "object"
      +    },
      +    "coverage": {
      +      "properties": {
      +        "blocklist_checked": {
      +          "type": "boolean"
      +        },
      +        "checked": {
      +          "type": "array"
      +        },
      +        "failed": {
      +          "type": "array"
      +        },
      +        "not_checked": {
      +          "type": "array"
      +        },
      +        "point_in_time": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "not_checked",
      +        "blocklist_checked"
      +      ],
      +      "type": "object"
      +    },
      +    "domain": {
      +      "type": "object"
      +    },
      +    "final_url": {
      +      "type": "string"
      +    },
      +    "findings": {
      +      "items": {
      +        "properties": {
      +          "fix": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "severity": {
      +            "enum": [
      +              "critical",
      +              "high",
      +              "medium",
      +              "low",
      +              "info"
      +            ],
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "methodology_url": {
      +      "type": "string"
      +    },
      +    "not_a_guarantee": {
      +      "const": true,
      +      "type": "boolean"
      +    },
      +    "not_a_guarantee_text": {
      +      "type": "string"
      +    },
      +    "price_usd": {
      +      "type": "number"
      +    },
      +    "provider": {
      +      "type": "string"
      +    },
      +    "reasons": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "redirects": {
      +      "type": "array"
      +    },
      +    "risk": {
      +      "properties": {
      +        "calibration": {},
      +        "confidence": {
      +          "enum": [
      +            "low",
      +            "medium",
      +            "high"
      +          ],
      +          "type": "string"
      +        },
      +        "level": {
      +          "enum": [
      +            "low_observed_risk",
      +            "elevated",
      +            "high",
      +            "unknown"
      +          ],
      +          "type": "string"
      +        },
      +        "observed_bad_rate": {
      +          "type": [
      +            "object",
      +            "null"
      +          ]
      +        },
      +        "score": {
      +          "maximum": 100,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "thresholds": {
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "level",
      +        "score",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    "schema": {
      +      "const": "trust/2",
      +      "type": "string"
      +    },
      +    "security_headers": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "signals": {
      +      "items": {
      +        "properties": {
      +          "basis": {
      +            "enum": [
      +              "observed",
      +              "inferred"
      +            ],
      +            "type": "string"
      +          },
      +          "direction": {
      +            "enum": [
      +              "raises",
      +              "lowers"
      +            ],
      +            "type": "string"
      +          },
      +          "evidence": {
      +            "items": {
      +              "properties": {
      +                "header": {
      +                  "type": "string"
      +                },
      +                "kind": {
      +                  "type": "string"
      +                },
      +                "observed_at": {
      +                  "type": "string"
      +                },
      +                "record": {},
      +                "snippet": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "url": {
      +                  "type": "string"
      +                },
      +                "value": {}
      +              },
      +              "required": [
      +                "kind"
      +              ],
      +              "type": "object"
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "severity": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "value": {},
      +          "weight": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "direction",
      +          "weight",
      +          "basis",
      +          "evidence"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "threat_list": {
      +      "type": "object"
      +    },
      +    "tls": {
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "tool": {
      +      "type": "string"
      +    },
      +    "url": {
      +      "type": "string"
      +    },
      +    "verdict": {
      +      "deprecated": true,
      +      "description": "Deprecated alias of risk.level, removed after 2027-01-31",
      +      "enum": [
      +        "low_observed_risk",
      +        "elevated",
      +        "high",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "x402": {
      +      "properties": {
      +        "detected": {
      +          "type": "boolean"
      +        },
      +        "issues": {
      +          "type": "array"
      +        },
      +        "options": {
      +          "type": "array"
      +        },
      +        "valid": {
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Added

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description layers on the things they don't: pricing model (x402/USDC on Base), free-trial quota (3 per IP per UTC day), the exact output contract, and an explicit statement that no third-party blocklist is consulted and low observed risk is not a safety certification. The 'coverage (what was not checked)' and 'not_a_guarantee' fields plus the methodology link are unusually candid disclosures for a risk-scoring tool.

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 cost and purpose, then the signal list, then the output shape and caveats — a logical order with no filler prose. It loses a point for repeating the price in both the title and the first clause and for cramming the entire inventory into one very long sentence.

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?

For a scoring tool with an output schema, annotations, and full param coverage, this leaves nothing an agent needs unanswered: cost, trial path, what is checked, what is deliberately not checked, output fields, and where the methodology lives. The explicit 'what was not checked'/coverage framing is exactly the completeness a risk tool requires.

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 coverage is 100% and both parameters are already documented, including the trial quota, so the schema carries the burden. The description only restates the trial option and adds no format guidance for the `url` parameter (e.g. bare-domain vs scheme handling), so baseline 3 is right.

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-and-resource pair ('Pre-click / pre-pay risk signals for one URL') and then enumerates exactly what is examined: TLS validity/expiry, redirect chain, RDAP domain age, lookalike/punycode, parked content, security-header grade, and x402 challenge validity. The 'one URL' scope also distinguishes it from batch-oriented siblings like links_batch.

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?

The 'pre-click / pre-pay' framing gives a clear use context and the trial mechanics ('add trial: true or use try_free') point at the sibling alternative. What's missing is explicit when-not guidance — nothing tells the agent to prefer ssl_cert, redirect_chain, domain_rdap, or security_headers when only one narrow signal is needed.

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