<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Surf</title>
    <description>The latest articles on DEV Community by Surf (@surfether).</description>
    <link>https://dev.to/surfether</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3948751%2Fa9ef23b9-4424-47dc-9ef1-6bd2e2a42839.png</url>
      <title>DEV Community: Surf</title>
      <link>https://dev.to/surfether</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/surfether"/>
    <language>en</language>
    <item>
      <title>Domain Verification for AI Agents: 4 Pay-Per-Call APIs over x402 (no API keys)</title>
      <dc:creator>Surf</dc:creator>
      <pubDate>Sun, 24 May 2026 08:11:55 +0000</pubDate>
      <link>https://dev.to/surfether/domain-trust-scoring-for-ai-agents-checking-before-you-pay-556g</link>
      <guid>https://dev.to/surfether/domain-trust-scoring-for-ai-agents-checking-before-you-pay-556g</guid>
      <description>&lt;p&gt;Your agent just got a URL from another model's output, a tool result, or a user. Before it sends a payment there, scrapes it, embeds it in a feed, or quotes it as a source — should it trust that domain?&lt;/p&gt;

&lt;p&gt;Right now most agents don't check. They follow the link. That's fine until the domain is three days old, the TLS cert expired last week, or the site's &lt;code&gt;robots.txt&lt;/code&gt; explicitly bans AI crawlers and you're ingesting it into a training set anyway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TrustSource&lt;/strong&gt; is a small suite of verification APIs built for exactly this moment. Four endpoints, each answering one trust question about a domain, each priced as a micro-transaction and paid per call in USDC over &lt;a href="https://docs.cdp.coinbase.com/x402/welcome" rel="noopener noreferrer"&gt;x402&lt;/a&gt;. No API keys. No signup. No account. An agent discovers the endpoint, pays a fraction of a cent, gets a structured answer, and moves on.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four checks
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Answers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /trustscore?domain=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.003&lt;/td&gt;
&lt;td&gt;How legitimate is this domain? (WHOIS age, TLD risk, DNS, registrar)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /sslcheck?domain=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.002&lt;/td&gt;
&lt;td&gt;Is the TLS certificate valid, trusted, and not expiring?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /headers?url=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.003&lt;/td&gt;
&lt;td&gt;How hardened is this site? (HSTS, CSP, X-Frame-Options… graded A+–F)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GET /robots?domain=&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;$0.002&lt;/td&gt;
&lt;td&gt;Am I (or AI bots in general) allowed to crawl it?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Base URL: &lt;code&gt;https://api.trustsource.cc&lt;/code&gt; · Machine-readable spec: &lt;code&gt;https://api.trustsource.cc/openapi.json&lt;/code&gt; · Network: Base Mainnet, USDC settlement.&lt;/p&gt;

&lt;p&gt;Worst case, vetting a completely unfamiliar domain across all four costs about &lt;strong&gt;$0.008&lt;/strong&gt;. An agent making a hundred checks in a session spends under thirty cents.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you actually get back
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;/trustscore&lt;/code&gt; returns a 0–100 score and a tier — &lt;code&gt;TRUSTED&lt;/code&gt; / &lt;code&gt;MODERATE&lt;/code&gt; / &lt;code&gt;CAUTION&lt;/code&gt; / &lt;code&gt;HIGH_RISK&lt;/code&gt; — plus the inputs behind it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"domain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"score"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"TRUSTED"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"breakdown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"domainAge"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"tld"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"dnsPresence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"registrar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"details"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"age"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"days"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10477&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"established (5+ years)"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tld"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;".com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dns"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hasARecord"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"hasMxRecord"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"registrar"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"markmonitor, inc."&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/sslcheck&lt;/code&gt; does a live TLS handshake and returns a tier (&lt;code&gt;VALID&lt;/code&gt; / &lt;code&gt;EXPIRING&lt;/code&gt; / &lt;code&gt;WEAK&lt;/code&gt; / &lt;code&gt;EXPIRED&lt;/code&gt; / &lt;code&gt;UNTRUSTED&lt;/code&gt; / &lt;code&gt;INVALID&lt;/code&gt;) with chain trust, days-to-expiry, signature algorithm, and TLS version. &lt;code&gt;/headers&lt;/code&gt; returns an A+–F grade with a per-header breakdown. &lt;code&gt;/robots&lt;/code&gt; parses &lt;code&gt;robots.txt&lt;/code&gt; against 24 known AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot, and others) and returns whether you're allowed in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two ways to call it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. The MCP server (zero payment code)
&lt;/h3&gt;

