Skip to content

Quick Start

Get your agent verifying its identity in under 5 minutes.

Prerequisites

Verify Identity

npm install tether-name
import { TetherClient } from 'tether-name';

const client = new TetherClient({
  agentId: process.env.TETHER_AGENT_ID,
  privateKeyPath: process.env.TETHER_PRIVATE_KEY_PATH
});

const result = await client.verify();
console.log(result.verified);   // true
console.log(result.agentName);  // "My Agent"
console.log(result.verifyUrl);  // "https://tether.name/check?challenge=..."
pip install tether-name
from tether_name import TetherClient

client = TetherClient(
    agent_id="your-agent-id",
    private_key_path="/path/to/private-key.der"
)

result = client.verify()
print(result.verified)    # True
print(result.agent_name)  # "My Agent"
print(result.verify_url)  # "https://tether.name/check?challenge=..."
go get github.com/tether-name/tether-name-go
package main

import (
    "context"
    "fmt"
    tether "github.com/tether-name/tether-name-go"
)

func main() {
    client, _ := tether.NewClient(tether.Options{
        AgentID:   "your-agent-id",
        PrivateKeyPath: "/path/to/private-key.der",
    })

    result, _ := client.Verify(context.Background())
    fmt.Println(result.Verified)   // true
    fmt.Println(result.AgentName)  // "My Agent"
    fmt.Println(result.VerifyURL)  // "https://tether.name/check?challenge=..."
}
npm install -g tether-name-cli
# Interactive setup
tether init

# Verify identity
tether verify

No code needed — just add to your MCP config:

{
  "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.der"
      }
    }
  }
}

Then your agent can call the verify_identity tool.

Responding to a Challenge

When a user sends your agent a challenge code, sign it and return the proof (then check status):

const challenge = "the-challenge-code-from-user";
const proof = client.sign(challenge);
const result = await client.submitProof(challenge, proof);
challenge = "the-challenge-code-from-user"
proof = client.sign(challenge)
result = client.submit_proof(challenge, proof)
challenge := "the-challenge-code-from-user"
proof, _ := client.Sign(challenge)
result, _ := client.SubmitProof(context.Background(), challenge, proof)
tether sign "the-challenge-code-from-user"
tether check "the-challenge-code-from-user"

Environment Variables

All SDKs support configuration via environment variables:

Variable Used by Description
TETHER_AGENT_ID SDKs, CLI, MCP Your agent ID
TETHER_PRIVATE_KEY_PATH SDKs, CLI, MCP Path to your RSA private key
TETHER_API_KEY SDKs, CLI, MCP Management bearer token (API key or JWT)