Nous Hermes Skill
The Conto skill for Nous Hermes adds fine-grained spending policies to any AI agent. It checks every payment against 20+ policy rule types before money leaves the wallet.How It Works
- Integrated (PRIVY/SPONGE) — Your wallet provider holds the keys (Privy or Sponge, respectively). Conto evaluates policies and orchestrates execution through the provider. One API call handles policy check + execution.
- External — Agent holds the keys. Agent calls approve, transfers itself, then confirms.
Install
From well-known endpoint (recommended)
SKILL.md and conto-check.sh from the well-known discovery endpoint and installs them into ~/.hermes/skills/conto/.
Manual install
Copy the skill files directly:~/.hermes/config.yaml):
Configure
1. Connect your agent in Conto
Sign in to the Conto dashboard and connect your agent. You’ll register your wallet in the walkthrough below.2. Generate an SDK key
Go to Agents > your agent > SDK Keys > Generate New Key.- Select Standard for payment approval only
- Select Admin if you want the agent to create/manage policies
3. Add to Hermes env
Add your SDK key to~/.hermes/.env:
Usage
Telegram / Discord / WhatsApp
CLI
Standard vs Admin SDK Keys
| Capability | Standard | Admin |
|---|---|---|
| Check payment policies | Yes | Yes |
| Confirm payments | Yes | Yes |
| Pre-authorize x402 calls | Yes | Yes |
| Read policies and transactions | Yes | Yes |
| Create/update/delete policies | No | Yes |
| Manage agents and wallets | No | Yes |
Create Policies from Hermes
With an admin SDK key, manage policies via natural language:Test Policies
After creating policies, verify enforcement:Supported Policy Types
| Type | What it controls |
|---|---|
MAX_AMOUNT | Per-transaction cap |
DAILY_LIMIT / WEEKLY_LIMIT / MONTHLY_LIMIT | Cumulative spend caps |
ALLOWED_CATEGORIES / BLOCKED_CATEGORIES | Category whitelist/blocklist |
ALLOWED_COUNTERPARTIES / BLOCKED_COUNTERPARTIES | Address whitelist/blocklist |
TIME_WINDOW / DAY_OF_WEEK | Business hours, allowed days |
BLACKOUT_PERIOD | Maintenance windows |
VELOCITY_LIMIT | Transaction rate limiting |
REQUIRE_APPROVAL_ABOVE | Human approval threshold |
GEOGRAPHIC_RESTRICTION | Country/OFAC restrictions |
CONTRACT_ALLOWLIST | DeFi contract restrictions |
X402_PRICE_CEILING | Max per x402 API call |
X402_ALLOWED_SERVICES / X402_BLOCKED_SERVICES | x402 service allowlist/blocklist |
X402_MAX_PER_SERVICE | Per-service daily cap |
End-to-End Example: Pay a Vendor on Tempo Testnet
This walkthrough sends a real payment through the full external-wallet flow: approve → transfer on-chain → confirm back to Conto.Prerequisites
- Agent connected in Conto
- SDK key (
conto_agent_...) configured in~/.hermes/.env - At least one policy (e.g. a 200 pathUSD per-transaction limit)
- pathUSD in the agent’s wallet (faucet)
Step 1 — Create a spending policy
POST /api/sdk/policies and returns the policy ID. Verify it:
Step 2 — Request a payment (approve)
requestId.
Step 3 — Transfer on-chain
Because this is an external wallet, the agent transfers pathUSD itself using its own keys. The skill handles this automatically — you don’t need to do anything extra.Step 4 — Confirm back to Conto
After the on-chain transfer succeeds, the skill reports the transaction hash:Step 5 — Verify the result
What happens if a policy blocks the payment?
Try exceeding the limit:MAX_AMOUNT: 300 exceeds limit of 200). No on-chain transfer occurs. The denied attempt appears under Alerts in the dashboard.
Verify in Dashboard
After running payments through the skill, check the Conto dashboard:- Transactions — confirmed payments with tx hashes and explorer links
- Alerts — denied payment attempts with violation details
- Agents — spend tracking (daily/weekly/monthly used)
Run the E2E Test
For automated testing against a local Conto instance:Troubleshooting
Skill can't reach Conto (connection refused / timeout)
Skill can't reach Conto (connection refused / timeout)
Verify If you get a valid JSON response, the URL is reachable.
CONTO_API_URL in ~/.hermes/.env is correct. For the hosted platform, use https://conto.finance. For local development, use http://localhost:3000. Test connectivity:'Invalid or expired SDK key'
'Invalid or expired SDK key'
SDK keys are scoped to a single agent. Check that:
- The key starts with
conto_agent_(notconto_org_) - The key hasn’t been revoked in the dashboard under Agents > SDK Keys
- You’re using the correct key for the correct agent
Payment denied unexpectedly
Payment denied unexpectedly
The denial response includes a
violations array listing every rule that failed. Common causes:- Spend limit exceeded — check daily/weekly/monthly counters in the dashboard under Agents > Spend Tracking
- Counterparty not on allowlist — if you have an
ALLOWED_COUNTERPARTIESpolicy, the recipient must be listed - Outside time window —
TIME_WINDOWandDAY_OF_WEEKrules use the timezone set on the policy - Category mismatch — if
ALLOWED_CATEGORIESis set and nocategoryis provided in the request, the rule is skipped (not denied). But ifBLOCKED_CATEGORIESmatches, it denies.
Payment approved but no on-chain transfer (external wallet)
Payment approved but no on-chain transfer (external wallet)
In external wallet mode, Conto only enforces policy — the agent must transfer funds itself. If the approve call succeeds but no transfer happens:
- Check the agent has enough pathUSD in its wallet
- Check the Hermes agent logs for transfer errors
- Ensure the wallet address registered in Conto matches the agent’s actual wallet
Admin commands fail with 'insufficient permissions'
Admin commands fail with 'insufficient permissions'
Policy management requires an Admin SDK key. Standard keys can only read policies and approve/confirm payments. Check the key type in the dashboard under Agents > SDK Keys — the scope column shows
standard or admin.Policies not evaluating (all payments approved)
Policies not evaluating (all payments approved)
Policies must be assigned to the agent. Creating a policy alone doesn’t activate it. Assign via the dashboard (Policies > Assign to Agent) or via the API:Also verify the policy status is
ACTIVE (not DRAFT or DISABLED).Hermes can't find the skill after install
Hermes can't find the skill after install
Check the skill directory exists:If using
external_dirs, verify the path in ~/.hermes/config.yaml points to a directory containing SKILL.md. Hermes scans for SKILL.md files to discover skills.Restart the Hermes agent after installing or updating skills.