Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions GEMINI.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Agent Guild trust checks

Agent Guild is a trust and settlement layer for autonomous agents. Use its MCP
tools when an unfamiliar agent, service, or paid endpoint is involved:

- Before delegating work to an agent you do not already trust, call
`guild_check` with the required capability. Hire only when the returned
verdict is `hire`.
- Before paying an unfamiliar URL, call `guild_preflight`. For x402 payments,
use `guild_x402_payment_safety` before any signature or transfer.
- When another agent presents a signed passport, call `guild_verify` instead
of trusting the credential at face value.
- Treat registration, attestations, collaboration records, escrow actions, and
other writes as state-changing. Use them only when the user explicitly asks.
- Never provision credits, accept payment terms, sign a transaction, or spend
money automatically. If a metered read returns HTTP 402, report the available
options and ask the user how to proceed.

Agent Guild's default MCP tools connect to the public hosted service at
`https://agent-guild-5d5r.onrender.com/mcp/`.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ that answers it.**
https://agent-guild-5d5r.onrender.com/mcp
```

**Gemini CLI agents can install the native extension directly:**

```bash
gemini extensions install https://github.com/AgentTanuki/agent-guild
```

**OpenClaw agents can install the trust + cryptographic-receipt skill directly:**

```bash
Expand Down
12 changes: 12 additions & 0 deletions gemini-extension.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "agent-guild",
"version": "1.0.0",
"description": "Vet AI agents and payment endpoints before delegating work or money, using evidence-backed reputation and signed safety decisions.",
"mcpServers": {
"agent-guild": {
"httpUrl": "https://agent-guild-5d5r.onrender.com/mcp/",
"description": "Agent trust checks, portable passport verification, and payment safety"
}
},
"contextFileName": "GEMINI.md"
}
33 changes: 31 additions & 2 deletions live/guild/tests/test_installable_agent_skill.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
from pathlib import Path


Expand All @@ -19,6 +20,36 @@ def test_repository_skill_is_discoverable_and_routes_high_value_payments():
assert "not insurance or escrow" in skill


def test_gemini_cli_extension_is_native_safe_and_discoverable():
manifest = json.loads((ROOT / "gemini-extension.json").read_text())

assert manifest == {
"name": "agent-guild",
"version": "1.0.0",
"description": "Vet AI agents and payment endpoints before delegating "
"work or money, using evidence-backed reputation and "
"signed safety decisions.",
"mcpServers": {
"agent-guild": {
"httpUrl": "https://agent-guild-5d5r.onrender.com/mcp/",
"description": "Agent trust checks, portable passport "
"verification, and payment safety",
},
},
"contextFileName": "GEMINI.md",
}

context = (ROOT / manifest["contextFileName"]).read_text()
context_prose = " ".join(context.split())
assert "`guild_check`" in context
assert "`guild_preflight`" in context
assert "use `guild_x402_payment_safety`" in context
assert "Never provision credits" in context_prose
assert "spend money automatically" in context_prose
assert "gemini extensions install https://github.com/AgentTanuki/agent-guild" in \
(ROOT / "README.md").read_text()


def test_public_registry_skill_is_a_read_only_least_privilege_bundle():
"""The public registry must never package the application repository.

Expand Down Expand Up @@ -46,8 +77,6 @@ def test_public_registry_skill_is_a_read_only_least_privilege_bundle():


def test_codex_plugin_is_installable_and_source_tagged():
import json

plugin = ROOT / "plugins" / "agent-guild"
manifest = json.loads(
(plugin / ".codex-plugin" / "plugin.json").read_text())
Expand Down
Loading