WaxSeal
OfficialWaxSeal gives AI agents a cryptographic identity layer, enabling document signing, identity verification, and human-in-the-loop approvals backed by on-chain NFT identities.
Get platform overview (
waxseal.info): Retrieve a full overview of the WaxSeal trust infrastructure, available tiers, trust layers, and a guide to all MCP tools — no configuration required.Verify identities (
waxseal.identity.verify): Look up any WaxSeal fingerprint (64-char hex) on Ethereum, Base, or BNB Chain to confirm the owner's display name, wallet address, chain, lifecycle status, and public key.Sign documents (
waxseal.document.sign): Attach a tamper-evident Ed25519 signature to any text, code, or artifact using your WaxSeal private key — requiresWAXSEAL_PRIVATE_KEY_PEM.Verify signatures (
waxseal.signature.verify): Confirm that a document or message was genuinely signed by the holder of a specific on-chain fingerprint, fetching the public key directly from the blockchain.Create human approval tokens (
waxseal.approval.create): Generate a cryptographically signed, time-limited approval token that proves you explicitly authorized a specific AI agent action — requiresWAXSEAL_PRIVATE_KEY_PEM.Verify approval tokens (
waxseal.approval.verify): Validate an approval token before an agent executes a high-risk or irreversible action, checking the signature, expiry, and optionally confirming the signer's on-chain identity.
Brings cryptographic signing and approval verification to Windsurf (by Codeium), allowing AI agents to require human approval before executing high-risk actions.
Packages
Package | What it is | Install |
Browser + Node SDK — verify identities, validate signatures, embed badges, verify webhooks |
| |
MCP server for Claude, Cursor, Windsurf, and VS Code — verify identities, sign documents, gate AI actions with human approvals |
|
Related MCP server: Agent Receipts
@waxseal/mcp — for AI agents
Give Claude, Cursor, Windsurf, or VS Code Copilot a cryptographic identity layer in under two minutes.
{
"mcpServers": {
"waxseal": {
"command": "npx",
"args": ["-y", "@waxseal/mcp"],
"env": {
"WAXSEAL_PRIVATE_KEY_PEM": "-----BEGIN PRIVATE KEY-----\n<your key>\n-----END PRIVATE KEY-----"
}
}
}
}No install needed. Use the hosted server in any HTTP-capable MCP client:
https://api.waxseal.id/mcp
What the 6 tools give your agent:
Tool | What it does | Key needed? |
| Platform overview, tiers, and tool guide | No |
| Look up fingerprint → name, chain, wallet, status | No |
| Confirm an Ed25519 signature against an on-chain key | No |
| Validate a human approval token before executing | No |
| Sign any content with your WaxSeal private key | Yes |
| Create a signed, time-limited approval token | Yes |
Verify-only tools work with zero configuration. Signing tools require WAXSEAL_PRIVATE_KEY_PEM.
→ Full MCP docs · Smithery listing · npm
@waxseal/verify — for apps and backends {#waxsealverify}
npm install @waxseal/verifyWorks in React, Vue, Node.js, n8n, serverless functions, and any runtime with fetch.
Two modes, one fingerprint
Mode 1 · Badge Verification
"Does this WaxSeal exist and is it real?"
Confirm a seal is on-chain. No user interaction required — the fingerprint alone is enough.
Use cases
✦ Verified author badge on blog posts and articles
✦ Contributor identity on GitHub-style tools
✦ Publisher verification on CMS platforms
✦ Prove you created something before AI did
import { verifySeal } from "@waxseal/verify";
const seal = await verifySeal({ fingerprint: "a1b2c3d4..." });
if (seal.valid && seal.onChain) {
console.log(seal.displayName, "·", seal.chain);
// "Ada Lovelace · base"
}Mode 2 · Login & Action Approval
"Did this person sign this, right now?"
A signed challenge proves the key holder is present — replaces passwords, OTP, and email loops entirely.
Use cases
✦ Passwordless sign-in — no email, no OTP, no credentials to breach
✦ Approve a document or high-value transaction
✦ Gate a comment, post, or vote behind verified identity
✦ Issue an API key only to verified seal holders
✦ Automate identity checks in n8n / Make.com / Zapier
const seal = await verifySeal({
fingerprint: "a1b2c3d4...",
message: "I approve this transfer.",
signature: "base64url...",
});
if (seal.valid && seal.onChain && seal.signatureValid) {
// Cryptographic proof — no password, no session token
}React Badge
import { WaxSealBadge } from "@waxseal/verify/badge";
<WaxSealBadge fingerprint="a1b2c3d4..." />Or build your own:
import { useEffect, useState } from "react";
import { verifySeal, type VerifyResult } from "@waxseal/verify";
export function SealBadge({ fingerprint }: { fingerprint: string }) {
const [seal, setSeal] = useState<VerifyResult | null>(null);
useEffect(() => {
let active = true;
verifySeal({ fingerprint }).then((r) => active && setSeal(r));
return () => { active = false; };
}, [fingerprint]);
if (!seal?.valid || !seal.onChain) return null;
return (
<a href={`https://waxseal.id/seal/${seal.fingerprint}`} target="_blank" rel="noopener noreferrer">
✦ {seal.displayName ?? seal.fingerprint.slice(0, 8)}
</a>
);
}HTML Embed (no build step)
<script src="https://waxseal.id/embed.js"></script>
<span data-wax-seal="YOUR_64_CHAR_FINGERPRINT"></span>Email — script tags are blocked by mail clients. Use a plain link instead:
<a href="https://waxseal.id/seal/YOUR_FINGERPRINT">Verify my Wax Seal</a>
Webhook Verification
import { verifyWebhookSignature, isWaxSealWebhookEvent } from "@waxseal/verify/webhooks";
app.post("/webhook/waxseal", express.raw({ type: "*/*" }), (req, res) => {
const valid = verifyWebhookSignature({
body: req.body,
signature: String(req.headers["x-waxseal-signature"]),
secret: process.env.WAXSEAL_WEBHOOK_SECRET,
});
if (!valid) return res.status(401).send("Invalid signature");
const event = JSON.parse(req.body.toString());
if (isWaxSealWebhookEvent(event, "seal.minted")) {
console.log("New seal:", event.data.fingerprint, "on", event.data.chain);
}
res.sendStatus(200);
});Webhook events
Event | When it fires |
| A seal was verified via the API |
| A new seal NFT was minted on-chain |
| Seal name, avatar, or metadata changed |
| A seal holder started a paid subscription |
| A subscription expired or was cancelled |
| A login challenge was verified — user authenticated |
REST API — no SDK, no key required
POST https://api.waxseal.id/v1/verify
Content-Type: application/json
{
"fingerprint": "<64-char hex>",
"message": "...",
"signature": "..."
}{
"valid": true,
"onChain": true,
"chain": "base",
"displayName": "Ada Lovelace",
"walletAddress": "0x…",
"signatureValid": true,
"verifiedAt": "2026-01-01T00:00:00Z"
}Works with everything
Stack | How |
React / Vue / Svelte |
|
Node.js / Express | Same package + webhook helper |
n8n | HTTP Request node → REST API, or npm package in Code node |
Make.com | HTTP module → REST API |
Zapier | Webhook by Zapier trigger |
PHP / Python / Go | Plain HTTP POST to the REST API |
Static HTML / CMS | Two-line |
Claude / Cursor / Windsurf / VS Code |
VerifyResult type
type VerifyResult = {
valid: boolean;
fingerprint: string;
onChain: boolean;
chain?: "ethereum" | "base" | "bnb";
walletAddress?: string;
displayName?: string;
publicKeyConfirmed?: boolean;
signatureValid?: boolean;
verifiedAt?: string;
error?: string;
};MIT © Wax Seal
Maintenance
Related MCP Servers
- AlicenseAqualityCmaintenanceCryptographic accountability for AI agents. Ed25519-signed receipts for every MCP tool call. Constraints, chains, AI judgment, invoicing, and local dashboard included.Last updated24221MIT
- AlicenseAqualityBmaintenanceAI agent identity, permissions, trust scores, and tamper-evident audit trails. 17 MCP tools: register agents (Ed25519 keypairs), check permissions (sub-5ms), emit audit events, verify trust scores (0-100), delegate credentials, ephemeral agents. IETF Internet-Draft filed. Works with LangChain, OpenAI, CrewAI, Stripe ACP. npx @vorim/mcp-serverLast updated1710535MIT

01 Protocol MCP Serverofficial
Flicense-qualityDmaintenanceEnables creation, verification, and evolution of cryptographically verifiable AI agent identities (.01ai) via MCP for Claude Desktop and other MCP clients.Last updated1
Related MCP Connectors
Secure, user-owned long-term memory for AI agents over OAuth-protected remote MCP. Save, search, recall, update, and govern preferences, project context, decisions, and task state across ChatGPT, Claude, Copilot, IDEs, and CLIs.
Native Solana staking for AI agents. 26 MCP tools, one-shot signing, webhooks.
No-key MCP: audit/certify MCPs, signed trust history; join Gold Rush Town & build with your LLM.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/degenlegion-com/waxseal-sdk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server