acuris-agent-guard
MCP server that verifies storefront merchants before AI agents make payments, checking if the merchant is a real legal entity bound to the domain, and returning a PROCEED, ABORT, or REVIEW decision to prevent payment to clones or fraudulent stores.
README
Acuris Agent Guard
Verify the merchant before your AI agent pays.
When an AI agent shops on someone's behalf, the entire trust stack verifies the buyer's agent (Visa Trusted Agent Protocol, Mastercard Agent Pay) — and nobody verifies the merchant. Agents don't read the URL bar or sniff a "too good to be true" deal; they autofill the saved card and pay. Security researchers have already shown agentic browsers checking out on fake stores (Guardio "Scamlexity", 2025), and AI assistants surface clone storefronts on look-alike domains (Netcraft: 34% of brand URLs returned by an LLM weren't brand-owned).
acuris-agent-guard is the one pre-pay check that answers:
Is this storefront a real, operating, sanctions-clean legal entity that actually controls the domain it claims?
{ address_valid, company_exists, website_bound, sanctions } → one decision:
PROCEED / ABORT / REVIEW. The differentiator is website_bound —
catching a clone that shows a real company's name/VAT on a fresh look-alike
domain, which a plain "does this company exist?" check waves through.
See it in 10 seconds (zero setup, runs offline)
Install into a virtualenv (recommended — modern Debian/Ubuntu block pip into
the system Python with an externally-managed-environment error; that's an OS
guard, not this package):
python3 -m venv .venv && . .venv/bin/activate
pip install acuris-agent-guard
python -m acuris_agent_guard.demo
Prefer an isolated CLI? pipx install acuris-agent-guard works too.
The same autonomous agent, same task, same clone — one checks the merchant first:
task: Buy the Aurora Linen Dress for me.
AGENT A — WITHOUT Acuris
• top result = aurora-boutique-official.shop → choosing it
• autofill saved card + shipping address → submit payment … €149
✗ Payment sent. €149 gone. Goods never arrive. (clone, 6-day-old domain)
AGENT B — WITH Acuris guard
• pre-pay check → acuris.verify_storefront("aurora-boutique-official.shop")
↩ ABORT domain_bound=False entity_resolves=True
reason: This domain is NOT bound to the registered company it claims — likely a clone.
✓ Purchase ABORTED. €149 protected.
• fall back to aurora-linen.example → PROCEED (bound to AURORA LINEN GMBH)
✓ Paid the real Aurora Linen GmbH.
Demo mode ships faithful, illustrative responses so it runs with no key. Set
ACURIS_API_KEY(and pass--live) to hit the real API.
Where it plugs into your loop
Any MCP agent (Claude Desktop / Claude Code / others) — one config line
First install the MCP extra into a venv (pip install "acuris-agent-guard[mcp]"),
then point the config at that venv's Python (use the absolute path, or pipx, so
it resolves regardless of the system Python):
"mcpServers": {
"acuris": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "acuris_agent_guard.mcp_server"],
"env": { "ACURIS_API_KEY": "your-key" } // omit for offline demo mode
}
}
Then: "Before paying any merchant, call verify_storefront and abort if it is
not safe_to_pay."
Plain Python (framework-agnostic guardrail)
from acuris_agent_guard import pre_pay_guard, PaymentBlocked
try:
pre_pay_guard("aurora-boutique-official.shop", name="Aurora Linen") # raises if unsafe
charge_card(...) # only runs if verified
except PaymentBlocked as e:
agent.note(str(e)) # do not pay; route to a verified seller
LangChain — integrations/langchain_guard.py
Adds verify_storefront as a tool and wraps your real pay tool so payment
is structurally impossible unless the storefront verifies (don't rely on the
model remembering to check).
Anthropic computer-use — integrations/computer_use_guard.py
Intercepts the action loop right before a "place order / pay" click; if the storefront fails, the click never executes and the block is fed back to the model as the tool result so it re-plans.
The verdict
from acuris_agent_guard import StorefrontVerifier
v = StorefrontVerifier().verify("aurora-boutique-official.shop", name="Aurora Linen")
v.decision # "ABORT"
v.safe_to_pay # False
v.reason # "This domain is NOT bound to the registered company ..."
v.to_dict() # full structured signals + score + evidence
The decision maps the API's authoritative recommended_action (proceed →
PROCEED, review/do_not_proceed → REVIEW, block → ABORT), so the SDK stays
in lockstep with the engine's full policy instead of re-deriving its own, and
fails closed — an unreachable/unverifiable storefront returns REVIEW,
never a silent PROCEED, and a real merchant that simply can't be bound is
REVIEW, never mislabeled a clone.
Honest scope
- A pre-pay risk signal, not fraud insurance, not a delivery guarantee, and not a certification. It catches impersonation / fabrication / sanctions — it cannot predict whether a genuine registered merchant will fail to ship.
- Domain↔entity binding is inferred from official registers + corroborating signals (TLS org, domain age, VAT), since WHOIS/RDAP is largely GDPR-redacted.
- It is not an anti-prompt-injection control; it scores the merchant, so wire it as a hard guardrail on the payment step, not an optional tool.
MIT © Acuris GmbH · built on the Acuris trust-data API.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.