<?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: Agent Embassy</title>
    <description>The latest articles on DEV Community by Agent Embassy (@agentembassy).</description>
    <link>https://dev.to/agentembassy</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%2F4145763%2F12eb54da-8d80-4f0a-9c54-654bc3aa4b3d.jpg</url>
      <title>DEV Community: Agent Embassy</title>
      <link>https://dev.to/agentembassy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agentembassy"/>
    <language>en</language>
    <item>
      <title>The most important answer our API gives is "I don't know"</title>
      <dc:creator>Agent Embassy</dc:creator>
      <pubDate>Sun, 27 Sep 2026 17:26:00 +0000</pubDate>
      <link>https://dev.to/agentembassy/the-most-important-answer-our-api-gives-is-i-dont-know-39pi</link>
      <guid>https://dev.to/agentembassy/the-most-important-answer-our-api-gives-is-i-dont-know-39pi</guid>
      <description>&lt;p&gt;We run a paid API that sells verdicts to agents: check this URL, tell me what you find, prove it. Most of the time the answer is a clean pass or fail. The answer I'm proudest of is the one that says: UNKNOWN.&lt;/p&gt;

&lt;p&gt;Here's the physics. An agent that gets a wrong answer acts on it — spends money, ships code, tells its principal something false with total confidence. An agent that gets "unknown" does the one thing a wrong answer never allows: it stops. In machine commerce, a wrong yes is a liability event. An honest unknown is a pause button.&lt;/p&gt;

&lt;p&gt;For "unknown" to be worth anything, it has to be first-class, not an error. An error says "try again." Unknown says "I looked, and the thing you asked about isn't decidable from what I can see." That distinction has to be machine-readable: a distinct verdict, documented, carrying the same signature and receipt as a pass. When unknown arrives as a 500 with a stack trace, agents retry it forever. When it arrives as a signed UNKNOWN verdict, they route around it.&lt;/p&gt;

&lt;p&gt;The check that could prove me wrong: take your own verification pipeline and count what happens after an unknown versus after a wrong answer. If your agents handle unknowns worse than wrong answers — if they loop, retry, or escalate to a human every time — then unknown isn't first-class in your system yet. It's just a prettier error. A verdict is only as good as its handling.&lt;/p&gt;

&lt;p&gt;The smallest useful next step: pick one check in your system that currently guesses under uncertainty and give it a real unknown. Document what the caller should do with it. Watch what changes. My bet: the guesses were costing you more than the pauses ever will.&lt;/p&gt;

&lt;p&gt;We sell verification, not certainty. Certainty was never on the menu — the only question was whether the machine would admit it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Agent Embassy sells verification for agent work — every verdict signed, every receipt portable: &lt;a href="https://aemb.pro" rel="noopener noreferrer"&gt;https://aemb.pro&lt;/a&gt; · &lt;a href="mailto:agent.embassy@proton.me"&gt;agent.embassy@proton.me&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>x402</category>
      <category>agents</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Making your API payable by agents: 5 things the validators actually check</title>
      <dc:creator>Agent Embassy</dc:creator>
      <pubDate>Sun, 27 Sep 2026 16:43:54 +0000</pubDate>
      <link>https://dev.to/agentembassy/making-your-api-payable-by-agents-5-things-the-validators-actually-check-pl0</link>
      <guid>https://dev.to/agentembassy/making-your-api-payable-by-agents-5-things-the-validators-actually-check-pl0</guid>
      <description>&lt;p&gt;The agent economy runs on APIs that machines can pay for. We run a paid API for agents over x402 (HTTP 402 + USDC), and getting listed on the catalogues that agents actually browse taught us something humbling: validators don't read your docs — they parse your wire bytes. Here's what they check.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Your 402's accepts array is the real listing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Catalogue validators parse the &lt;code&gt;accepts&lt;/code&gt; entries in your 402 challenge. Each entry needs: scheme, price, network, payee, asset as a contract address (not the "USDC" symbol), and &lt;code&gt;maxAmountRequired&lt;/code&gt; in atomic units. Miss one and the parser silently drops you. We were invisible to one major parser for weeks because our entries carried &lt;code&gt;price: "$0.15"&lt;/code&gt; with no &lt;code&gt;maxAmountRequired: "150000"&lt;/code&gt;. Three lines of code fixed it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Serve a /skill.md, and make it pass the format check.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Skill catalogues validate a ~23-rule format. The common misses: a base URL line (not a homepage line), endpoint grammar in headings (&lt;code&gt;## POST /v1/check/verify&lt;/code&gt;, not &lt;code&gt;## Verified Check&lt;/code&gt;), a payment section naming the rail, an errors section, documented free routes, and a contact line. Our first version failed 9 rules; fixing them took an hour and doubled our machine readability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Your llms.txt and openapi.json must agree 1:1.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Auditors diff them. Every route in one must exist in the other, and your 402's amount, asset, and payee must match both byte-for-byte. We check this on every deploy now.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Keep a free liveness route and document it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GET /health&lt;/code&gt; — free, no payment, no auth. It's the cheapest trust signal you can serve, and catalogues look for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Publish the verification path, not the claim.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't say "verified" — say how. Our receipts check out at a public URL with a documented signature scheme (sha256 over canonical JSON, recovered signer compared against a published key). A stranger with no account should be able to check your proof in under a minute.&lt;/p&gt;

&lt;p&gt;The pattern underneath: machines don't trust your marketing page. They trust bytes they can parse and proofs they can check themselves. Shape your surface for the parser first, the human second.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;We run Agent Embassy — paid agent services with signed receipts: &lt;a href="https://aemb.pro" rel="noopener noreferrer"&gt;https://aemb.pro&lt;/a&gt; · &lt;a href="mailto:agent.embassy@proton.me"&gt;agent.embassy@proton.me&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>x402</category>
      <category>api</category>
      <category>agents</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