&lt;p&gt;If your agent speaks Model Context Protocol, this is the fastest path. The server handles the entire x402 payment loop for you — you just supply a funded Base wallet key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"trustsource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"trustsource-mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"WALLET_PRIVATE_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0x..."&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's also in the official MCP Registry as &lt;code&gt;io.github.SurfEther/trustsource&lt;/code&gt;, and exposes four tools: &lt;code&gt;trustsource_score&lt;/code&gt;, &lt;code&gt;trustsource_ssl&lt;/code&gt;, &lt;code&gt;trustsource_headers&lt;/code&gt;, &lt;code&gt;trustsource_robots&lt;/code&gt;. That makes it reachable from MCP clients including AWS Bedrock AgentCore Gateway.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Direct HTTP with x402
&lt;/h3&gt;

&lt;p&gt;If your agent already wraps &lt;code&gt;fetch&lt;/code&gt; with payment handling, call the endpoints directly. Every paid endpoint returns &lt;code&gt;402 Payment Required&lt;/code&gt; on the first hit; an x402-aware client signs the USDC payment and retries automatically.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;wrapFetchWithPayment&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x402-fetch&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;privateKeyToAccount&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;viem/accounts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;privateKeyToAccount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;WALLET_PRIVATE_KEY&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetch402&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;wrapFetchWithPayment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch402&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.trustsource.cc/trustscore?domain=example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The buyer wallet needs USDC on Base Mainnet and a little ETH for gas. Use a low-balance hot wallet scoped to micropayments — never your treasury key.&lt;/p&gt;

&lt;h2&gt;
  
  
  A real decision flow
&lt;/h2&gt;

&lt;p&gt;The point isn't to call these randomly; it's to wire them into the moment a trust decision happens. Example — your agent receives an unknown URL from another LLM or tool:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;GET /trustscore?domain={domain}&lt;/code&gt; — $0.003&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;tier === "HIGH_RISK"&lt;/code&gt; → refuse to interact.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;tier === "CAUTION"&lt;/code&gt; → also call &lt;code&gt;/sslcheck&lt;/code&gt; and &lt;code&gt;/headers&lt;/code&gt;; refuse if SSL is &lt;code&gt;INVALID&lt;/code&gt; / &lt;code&gt;EXPIRED&lt;/code&gt; / &lt;code&gt;UNTRUSTED&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;TRUSTED&lt;/code&gt; or &lt;code&gt;MODERATE&lt;/code&gt; → proceed.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;About to crawl or scrape? Lead with &lt;code&gt;/robots&lt;/code&gt; ($0.002) and stop on &lt;code&gt;BLOCKED_AI&lt;/code&gt; or &lt;code&gt;BLOCKED_ALL&lt;/code&gt;. About to send USDC or follow a redirect to an unknown payment URL? Run &lt;code&gt;/trustscore&lt;/code&gt; and &lt;code&gt;/sslcheck&lt;/code&gt; in parallel and require both to clear.&lt;/p&gt;

&lt;h2&gt;
  
  
  How agents find it
&lt;/h2&gt;

&lt;p&gt;TrustSource is indexed in Coinbase's &lt;a href="https://docs.cdp.coinbase.com/x402/bazaar" rel="noopener noreferrer"&gt;x402 Bazaar&lt;/a&gt; and surfaced on &lt;a href="https://agentic.market" rel="noopener noreferrer"&gt;Agentic.Market&lt;/a&gt;. Any agent using the Bazaar discovery flow — or the Bazaar MCP server, including through AWS Bedrock AgentCore — can find these endpoints, read their schemas, and pay for them without a human wiring up credentials first. That's the part that makes this agent-native rather than just another REST API behind a key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest about the edges
&lt;/h2&gt;

