MCP server for tether.name — AI agent identity verification.
This server wraps the tether-name SDK, letting any MCP-compatible AI
agent verify its identity through Tether without writing integration code.
Tether is an identity verification service for AI agents. Agents hold their own RSA private keys and prove their identity by signing cryptographic challenges — no custodial risk, no passwords.
npx tether-name-mcp-serverThe server reads from environment variables:
| Variable | Required | Description |
|---|---|---|
TETHER_AGENT_ID |
For sign/submit/verify tools | Your Tether agent ID |
TETHER_PRIVATE_KEY_PATH |
For sign/submit/verify tools | Path to your RSA private key (PEM or DER) |
TETHER_API_KEY |
For management tools | Management bearer token (API key or JWT) |
TETHER_API_URL |
Optional | Override API base URL for key-lifecycle tools (list_agent_keys, rotate_agent_key, revoke_agent_key) |
verify_identity, request_challenge, sign_challenge, submit_proof, create_agent, list_agents, delete_agent, update_agent_identity, and list_domains use the SDK default API URL (https://api.tether.name).
Add to your claude_desktop_config.json:
{
"mcpServers": {
"tether": {
"command": "npx",
"args": [
"-y",
"tether-name-mcp-server"
],
"env": {
"TETHER_AGENT_ID": "your-agent-id",
"TETHER_PRIVATE_KEY_PATH": "/path/to/private-key.pem",
"TETHER_API_KEY": "sk-tether-name-..."
}
}
}
}
TETHER_API_KEYis only needed for management tools (create_agent,list_agents,delete_agent,update_agent_identity,list_domains,list_agent_keys,rotate_agent_key,revoke_agent_key).
request_challengedoes not require agent key env vars.verify_identity,sign_challenge, andsubmit_proofrequire bothTETHER_AGENT_IDandTETHER_PRIVATE_KEY_PATH.
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"tether": {
"command": "npx",
"args": [
"-y",
"tether-name-mcp-server"
],
"env": {
"TETHER_AGENT_ID": "your-agent-id",
"TETHER_PRIVATE_KEY_PATH": "/path/to/private-key.pem"
}
}
}
}Add to your VS Code settings or .vscode/mcp.json:
{
"mcp": {
"servers": {
"tether": {
"command": "npx",
"args": [
"-y",
"tether-name-mcp-server"
],
"env": {
"TETHER_AGENT_ID": "your-agent-id",
"TETHER_PRIVATE_KEY_PATH": "/path/to/private-key.pem"
}
}
}
}
}| Tool | Description |
|---|---|
verify_identity |
Complete verification flow in one call — requests a challenge, signs it, and submits proof |
request_challenge |
Request a new challenge string from the Tether API |
sign_challenge |
Sign a challenge string with the configured RSA private key |
submit_proof |
Submit a signed proof for a challenge |
get_agent_info |
Show the currently configured agent ID and key path |
These tools require TETHER_API_KEY to be set (it can be an API key or JWT bearer token).
| Tool | Description |
|---|---|
create_agent |
Create a new agent (with optional domain assignment via domainId) |
list_agents |
List all agents for the authenticated account |
delete_agent |
Delete an agent by ID |
update_agent_identity |
Update whether verification shows a verified domain (domainId) or account email |
list_domains |
List all registered domains |
list_agent_keys |
List key lifecycle entries (active, grace, revoked) for an agent |
rotate_agent_key |
Rotate an agent key (requires step-up: stepUpCode or challenge + proof) |
revoke_agent_key |
Revoke a key (requires step-up: stepUpCode or challenge + proof) |
For automation with API keys, prefer challenge+proof step-up.
- The agent calls
verify_identity - The MCP server requests a challenge from
api.tether.name - The challenge is signed locally using the agent's private key (the key never leaves the machine)
- The signed proof is submitted back to Tether for verification
- The result includes the agent's verified name and a public verification URL
For more granular control, use request_challenge, sign_challenge, and submit_proof individually.
- Non-custodial: Your private key stays on your machine. The MCP server reads it from a local file path — it's never transmitted.
- No passwords: Identity is proven through RSA challenge-response, not stored secrets.
- Local execution: The server runs as a local subprocess via STDIO. No remote server holds your keys.
Published to npm automatically via GitHub Actions when a release is created.
Update the version in:
package.json→"version"src/index.ts→versioninMcpServerconstructor
- Update version numbers above (they must match)
- Commit and push to
main - Create a GitHub release with a matching tag (e.g.
v1.0.0) - CI builds and publishes to npm automatically
npm run build
npm publish --access public- tether.name — Agent identity verification
- tether-name SDK — Node.js SDK
- MCP Protocol — Model Context Protocol
MIT