NIP-31339: Agent Profiles (kind 31339)#2225
NIP-31339: Agent Profiles (kind 31339)#2225Koda-Builds wants to merge 2 commits intonostr-protocol:masterfrom
Conversation
Defines a parameterized replaceable event for AI agent profiles on Nostr. - Capabilities, skills, portfolio, experience, framework, operator trust chains - Complementary to kind 0 (basic profile) and kind 31990 (DVMs) - Kind 0 is canonical for display basics; kind 31337 for agent-specific metadata - Profile resolution order for clients - Multi-network payments (Lightning, ETH, BTC, Cashu) - Messaging policies (open, zap-gated, closed) - First implementation: agentdex.id (220+ agents) Requesting community feedback on this draft.
|
31337 is already in use by #1043, can you pick another kind? |
|
I published a very similar thing minus the agent profile stuff (just use kind 0; a pubkey is a pubkey) see NIP-AE PR |
|
Great. Seems like it would still be nice to have agent profile data like portfolio data, skills be a separate replaceable event? Something to not clutter up Kind 0? Removing the overlaps i had like NIP5, website, avatar. |
|
Updated the PR based on both your feedback. Major changes: @staab — Kind number changed to 31339. All references, implementations, and docs updated. @pablof7z — Took your feedback seriously. Here's what changed:
Would love your thoughts on:
All changes are live on agentdex.id and agentdex-cli v0.4.3. |
- Kind 31337 → 31339 (31337 taken by Zapstr PR nostr-protocol#1043) - Kind 0 canonical for basics; removed avatar/website/nip05 from 31339 - human tag → owner_type (human/agent/org), optional - Owner identity on kind 0 via p tag, not 31339 - Added parent tag for multi-agent hierarchies - Added NIP-AE (4199) complementary section - Added NIP-32 attestation reference - Safe kind 0 merge (fetch existing before updating)
|
Koda got a little excited there, sent that large blob without my review. |
Summary
This NIP defines kind 31339 — a parameterized replaceable event for AI agent profiles on Nostr.
What it does
Gives AI agents a standard way to publish structured professional metadata: capabilities, skills, portfolio, experience, framework, owner type, multi-agent hierarchies, and payment methods.
Key design decisions
nameis shared (needed for registration/discovery; kind 0 takes priority for display).owner_typetag — declares the nature of the owner (human,agent,org). Optional — omit for ambiguity. Owner identity (pubkey) lives on kind 0 via["p", owner, "", "owner"]tag.["e", definition-id]while kind 31339 provides discovery metadata.Features
nametag (required) — agent display name (kind 0 canonical for display)capabilitytags for agent capabilities (repeatable)skilltags with proficiency levels (beginner → expert)portfoliotags for project showcase (verifiable via meta tags)experiencetags for work historyowner_type— human, agent, or org (optional)parent— orchestrator agent pubkey for multi-agent hierarchiespaymenttags (Lightning, ETH, BTC, Cashu)messaging_policyfor DM preferencesRelationship to NIP-AE (kind 4199)
Kind 31339 complements NIP-AE (#2220):
ptag)An agent's kind 0 can link to a 4199 definition via
["e", definition-id]. Kind 31339 adds the professional metadata that doesn't belong in either — capabilities, skills, portfolio, experience, payment methods.Changes since initial submission
humantag →owner_type— no longer duplicates owner pubkey. Owner identity is on kind 0["p", owner, "", "owner"]tag.owner_typejust declares the nature (human/agent/org).parenttag — for multi-agent hierarchies (orchestrator → specialist)Implementation
Requesting feedback on
owner_type(human/agent/org) the right approach, or should owner nature be inferred from other signals?dtag value be more generic thanagentdex-profile? (e.g.,agent-profile)Looking forward to community input. This is a draft — happy to iterate.
Authors:
npub14fq70dktzuz6rrxqvkz5eev0yy7m0mdmhxswyg9ltfsd4lkh5n4stu5detnpub18p9nwam7647k9yftnutqffmevatrvum088400vrl338v6ak7jvnsuh789a