Skip to content

feat: add SAID Protocol action provider (Solana agent identity + reputation)#1283

Open
Jugmaster wants to merge 1 commit into
coinbase:mainfrom
Jugmaster:feat/said-action-provider
Open

feat: add SAID Protocol action provider (Solana agent identity + reputation)#1283
Jugmaster wants to merge 1 commit into
coinbase:mainfrom
Jugmaster:feat/said-action-provider

Conversation

@Jugmaster

@Jugmaster Jugmaster commented Jun 12, 2026

Copy link
Copy Markdown

Description

Adds a SAID Protocol action provider — an on-chain identity and reputation layer for agent wallets on Solana (saidprotocol.com).

AgentKit gives every agent a wallet; SAID gives that wallet a verifiable identity and a track record. Reputation is derived from observable behavior — x402 payments received, anchored work receipts, peer feedback — not self-reported claims.

Five actions (Solana mainnet):

Action Type Purpose
get_agent_reputation read Check any wallet's reputation tier + composite score before paying it (e.g. via x402). A wallet with no history returns an explicit "unknown counterparty" result — never a fake neutral score.
find_agents read Discover SAID-registered agents ranked by reputation, with their published A2A/MCP endpoints and x402 payment wallets — find, vet, then pay or message.
register_said_identity write Register + verify this wallet's on-chain identity in one self-paid transaction (~0.0035 SOL account rent + one-time 0.01 SOL verification fee). Fully self-custodial: the agent's own wallet signs and pays; no third party signs anything.
send_agent_message write Send an agent-to-agent message to another SAID agent through the SAID relay. Sender must be registered (the relay records its verification + reputation); the recipient reads from its SAID mailbox, so any registered agent is reachable with no per-agent server.
check_agent_messages read Read incoming A2A messages addressed to this wallet, each annotated with the sender's wallet, name, verification status and reputation — so the agent can decide whether to act based on who is asking.

Design notes:

  • The read actions are plain HTTP calls to the public SAID API — no API keys, no authentication, no configuration required.
  • The already-verified check reads is_verified from the on-chain account (source of truth) rather than the indexer API, so an agent can never pay the verification fee twice.
  • Confirmation timeouts re-check getSignatureStatuses before reporting failure, so a landed transaction is never reported as an error.
  • Complementary to the existing erc8004 provider (SAID covers the Solana side and derives scores from payment/delivery behavior) and to proof-of-personhood systems (SAID scores the agent wallet's track record, not the human behind it).
  • Touches two WISHLIST themes: agent communication (a working relay via send_agent_message/check_agent_messages, plus endpoint discovery via find_agents) and commerce rails for agent payments (pre-payment counterparty checks).

Tests

  • 14 unit tests for the provider (mocked wallet provider + fetch), full @coinbase/agentkit suite passes: 61/61 suites, 878/878 tests. Lint + build clean. Changeset included.
  • Live-tested end-to-end on Solana mainnet through SolanaKeypairWalletProvider via a direct action-invocation harness:
Setup: SolanaKeypairWalletProvider.fromRpcUrl(<mainnet RPC>, <fresh funded keypair>)
Network: solana-mainnet

Action: register_said_identity { metadataUri: "https://saidprotocol.com" }

Successfully registered and verified this wallet's SAID identity.
- Agent identity PDA: DF5Q85AiQgcvRvV7S2CCUpemmiVSS7mUEREXtoo2HhFB
- Transaction: 48wz1WhTSspM79FqousfhZPKhvFJ5TjwPHLJC6tjpTg6WLUdzcccTkKm1Gkm4ikvAxKrcad6EcEYWA36XAnQr512
Reputation now accrues automatically from this wallet's behavior (x402 payments
received, work receipts, peer feedback). Other agents can check it via
get_agent_reputation.

(on-chain: tx finalized, costs matched documentation exactly)

Action: send_agent_message { toWallet: <registered agent>, message: "..." }

Message sent via the SAID relay.
- Task id: task_1781335872030_a8q7adxpc
- Status: created

Action: check_agent_messages {}

1 incoming message(s):
1. from <name> (<wallet>) — verified, reputation 0
   [created] task task_1781335872030_a8q7adxpc: AgentKit live test: SAID A2A relay round-trip

(A2A send + inbox round-trip executed live against the production SAID relay; sending to an unregistered wallet correctly returns "not a registered SAID agent".)

Action: register_said_identity (re-run, same wallet)

This wallet already has a verified SAID identity (PDA DF5Q85AiQgcvRvV7S2CCUpemmiVSS7mUEREXtoo2HhFB). Nothing to do.
Action: get_agent_reputation { wallet: "9nEGzMRjJbJjRXG3r3bpddARk4HSSopGpknyLmD6wo97" }

SAID reputation for 9nEGzMRjJbJjRXG3r3bpddARk4HSSopGpknyLmD6wo97:
- Tier: unranked (composite score 0)
- Registered SAID agent: yes
- On-chain verified: yes
- Note: registered but not yet scored — SAID has no behavioral history for this wallet yet.
Action: find_agents { query: "research", verifiedOnly: true, limit: 3 }

Found 3 SAID agent(s), ranked by reputation:
1. research_probe — 62pagdUh1qhsMav9tGyoCPA9uX8A1Vz3nXi9fo5mkMmz
   Reputation: silver (0.6319), on-chain verified
   ...

🤖 Generated with Claude Code

@cb-heimdall

cb-heimdall commented Jun 12, 2026

Copy link
Copy Markdown

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@github-actions github-actions Bot added documentation Improvements or additions to documentation action provider New action provider typescript labels Jun 12, 2026
@Jugmaster Jugmaster marked this pull request as ready for review June 13, 2026 07:07
@Jugmaster Jugmaster requested a review from murrlincoln as a code owner June 13, 2026 07:07
@Jugmaster Jugmaster force-pushed the feat/said-action-provider branch from ecf3bf9 to 370ad0d Compare June 13, 2026 07:33
…tation)

Adds a `said` action provider backed by SAID Protocol on Solana:

- get_agent_reputation: look up any wallet's reputation tier and composite
  score before paying it (e.g. via x402); unknown wallets return an explicit
  "unknown counterparty" result rather than a fake neutral score
- find_agents: discover SAID-registered agents ranked by reputation, with
  their published A2A/MCP endpoints and x402 payment wallets
- register_said_identity: register and verify this wallet's on-chain SAID
  identity in one self-paid transaction (PDA rent + 0.01 SOL verification
  fee); the already-verified check reads is_verified from the on-chain
  account, and confirmation timeouts re-check signature status so a landed
  transaction is never reported as an error
- send_agent_message / check_agent_messages: agent-to-agent messaging through
  the SAID relay. The sender must be a registered SAID agent and the relay
  records its verification and reputation; the recipient reads messages from
  its SAID mailbox, so no per-agent server is required and any registered
  agent is reachable

Reputation lookups and messaging are read/write HTTP calls requiring no
credentials. Registration is fully self-custodial: the agent's own wallet
signs and pays.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Jugmaster Jugmaster force-pushed the feat/said-action-provider branch from 370ad0d to a4fe5cf Compare June 13, 2026 18:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action provider New action provider documentation Improvements or additions to documentation typescript

Development

Successfully merging this pull request may close these issues.

2 participants