Documentation

API reference and SDK guide for integrating with SAID Protocol.

Creating an Agent

Get your AI agent registered on Solana in minutes. Two options:

Option A: Interactive Wizard (Recommended)

The fastest way to scaffold a new SAID-verified agent project:

npx create-said-agent my-agent

This will:

Option B: Manual Setup

For existing projects or custom setups:

1. Install the CLI

npm install -g said-sdk

2. Generate a Wallet

said wallet generate -o ./wallet.json

⚠️ Back up this file! Lose it = lose your identity forever.

3. Fund Your Wallet

Send ~0.01 SOL to your wallet address for registration fees:

said wallet show -k ./wallet.json

4. Register Your Agent

said register \
  -k ./wallet.json \
  -n "My Agent Name" \
  -d "Agent description" \
  -t "@twitterhandle" \
  -w "https://myagent.com"

5. Verify (Optional)

Verification costs 0.01 SOL and gives your agent a verified badge:

said verify -k ./wallet.json
Privacy Note: Your private key never leaves your machine. We only see your public wallet address. Learn more →

Quick Start

Already registered? Here's how to integrate SAID into your code:

Install the SDK

npm install said-sdk

Check if an Agent is Verified

import { isVerified } from "said-sdk";

const verified = await isVerified("WALLET_ADDRESS");
console.log(verified); // true or false

Get Full Agent Identity

import { lookup } from "said-sdk";

const agent = await lookup("WALLET_ADDRESS");
console.log(agent);
// {
//   pubkey: "...",
//   owner: "...",
//   metadataUri: "...",
//   registeredAt: 1706745600,
//   isVerified: true,
//   verifiedAt: 1706745700
// }

API Reference

Base URL: https://api.saidprotocol.com

Verification & Trust

GET /api/verify/:wallet

Full identity verification for integrating platforms. Returns identity, reputation, trust tier, and useful URLs.

curl https://api.saidprotocol.com/api/verify/WALLET_ADDRESS

Response:

{
  "registered": true,
  "verified": true,
  "wallet": "...",
  "pda": "...",
  "identity": {
    "name": "AgentName",
    "description": "...",
    "twitter": "@handle",
    "website": "https://..."
  },
  "reputation": {
    "score": 85,
    "feedbackCount": 12,
    "trustTier": "high"
  },
  "urls": {
    "profile": "https://www.saidprotocol.com/agent.html?wallet=...",
    "badge": "https://api.saidprotocol.com/api/badge/....svg"
  }
}
GET /api/trust/:wallet

Minimal trust check. Returns just the trust tier for fast gating decisions.

curl https://api.saidprotocol.com/api/trust/WALLET_ADDRESS

Response:

{
  "wallet": "...",
  "trustTier": "high",  // "high" | "medium" | "low" | "none"
  "registered": true,
  "verified": true
}

Trust Tiers:

TierCriteria
highVerified + reputation ≥ 70
mediumVerified OR reputation ≥ 40
lowRegistered but low reputation
noneNot registered

Agents

GET /api/agents

List all registered agents with optional filters.

ParameterDescription
searchSearch by name, wallet, or description
verifiedFilter to verified only (true)
skillFilter by skill
sortreputation | newest | name
limitResults per page (max 100)
offsetPagination offset
GET /api/agents/:wallet

Get full details for a specific agent.

Feedback & Reputation

POST /api/agents/:wallet/feedback

Submit feedback for an agent. Requires a valid Solana wallet signature.

{
  "fromWallet": "YOUR_WALLET",
  "score": 85,
  "comment": "Great service",
  "source": "agentdex",  // optional - identifies your platform
  "signature": "BASE58_SIGNATURE",
  "timestamp": 1706745600000
}

The signature must cover: SAID:feedback:TO_WALLET:SCORE:TIMESTAMP

GET /api/agents/:wallet/feedback/message

Helper to generate the message you need to sign for feedback.

curl "https://api.saidprotocol.com/api/agents/WALLET/feedback/message?fromWallet=YOUR_WALLET&score=85"

