HCS-11 Standard: Profile Standard
Status: Draft
Version: 1.0
Table of Contents
- HCS-11 Standard: Profile Standard
- Status: Draft
- Version: 1.0
- Table of Contents
- Authors
- Abstract
- Motivation
- Specification
- Conclusion
Authors
- Michael Kantor https://twitter.com/kantorcodes
Abstract
The HCS-11 standard defines a systematic approach for managing profiles on the Hedera Hashgraph through account memos. This standard introduces a structured way to store profile information for individuals and AI agents, enabling rich identity management and interoperability across the Hedera ecosystem.
Motivation
As the Hedera ecosystem grows, there is an increasing need for a standardized way to manage profiles for different types of entities. This standard aims to provide a consistent format for storing and retrieving profile information, enabling interoperability between different applications and services while supporting various profile types including personal accounts and AI agents.
Specification
Profile Architecture
The HCS-11 standard uses Hedera accounts with a standardized memo format to reference profile information:
Account Memo Structure
The account memo follows a standardized format to indicate where the profile data is stored:
hcs-11:<protocol_reference>
Where:
hcs-11
is the protocol identifier<protocol_reference>
can be either:- A Hashgraph Resource Locator (HRL) for HCS protocols
- Other URI formats for non-HCS protocols (IPFS, Arweave, HTTPS)
Examples of valid memo formats:
# HRL references (HCS protocols)
hcs-11:hcs://1/0.0.8768762
hcs-11:hcs://2/0.0.8768762
hcs-11:hcs://7/0.0.8768762
# Non-HCS protocol references
hcs-11:ipfs://QmT5NvUtoM5nWFfrQdVrFtvGfKFmG7AHE8P34isapyhCxX
hcs-11:ar://TQGxHPLpUcH7NG6rUYkzEnwD8_WqYQNPIoX5-0OoRXA
This approach ensures:
- Profile data can be referenced using various protocols:
- Large profiles can be stored efficiently on the appropriate storage layer
- Profile history is maintained through the chosen protocol's mechanisms
- Interoperability with existing decentralized storage solutions
Base Profile Schema
All profiles share these common fields:
Field | Type | Required | Description |
---|---|---|---|
version | string | Yes | Standard version (e.g., "1.0") |
type | number | Yes | Profile type enum (0=personal [not officially supported yet], 1=ai_agent, 2=mcp_server) |
display_name | string | Yes | Display name for the profile |
uaid | string | Yes | UAID (uaid:did:...) for the subject. Other DIDs may be linked via DID Document alsoKnownAs . |
alias | string | No | Alternative identifier |
bio | string | No | Brief description or biography |
socials | array | No | Array of social media links |
profileImage | string | No | Protocol reference - either HRL for HCS protocols (e.g., "hcs://1/0.0.12345") or other URI formats |
properties | object | No | Additional unstructured profile properties |
inboundTopicId | string | No | HCS-10 inbound communication topic |
outboundTopicId | string | No | HCS-10 action record topic |
privacy_compliance | object | No | Optional HCS-19 compliance metadata and topic references |
Profile Types
Profile Type Hierarchy
HCS-11 supports the following profile types:
Common Fields for All Types
Object | Field | Type | Required | Description |
---|---|---|---|---|
socials[] | platform | string | Yes | Social media platform name |
socials[] | handle | string | Yes | Username on the platform |
any[] | properties | object | No | Optional properties of any kind |
The properties
field is an unstructured JSON object that can contain any custom data the user wishes to include. There are no predefined fields or structure for this object, allowing for maximum flexibility and extensibility. Users can store any relevant information that isn't covered by the standard fields.
Personal Profile Fields
Personal profiles (type=0) are not officially supported in this version of the standard. While applications may use the base profile fields for personal profiles, the detailed schema and specialized functionality for personal profiles will be defined in a future version of this standard.
AI Agent Profile Fields
Field | Type | Required | Description |
---|---|---|---|
aiAgent.type | number | Yes | AI agent type enum (0=manual, 1=autonomous) |
aiAgent.capabilities | number[] | Yes | List of capability enums (see Capabilities section) |
aiAgent.model | string | Yes | AI model identifier |
aiAgent.creator | string | No | Creator of this Agent |
MCP Server Profile Fields
Field | Type | Required | Description |
---|---|---|---|
mcpServer.version | string | Yes | MCP server version (e.g., "2025-03-26") |
mcpServer.connectionInfo | object | Yes | Connection details for the MCP server |
mcpServer.connectionInfo.url | string | Yes | Base URL for SSE connection or local path |
mcpServer.connectionInfo.transport | string | Yes | Transport type ("stdio" or "sse") |
mcpServer.services | number[] | Yes | List of service types offered (see MCP Services) |
mcpServer.description | string | Yes | Detailed description of server functionality |
mcpServer.verification | object | No | Verification proof of endpoint ownership |
mcpServer.verification.type | string | Yes* | Verification type: "dns", "signature", or "challenge" |
mcpServer.verification.value | string | Yes* | Verification value based on type |
mcpServer.verification.dns_field | string | No | Custom DNS TXT record name (default: "hedera") |
mcpServer.verification.challenge_path | string | No | Custom challenge endpoint path (default: "hedera-verification") |
mcpServer.host | object | No | Compatible host requirements |
mcpServer.host.minVersion | string | No | Minimum host version required |
mcpServer.capabilities | array | No | MCP capabilities supported by the server |
mcpServer.resources | array | No | Resources the server exposes |
mcpServer.tools | array | No | Tools the server provides to clients |
mcpServer.maintainer | string | No | Organization maintaining this MCP server |
mcpServer.repository | string | No | URL to source code repository |
mcpServer.docs | string | No | URL to server documentation |
MCP Server Verification Process
The verification field in MCP server profiles enables trustless ownership verification without relying on centralized authorities. The verification
object contains these fields:
type
: Specifies the verification method to use ("dns", "signature", or "challenge")value
: Contains the verification data appropriate for the selected typedns_field
: (Optional) Customizes the DNS TXT record name for DNS verificationchallenge_path
: (Optional) Customizes the challenge endpoint path for challenge verification
Each verification method is designed to address common use cases while providing flexible implementation options: