Skip to content

agent-wire 0.2.2

Choose a tag to compare

@uncoalesced uncoalesced released this 22 Oct 10:14
· 68 commits to main since this release
aa7b796

agent-wire 0.2.2

When you ask an agent for sources, two things go wrong. Either it makes one up, or it gives you a real-looking link that's dead, has moved, or doesn't say what it claims. This release is about both.

uvx agent-wire-cli install --client auto

wire_cite: check the sources before the answer goes out

There's a new tool, wire_cite. The agent passes it its draft answer, and every cited link gets opened. Each link comes back with a verdict:

  • OK: the page is live, with its title and first lines so the agent can check it matches the claim.
  • DEAD: gone, with no archived copy. The agent gets a ready wire_search query for a replacement and is told to ask you or a sub-agent rather than quietly drop the citation.
  • ARCHIVED: the original is gone but the Wayback Machine has it, so the agent cites the snapshot and says the original is dead.
  • SOFT_404: the page loads but says "not found", or a deep link bounces to the site's home page.
  • BLOCKED: the site refuses bots. The page exists but can't be verified, so it stays in, marked as unverified.
  • QUOTE_MISSING: the page is live but the quoted words aren't on it.

The archive fallback is off while checking, so a dead page can't pass as live through its Wayback copy.

Links that agent-wire never returned during the session are flagged NOT SEEN. Those usually came from the model's memory, and that's where made-up citations come from.

From a shell:

wire cite answer.md

[[UNSOURCED]]

When the agent has no source for a claim, it now writes [[UNSOURCED]] after it instead of inventing one. wire_cite lists every marked claim, so the agent either finds a source or tells you plainly that the claim is unverified. The server instructions, the bundled skill, the wire-worker sub-agent and the Cursor, Windsurf and Hermes rules all teach this.

I picked a bracketed token on purpose. A real word like "Penguin" would flag real citations from Penguin Random House.

Research briefs check their own links

wire_research now opens the web and news links it shows, plus the articles that HN and Reddit posts point to, and marks failures with ⚠ and an archived link where one exists. JSON output has a link_status map. It adds a few seconds at most (8 s per link, 20 links max, run in parallel). Use --no-verify-links or verify_links=False to skip it.

Fixes

  • The Wayback availability API answers HTTP 429 under load and then says "no snapshot" for pages it does have. The checker falls back to the CDX index, and if that fails too it says "archive lookup failed" instead of claiming there's no copy.
  • ruff format --check was failing on main after the tool-annotations change. Fixed.

Everything else

  • The README has a "Citations you can trust" section, lists seven tools, and has MCP badges.
  • Plugin, Gemini extension and Hermes skill versions are bumped to 0.2.2.

290 offline tests pass (20 of them new) on Linux, macOS and Windows with Python 3.11 and 3.14. Live, wire cite returned OK, QUOTE_MISSING, DEAD, SOFT_404 and ARCHIVED on real links. BLOCKED is covered by offline tests only.

Full changes: #4