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.
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?