ExploreKnow Your AgentHow it worksDevelopersPricingSponsors Sign in

Know Your Agent

Know which agent is calling.
Before you let it in.

AI agents can now buy, book and call APIs on their own. Neptuv lets each agent prove its ERC-8004 identity with a signature, then checks its trust score against your rules — one API call, allow or deny, with the reasons logged.

The agent signs

Its SDK signs the method, URL, body hash, time and a one-time nonce with the wallet registered on ERC-8004.

You forward 4 headers

Your server passes the Neptuv-* headers and a hash of the body to /api/v1/verify.

Neptuv proves who it is

The signer must be the agent's registered wallet or owner. Old timestamps and reused nonces are refused.

Your rules decide

Score, label, checks, age, reports — your policy answers allow or deny, and the decision is logged.

Playground

Sign a request. Then try to break it.

This uses a sandbox agent on Base Sepolia whose key lives on Neptuv's server, so nothing here touches a real agent or wallet.

1 · The agent signs

Playground Agent · eip155:84532:8004

2 · Your server asks Neptuv

Sign a request first. Press Verify twice to see replay protection.

Three lines on each side

One-file SDKs for Python and JavaScript. Any Ethereum library can sign — viem, ethers, eth-account, a KMS.

If you build agents

Python
# pip install eth-account requests   ·   https://neptuv.xyz/sdk/neptuv.py
from neptuv import sign_request

headers = sign_request(AGENT_WALLET_KEY, "eip155:8453:1203", "POST", url, body)
requests.post(url, data=body, headers={**headers, "Content-Type": "application/json"})
JavaScript
// https://neptuv.xyz/sdk/neptuv.js  ·  works with viem or ethers
import { signRequest } from "./neptuv.js";

const headers = await signRequest({ agent: "eip155:8453:1203", method: "POST", url, body,
  signMessage: (m) => account.signMessage({ message: m }) });
await fetch(url, { method: "POST", body, headers: { ...headers, "Content-Type": "application/json" } });

If you run a platform

Flask
from neptuv import Neptuv, require_trusted_agent
neptuv = Neptuv(api_key=os.environ["NEPTUV_API_KEY"])

@app.post("/orders")
@require_trusted_agent(neptuv, min_score=70)   # 401 / 403 unless verified and allowed
def create_order():
    agent = flask.g.neptuv["agent"]
Express
import { neptuvGuard } from "./neptuv.js";

app.use(express.json({ verify: (req, _res, buf) => { req.rawBody = buf; } }));
app.post("/orders", neptuvGuard({ apiKey: process.env.NEPTUV_API_KEY, policyId: 1 }), createOrder);

For smart contracts

Trust you can check on-chain

Platform plans can ask for a signed EIP-712 attestation with every verification. Drop Neptuv's verifier contract into your protocol and require a minimum score before an agent can act — no oracle, no API call from the contract.

Solidity
NeptuvAttestationVerifier verifier = NeptuvAttestationVerifier(VERIFIER);

function act(NeptuvAttestationVerifier.TrustAttestation calldata a, bytes calldata sig) external {
    require(a.agentId == agentIdOf[msg.sender], "not this agent");   // bind it to the caller
    require(verifier.isTrusted(a, sig, 70), "agent not trusted");
    // ...
}

Questions

What is Know Your Agent (KYA)?

Know Your Agent is the agent version of KYC: before you let an AI agent buy, book or call your API, you check which agent it is and whether it can be trusted. With Neptuv the agent proves its ERC-8004 identity by signing the request with its registered wallet, and Neptuv checks its trust score against your rules.

Does the agent have to share its private key?

No. The agent signs a short text with its own wallet, the same way you sign in to a website with a crypto wallet. The key never leaves the agent's server, and signing costs no gas.

What stops someone from replaying a signed request?

Each signature covers the exact method, URL, body, a timestamp and a one-time nonce. Neptuv rejects requests older than five minutes and any nonce it has seen before.

Which wallet can sign for an agent?

The agentWallet set on the ERC-8004 Identity Registry, or the agent owner's wallet. Neptuv checks the signer against the registry, so a stolen agent name is useless without the key.

Can a smart contract check Neptuv's answer?

Yes. Platform plans can ask for a signed EIP-712 attestation of an agent's score. A small Solidity contract verifies it on-chain, so contracts can require a minimum trust score without calling Neptuv.