Skip to content

CEP-23 Server Profile Metadata and Social Communications

Server Profile Metadata and Social Communications

Section titled “Server Profile Metadata and Social Communications”

Status: Draft Author: @contextvm-org Type: Standards Track

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.

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.

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:

{
"kind": 0,
"pubkey": "<server-pubkey>",
"content": "{\"name\":\"Example Server\",\"about\":\"Public MCP provider\",\"picture\":\"https://example.com/avatar.png\",\"website\":\"https://example.com\"}",
"tags": []
}

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.

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.

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

A reference implementation of this metadata publishing can be found in the ContextVM SDK announcement manager.