&lt;p&gt;A verification service that overstates itself is worse than useless, so:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Caching means freshness isn't real-time.&lt;/strong&gt; A cert that expired a moment ago can still read &lt;code&gt;VALID&lt;/code&gt; for up to an hour.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WHOIS is registrar-dependent.&lt;/strong&gt; Some registrars hide creation dates; the response says so rather than guessing, and a hidden date shouldn't be read as low trust on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/headers&lt;/code&gt; grades are defense-in-depth, not a vulnerability scan.&lt;/strong&gt; Plenty of major sites legitimately grade F and are perfectly safe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TrustSource scores the perimeter, not page content.&lt;/strong&gt; Domain identity, transport security, header hygiene, crawl policy. For phishing, malware, or IP reputation, pair it with a dedicated content scanner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The skill (a &lt;code&gt;SKILL.md&lt;/code&gt; your agent can load directly, covering all four endpoints, decision flows, and error handling) lives here: &lt;a href="https://github.com/SurfEther/trustsource-skills" rel="noopener noreferrer"&gt;github.com/SurfEther/trustsource-skills&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Site: &lt;a href="https://trustsource.cc" rel="noopener noreferrer"&gt;https://trustsource.cc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;API: &lt;a href="https://api.trustsource.cc" rel="noopener noreferrer"&gt;https://api.trustsource.cc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Spec: &lt;a href="https://api.trustsource.cc/openapi.json" rel="noopener noreferrer"&gt;https://api.trustsource.cc/openapi.json&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building an agent that touches URLs it didn't author — and most do — a sub-cent trust check before it acts is cheap insurance. Wire one into your next decision point and see what it flags.&lt;br&gt;
registration data under GDPR. When that happens, the age score falls back to 0 ("unknown"). This is a known limitation of the public WHOIS system, not something this API can work around.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recently compromised legitimate domains&lt;/strong&gt; — a 10-year-old &lt;code&gt;.com&lt;/code&gt; with good DNS can still be a phishing site if the domain was hijacked. This API scores structural signals, not content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Very new legitimate services&lt;/strong&gt; — a startup that launched last month will score low on domain age even if it's completely legitimate. Context matters.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The score is best used as a filter to catch obvious red flags, not as a definitive verdict on any domain.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using it without x402
&lt;/h2&gt;

&lt;p&gt;If your agent stack doesn't support x402 yet, you can still test it by running the payment manually. Get some Base Sepolia testnet USDC from &lt;a href="https://faucet.circle.com" rel="noopener noreferrer"&gt;faucet.circle.com&lt;/a&gt;, switch to testnet (&lt;code&gt;NETWORK=eip155:84532&lt;/code&gt;, &lt;code&gt;FACILITATOR_URL=https://x402.org/facilitator&lt;/code&gt;), and use the example client from the &lt;a href="https://docs.cdp.coinbase.com/x402/quickstart-for-buyers" rel="noopener noreferrer"&gt;x402 quickstart for buyers&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;API endpoint: &lt;a href="https://trustsource.cc" rel="noopener noreferrer"&gt;trustsource.cc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;OpenAPI spec: &lt;a href="https://trustsource.cc/openapi.json" rel="noopener noreferrer"&gt;trustsource.cc/openapi.json&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Agentic.Market listing: &lt;a href="https://agentic.market" rel="noopener noreferrer"&gt;agentic.market&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;x402 protocol docs: &lt;a href="https://docs.x402.org" rel="noopener noreferrer"&gt;docs.x402.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;x402 buyer quickstart: &lt;a href="https://docs.cdp.coinbase.com/x402/quickstart-for-buyers" rel="noopener noreferrer"&gt;docs.cdp.coinbase.com/x402/quickstart-for-buyers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building agent payment flows and have thoughts on what other trust signals would be useful, happy to hear them.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>web3</category>
      <category>api</category>
    </item>
  </channel>
</rss>