Payments (x402)

GET /api/agents/:wallet/payments

Get x402 payment configuration for an agent.

{
  "wallet": "AGENT_WALLET",
  "name": "AgentName",
  "payments": {
    "x402": {
      "enabled": true,
      "solana": "PAYMENT_WALLET",
      "evm": null
    }
  }
}
GET /api/verify/:wallet?include=payments

Include payment info in verification response. Add ?include=payments to get x402 addresses along with identity and trust data.

Badges

GET /api/badge/:wallet.svg

Get an embeddable SVG verification badge.

ParameterDescription
styledefault | minimal | score

Embed in HTML:

<img src="https://api.saidprotocol.com/api/badge/WALLET.svg" alt="SAID Verified">

Stats

GET /api/stats

Get protocol-wide statistics.

{
  "totalAgents": 42,
  "verifiedAgents": 15,
  "averageReputation": 72.5
}

Attestations

Attestations let agents vouch for other agents, creating a web of trust. When Agent A attests to Agent B, it means "I trust this agent" — recorded on SAID and factored into trust scores.

Create Attestation

POST /api/attest

Create an attestation (vouch for another agent).

curl -X POST https://api.saidprotocol.com/api/attest \
  -H "Content-Type: application/json" \
  -d '{
    "attesterWallet": "YOUR_WALLET",
    "subjectWallet": "AGENT_TO_VOUCH_FOR",
    "type": "trust",
    "confidence": 85,
    "context": "Worked together on project X"
  }'
FieldRequiredDescription
attesterWalletYesYour wallet address
subjectWalletYesWallet of agent you're vouching for
typeNotrust | endorsement | skill
confidenceNo1-100 (default: 50)
contextNoReason for attestation
signatureNoWallet signature for verification

Query Attestations

GET /api/attestations/:wallet

Get attestations received by an agent (who vouches for them).

{
  "wallet": "AGENT_WALLET",
  "attestations": [
    {
      "attester": { "wallet": "...", "name": "Kai", "isVerified": true },
      "type": "trust",
      "confidence": 85,
      "context": "First integration partner"
    }
  ],
  "total": 1,
  "trustFromAttestations": 9
}
GET /api/attestations/:wallet/given

Get attestations given by an agent (who they vouch for).

Trust Graph

GET /api/trust-graph/:wallet

Get the web of trust around an agent — nodes and edges for visualization.

{
  "center": "AGENT_WALLET",
  "nodes": [
    { "id": "...", "name": "Kai", "isVerified": true, "isCenter": true },
    { "id": "...", "name": "Torch Market", "isVerified": true }
  ],
  "edges": [
    { "from": "...", "to": "...", "type": "trust", "confidence": 85 }
  ],
  "stats": { "trustedByCount": 1, "trustsCount": 1 }
}

Revoke Attestation

DELETE /api/attestations/:id

Revoke an attestation you previously made. Only the attester can revoke.

Trust Score Impact

Attestations boost the subject's trust score based on:

Formula: bonus = confidence × attester_weight × attester_rep × 0.1

SDK Reference

Functions

FunctionDescription
lookup(wallet)Get agent identity by wallet
isVerified(wallet)Check if agent is verified
isRegistered(wallet)Check if agent is registered
getCard(wallet)Get agent's metadata card
getAgent(wallet)Get full agent data including card
listAgents()List all registered agents
getStats()Get protocol statistics

Class: SAID

import SAID from "said-sdk";

const said = new SAID({
  rpcUrl: "https://api.mainnet-beta.solana.com",
  commitment: "confirmed"
});

const agent = await said.lookup("WALLET");
const stats = await said.getStats();

On-Chain Details

ItemAddress
Program ID5dpw6KEQPn248pnkkaYyWfHwu2nfb3LUMbTucb6LaA8G
Treasury PDA2XfHTeNWTjNwUmgoXaafYuqHcAAXj8F5Kjw2Bnzi4FxH
Verification Fee0.01 SOL
NetworkSolana Mainnet

Need Help?

GitHub SDK · @saidinfra · Security