trustsource-domain — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited trustsource-domain (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
TrustSource is a suite of four x402-paid HTTP APIs that let an agent verify any domain on demand. Each call costs $0.002–$0.003 in USDC on Base Mainnet, settled atomically per request via x402. No accounts. No signups. No API keys.
Use this skill any time you need to make a trust judgment about a URL or domain you did not source yourself — when an agent encounters a URL from an untrusted source, before sending a payment to a site, to confirm a TLS certificate is valid and not expiring, to grade a site's security headers, or to learn whether crawling is permitted. It applies to any request about checking, verifying, scoring, validating, or auditing a domain, website, URL, TLS certificate, SSL, HTTPS, security headers, robots.txt, or crawler permissions — even when the user does not name TrustSource explicitly.
| Endpoint | Cost | Use it when you need to know… |
|---|---|---|
GET /trustscore?domain=… | $0.003 | …how legitimate a domain is overall (age, registrar, DNS, TLD risk) |
GET /sslcheck?domain=… | $0.002 | …whether the TLS certificate is valid, trusted, and not expiring |
GET /headers?url=… | $0.003 | …how well-hardened a site is (HSTS, CSP, X-Frame-Options grade A+–F) |
GET /robots?domain=… | $0.002 | …whether the site allows you (or AI bots in general) to crawl it |
Base URL: https://api.trustsource.cc OpenAPI spec: https://api.trustsource.cc/openapi.json Network: Base Mainnet (chain ID 8453), USDC settlement
There are two ways to consume TrustSource. Pick based on whether your agent already has an x402-aware HTTP path.
npx -y trustsource-mcp — also published in the official MCP Registry as io.github.SurfEther/trustsource. It exposes four tools — trustsource_score, trustsource_ssl, trustsource_headers, trustsource_robots — and handles the entire x402 settlement loop internally. You supply a funded Base wallet key via the WALLET_PRIVATE_KEY env var. This is the fastest path for MCP-capable agents and for AWS Bedrock AgentCore Gateway / Claude Desktop / any MCP client.fetch with payment handling, or when you don't want a separate MCP process.Every paid endpoint returns HTTP 402 Payment Required on the first call. The response includes a PAYMENT-REQUIRED header (base64-encoded JSON) containing the amount, network, recipient address, and accepted payment scheme.
The client signs an EIP-3009 USDC transferWithAuthorization for the exact amount, base64-encodes the signed payment, and retries the same request with an X-PAYMENT header. The Coinbase Developer Platform (CDP) facilitator settles on-chain and returns the JSON response.
In practice you do not write this by hand. Use x402-fetch (Node/TS) or any x402-aware HTTP client:
import { wrapFetchWithPayment } from "x402-fetch";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY);
const fetch402 = wrapFetchWithPayment(fetch, account);
const res = await fetch402("https://api.trustsource.cc/trustscore?domain=example.com");
const data = await res.json();The buyer wallet needs USDC on Base Mainnet and a small amount of ETH for gas. Use a low-balance hot wallet scoped to micropayments — never your primary treasury key.
/trustscore — when you have just received a URL from an external sourceTriggers: an LLM mentioned a domain in its output, a user-provided link, a redirect target, a competitor named in scraped content — anywhere the domain provenance is unclear.
Returns a 0–100 score and one of four tiers:
/sslcheck and /headers)Scoring inputs: WHOIS domain age, TLD risk class, DNS presence (A + MX records), registrar reputation.
Example response:
{
"domain": "example.com",
"score": 90,
"tier": "TRUSTED",
"breakdown": { "domainAge": 30, "tld": 20, "dnsPresence": 30, "registrar": 10 },
"details": {
"age": { "days": 10477, "label": "established (5+ years)" },
"tld": ".com",
"dns": { "hasARecord": true, "hasMxRecord": true, "mxRecords": ["..."] },
"registrar": "markmonitor, inc."
},
"meta": { "checkedAt": "2026-05-26T12:00:00.000Z", "paidWith": "x402/USDC", "cached": false }
}/sslcheck — when you are about to make an HTTPS request to a domain you do not fully trustTriggers: posting credentials, submitting a form, downloading code, hitting a webhook, anywhere a man-in-the-middle would matter.
Performs a real TLS handshake to port 443. Returns a 0–100 SSL score and tier:
How failures are reported. A completed handshake that yields a bad certificate returns HTTP 200 with tier EXPIRED / UNTRUSTED / INVALID — parse the body as a normal result. A connection that cannot establish TLS at all (port closed, no response, broken handshake) returns HTTP 502 — treat that absence of a working cert as the negative signal itself, not as a transient error.
Key response fields:
certificate.daysRemaining — integer, useful for early-warning alertingcertificate.signatureAlgorithm — e.g. "RSA-SHA256"chain.trusted — boolean, true if root CA is in the Mozilla trust storeconnection.protocol — e.g. "TLSv1.3"warnings — array of human-readable issues/headers — when you are crawling, embedding, or auditing a siteTriggers: scraping for content, rendering in an iframe, including in a feed, training data ingestion, third-party JS embed, security review.
Audits HTTP security headers and returns a letter grade A+ through F:
Grade interpretation: A+/A = enterprise-hardened, B = decent, C/D = legacy or careless, F = unhardened. Many major sites and marketing pages legitimately grade F — this is a defense-in-depth signal, not a vulnerability test.
/robots — when you are an AI agent about to crawl contentTriggers: building training data, summarizing a page, archiving, RAG ingestion, sitemap discovery. Always check before crawling at scale.
Parses robots.txt and detects policies against 24 known AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Bytespider, and others).
Returns a tier:
User-agent: * Disallow: /If BLOCKED_AI or BLOCKED_ALL, the agent should not crawl regardless of technical feasibility.
/trustscore?domain={domain} — $0.003tier === "HIGH_RISK" → refuse to interacttier === "CAUTION" → also call /sslcheck ($0.002) and /headers ($0.003); refuse if SSL is INVALID/EXPIRED/UNTRUSTEDtier === "TRUSTED" or "MODERATE" → proceedWorst-case cost: $0.008 per unfamiliar domain.
/robots?domain={domain} first — $0.002tier === "BLOCKED_AI" or "BLOCKED_ALL" → stop; do not crawlOPEN or SELECTIVE → respect the specific disallow rules and proceedCost: $0.002 per crawl target.
/trustscore AND /sslcheck in parallel — $0.005 total/trustscore and /sslcheck, up to 12 hours for /robots and /headers. Cached responses still cost the standard rate — the cache reduces latency, not price.Retry-After header is set on 429.| Status | Meaning | Agent action |
|---|---|---|
| 200 | Success | Parse JSON, use result |
| 400 | Bad input (invalid domain, missing param) | Do not retry with same input |
| 402 | Payment required | Normal — sign and retry with X-PAYMENT |
| 429 | Rate limited | Wait Retry-After seconds, retry |
| 500 | Lookup failed (WHOIS / DNS error) | Retry once with delay; if still failing, treat as inconclusive |
| 502 | TLS could not be established (/sslcheck) | This is the result — the domain has no working cert; treat as negative, do not retry as transient |
All four endpoints are indexed in Coinbase's Bazaar / Agentic.Market and reachable through the x402 Bazaar MCP server (including via AWS Bedrock AgentCore Gateway). Agents using the @x402/extensions/bazaar discovery flow find them automatically. Direct OpenAPI consumption: https://api.trustsource.cc/openapi.json.
days: -1 when unknown — do not treat that as low-trust on its own.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.