MRC 58: Specification for the Agent Registry Smart Contract

Introduction: Purpose and History

Originally the Agent Registry was included in the Morpheus / Lumerin Router along side the model registry. Due to the added complexity and the decision was made to set the Agent Registry as a stand along Smart Contract. The following are required, optional, and calculated fields for the design of the Smart Contract.

Field
Field Name
Required?
Data Format
Data Validation
Immutable?
Definition
Notes (why / any nuance)

UUID

uuid

Required

string (UUID v4)

Must match UUID v4 regex; non-empty

Yes

Non-collision identifier of this agent for the registry.

Agent Name

agent_name

Required

string

Non-empty; max length 100 chars

No

Core identifier for humans.

Agent publisher crypto payment address

agent_publisher_crypto_payment_address

Required

address (Ethereum)

Valid checksummed Ethereum address

No

Address to send agent builder proceeds.

Price of Agent Royalty

price_of_agent_royalty

Required

uint256

Must be ≥ 0; can be omitted if zero (free)

No

Royalty price paid to agent per invocation/usage.

Only if it isn’t free.

Version

version

Required

string

Must follow semver pattern

No

Version of the agent contract or interface.

Needed to track updates.

Tags / Keywords

tags_keywords

Required

string[]

Array length ≥ 1; each tag non-empty

No

Keywords to aid discovery.

Aids discovery, not strictly required.

Icon/Logo

icon_logo

Optional

string (URL)

Valid URL; optional

No

Icon or logo representing the agent.

Nice for UIs.

Website

website

Optional

string (URL)

Valid URL; optional

No

Agent’s website.

Helpful for credibility.

Documentation URL

documentation_url

Optional

string (URL)

Valid URL; optional

No

Link to agent documentation.

Highly recommended.

Description of Agent Functions

description_of_agent_functions

Required

string

Non-empty

No

Text description of agent’s functionality.

Search engine and devs need to know what it does.

Specification

specification

Optional

string (JSON or YAML)

Must be valid JSON or YAML schema; optional

No

Machine-readable interface spec (A2A contract, MCP manifest, OpenAPI, or JSON Schema).

A2A contract (YAML/JSON), MCP manifest, OpenAPI 3.1 (YAML/JSON), or custom JSON Schema.

Specification Version

specification_version

Optional

string

Must follow semver; optional

No

Version of the specification.

Only meaningful when a specification exists.

Version history / changelogs

version_history_changelogs

Optional

string (URL) or string[]

URLs must be valid; optional array entries

No

Link or content of version history and changelogs.

Good practice, but agent can register first iteration without history.

Status (Alpha/Beta/Stable/Deprecated)

status

Optional

enum {"Alpha","Beta","Stable","Deprecated"}

Must be one of allowed values; optional

No

Maturity status of the agent.

Dependencies

dependencies

Optional

address[] or string[]

Each entry must be a valid package locator or address; optional

No

Required dependencies for this agent.

Must be declared if present; otherwise omit.

Agent Smart Contract Address

agent_smart_contract_address

Required

address (Ethereum)

Valid checksummed Ethereum address; non-empty

Yes

On-chain address of the agent smart contract.

Registry needs a canonical network address or package locator.

Model Used

model_used

Optional

string

Non-empty; optional

No

Underlying AI model.

Useful metadata.

List of Intents

list_of_intents

Optional

string[]

Array entries non-empty; optional

No

Specific intent names supported by agent.

Nice granularity, but agent can give free-text description only.

Tokens Used For Inference / chains / L2s

tokens_used_for_inference_chains_l2s

Optional

string[]

Entries must match valid token or network identifiers; optional

No

Tokens or networks used for inference or billing.

Applies mainly to on-chain or rate-metered agents.

Examples - successful

examples_successful

Optional

string[] or object[]

Optional; examples of prompts/responses

No

Example prompts and responses where agent succeeded.

Strongly improves onboarding, but not mandatory.

Examples - failed

examples_failed

Optional

string[] or object[]

Optional; examples of prompts/responses

No

Example prompts and responses where agent failed.

Same rationale.

Agent Reputation

agent_reputation

Calculated

uint256 or decimal

Must be ≥ 0; calculated by platform

No

Reputation score calculated by platform.

Calculated by platform or omitted initially.

Revenue

revenue

Calculated

uint256

Must be ≥ 0; calculated by platform

No

Total revenue generated by the agent.

Populated later by monitoring.

Minimum compute resources required

minimum_compute_resources_required

Optional

uint256

Must be > 0; optional

No

Minimum compute resources required for agent.

Important for self-host, but not always known.

Response time (min spec met)

response_time_min_spec_met

Optional

uint256 (ms)

Must be ≥ 0; optional

No

Minimum response time specification.

Covered by latency metrics if provided.

Certifications (SOC 2, HIPAA, …)

certifications

Optional

string[]

Entries must match known certification identifiers; optional

No

Regulatory certifications.

Only relevant for regulated contexts.

Input Formats

input_formats

Optional

string[]

Entries must match MIME types; optional

No

Supported input data formats.

If omitted, assume natural language.

Output Formats

output_formats

Optional

string[]

Entries must match MIME types; optional

No

Supported output data formats.

If omitted, assume natural-language response.

Rate limits

rate_limits

Optional

uint256 + string (period)

Must be ≥ 0; period specified; optional

No

Rate limit policy.

Only present when throttling exists.

Supported Languages

supported_languages

Optional

string[] (BCP47)

Entries must follow BCP47 tags; optional

No

Language codes supported by agent.

Defaults to en-US if unspecified.

Average Latency

average_latency

Calculated

uint256 (ms)

Must be ≥ 0; calculated by monitoring

No

Average request latency.

Populated later by monitoring.

Uptime

uptime

Calculated

uint8 or decimal (%)

0–100; calculated by monitoring

No

Percentage uptime.

Populated later by monitoring.

Error Rate

error_rate

Calculated

uint8 or decimal (%)

0–100; calculated by monitoring

No

Percentage of failed requests.

Populated later by monitoring.

Throughput

throughput

Calculated

uint256 (req/s)

Must be ≥ 0; calculated by monitoring

No

Requests processed per second.

Populated later by monitoring.

Last Metrics Update

last_metrics_update

Calculated

uint256 (Unix timestamp)

Must be valid timestamp; calculated by monitoring

No

Timestamp of last metrics update.

Only meaningful once metrics exist. Populated later by monitoring.

Agent Builders

Agent Builders will interact with the Smart Contract by publishing the records related to their Agent to the Registry. The address that publishes the information to the Registry will be the sole entity that can edit the information as connected to their Base address.

Chain

The Agent Registry will be published on Base.

Last updated

Was this helpful?