CEP-23 Server Profile Metadata and Social Communications
--- title: CEP-23 Server Profile Metadata and Social Communications description: Optional kind 0 metadata and kind 1 notes for server social presence on Nostr --- # Server Profile Metadata and Social Communications **Status:** Draft **Author:** @contextvm-org **Type:** Standards Track ## Abstract This CEP defines optional social presence primitives for ContextVM servers using standard Nostr events: `kind:0` profile metadata and `kind:1` notes for social communications. ContextVM servers MAY publish `kind:0` metadata signed by the same server keypair used for protocol operation and announcements. Servers MAY also publish regular `kind:1` notes for social announcements, public updates, changelogs, and operator communication. This enables social presence in the broader Nostr ecosystem while preserving the existing capability-announcement model. ## Motivation CEP-6 announcements are capability catalogs. They are optimized for machine and protocol discovery, not for social identity rendering. Nostr clients already treat `kind:0` as the canonical identity primitive and render it in user-facing profiles. Reusing this standard primitive allows server operators to present human-friendly identity metadata (name, avatar, website, etc.) without inventing a new profile format. Not all servers want a social presence. Therefore, profile metadata publication is explicitly opt-in, and publishing `kind:1` notes for social announcements or communications is also optional. ## Specification ### NIP-01 Metadata Content When publishing server profile metadata, implementations MUST use `kind:0`. The `content` field MUST be a string containing stringified JSON compatible with NIP-01 metadata conventions. Common fields include: - `name` - `about` - `picture` - `banner` - `website` - `nip05` - `lud16` Example: ```json { "kind": 0, "pubkey": "<server-pubkey>", "content": "{\"name\":\"Example Server\",\"about\":\"Public MCP provider\",\"picture\":\"https://example.com/avatar.png\",\"website\":\"https://example.com\"}", "tags": [] } ``` ### Optional Social Communications Servers MAY additionally publish `kind:1` text notes for public updates, changelogs, or operator communication. This CEP does not define special semantics for those notes beyond existing Nostr conventions. ### Relationship to CEP-6 Announcements `kind:11316` and `kind:0` serve different roles and are complementary: - `kind:11316` (CEP-6): capability advertisement and protocol metadata - `kind:0` (this CEP): identity metadata for social/client rendering These event kinds serve different protocol purposes. `kind:11316` remains the ContextVM discoverability surface, while `kind:0` and optional `kind:1` notes support social presence and communication. ## Backward Compatibility This CEP is additive and introduces no breaking changes: - Servers not publishing `kind:0` continue to work unchanged - Existing CEP-6 discovery remains valid - Servers can adopt `kind:0` and optional `kind:1` publication incrementally ## Reference Implementation A reference implementation of this metadata publishing can be found in the [ContextVM SDK announcement manager](https://github.com/ContextVM/sdk/blob/master/src/transport/nostr-server/announcement-manager.ts). ## Dependencies - [CEP-6: Public Server Announcements](/spec/ceps/cep-6)Server Profile Metadata and Social Communications
Section titled “Server Profile Metadata and Social Communications”Status: Draft Author: @contextvm-org Type: Standards Track
Abstract
Section titled “Abstract”This CEP defines optional social presence primitives for ContextVM servers using standard Nostr events: kind:0 profile metadata and kind:1 notes for social communications.
ContextVM servers MAY publish kind:0 metadata signed by the same server keypair used for protocol operation and announcements. Servers MAY also publish regular kind:1 notes for social announcements, public updates, changelogs, and operator communication. This enables social presence in the broader Nostr ecosystem while preserving the existing capability-announcement model.
Motivation
Section titled “Motivation”CEP-6 announcements are capability catalogs. They are optimized for machine and protocol discovery, not for social identity rendering.
Nostr clients already treat kind:0 as the canonical identity primitive and render it in user-facing profiles. Reusing this standard primitive allows server operators to present human-friendly identity metadata (name, avatar, website, etc.) without inventing a new profile format.
Not all servers want a social presence. Therefore, profile metadata publication is explicitly opt-in, and publishing kind:1 notes for social announcements or communications is also optional.
Specification
Section titled “Specification”NIP-01 Metadata Content
Section titled “NIP-01 Metadata Content”When publishing server profile metadata, implementations MUST use kind:0. The content field MUST be a string containing stringified JSON compatible with NIP-01 metadata conventions.
Common fields include:
nameaboutpicturebannerwebsitenip05lud16
Example:
{ "kind": 0, "pubkey": "<server-pubkey>", "content": "{\"name\":\"Example Server\",\"about\":\"Public MCP provider\",\"picture\":\"https://example.com/avatar.png\",\"website\":\"https://example.com\"}", "tags": []}Optional Social Communications
Section titled “Optional Social Communications”Servers MAY additionally publish kind:1 text notes for public updates, changelogs, or operator communication.
This CEP does not define special semantics for those notes beyond existing Nostr conventions.
Relationship to CEP-6 Announcements
Section titled “Relationship to CEP-6 Announcements”kind:11316 and kind:0 serve different roles and are complementary:
kind:11316(CEP-6): capability advertisement and protocol metadatakind:0(this CEP): identity metadata for social/client rendering
These event kinds serve different protocol purposes. kind:11316 remains the ContextVM discoverability surface, while kind:0 and optional kind:1 notes support social presence and communication.
Backward Compatibility
Section titled “Backward Compatibility”This CEP is additive and introduces no breaking changes:
- Servers not publishing
kind:0continue to work unchanged - Existing CEP-6 discovery remains valid
- Servers can adopt
kind:0and optionalkind:1publication incrementally
Reference Implementation
Section titled “Reference Implementation”A reference implementation of this metadata publishing can be found in the ContextVM SDK announcement manager.