MRC 58: Specification for the Agent Registry Smart Contract

May 12, 2025 · View on GitHub

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.

FieldField NameRequired?Data FormatData ValidationImmutable?DefinitionNotes (why / any nuance)
UUIDuuidRequiredstring (UUID v4)Must match UUID v4 regex; non-emptyYesNon-collision identifier of this agent for the registry.
Agent Nameagent_nameRequiredstringNon-empty; max length 100 charsNoCore identifier for humans.
Agent publisher crypto payment addressagent_publisher_crypto_payment_addressRequiredaddress (Ethereum)Valid checksummed Ethereum addressNoAddress to send agent builder proceeds.
Price of Agent Royaltyprice_of_agent_royaltyRequireduint256Must be ≥ 0; can be omitted if zero (free)NoRoyalty price paid to agent per invocation/usage.Only if it isn’t free.
VersionversionRequiredstringMust follow semver patternNoVersion of the agent contract or interface.Needed to track updates.
Tags / Keywordstags_keywordsRequiredstring[]Array length ≥ 1; each tag non-emptyNoKeywords to aid discovery.Aids discovery, not strictly required.
Icon/Logoicon_logoOptionalstring (URL)Valid URL; optionalNoIcon or logo representing the agent.Nice for UIs.
WebsitewebsiteOptionalstring (URL)Valid URL; optionalNoAgent’s website.Helpful for credibility.
Documentation URLdocumentation_urlOptionalstring (URL)Valid URL; optionalNoLink to agent documentation.Highly recommended.
Description of Agent Functionsdescription_of_agent_functionsRequiredstringNon-emptyNoText description of agent’s functionality.Search engine and devs need to know what it does.
SpecificationspecificationOptionalstring (JSON or YAML)Must be valid JSON or YAML schema; optionalNoMachine-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 Versionspecification_versionOptionalstringMust follow semver; optionalNoVersion of the specification.Only meaningful when a specification exists.
Version history / changelogsversion_history_changelogsOptionalstring (URL) or string[]URLs must be valid; optional array entriesNoLink or content of version history and changelogs.Good practice, but agent can register first iteration without history.
Status (Alpha/Beta/Stable/Deprecated)statusOptionalenum {"Alpha","Beta","Stable","Deprecated"}Must be one of allowed values; optionalNoMaturity status of the agent.
DependenciesdependenciesOptionaladdress[] or string[]Each entry must be a valid package locator or address; optionalNoRequired dependencies for this agent.Must be declared if present; otherwise omit.
Agent Smart Contract Addressagent_smart_contract_addressRequiredaddress (Ethereum)Valid checksummed Ethereum address; non-emptyYesOn-chain address of the agent smart contract.Registry needs a canonical network address or package locator.
Model Usedmodel_usedOptionalstringNon-empty; optionalNoUnderlying AI model.Useful metadata.
List of Intentslist_of_intentsOptionalstring[]Array entries non-empty; optionalNoSpecific intent names supported by agent.Nice granularity, but agent can give free-text description only.
Tokens Used For Inference / chains / L2stokens_used_for_inference_chains_l2sOptionalstring[]Entries must match valid token or network identifiers; optionalNoTokens or networks used for inference or billing.Applies mainly to on-chain or rate-metered agents.
Examples - successfulexamples_successfulOptionalstring[] or object[]Optional; examples of prompts/responsesNoExample prompts and responses where agent succeeded.Strongly improves onboarding, but not mandatory.
Examples - failedexamples_failedOptionalstring[] or object[]Optional; examples of prompts/responsesNoExample prompts and responses where agent failed.Same rationale.
Agent Reputationagent_reputationCalculateduint256 or decimalMust be ≥ 0; calculated by platformNoReputation score calculated by platform.Calculated by platform or omitted initially.
RevenuerevenueCalculateduint256Must be ≥ 0; calculated by platformNoTotal revenue generated by the agent.Populated later by monitoring.
Minimum compute resources requiredminimum_compute_resources_requiredOptionaluint256Must be > 0; optionalNoMinimum compute resources required for agent.Important for self-host, but not always known.
Response time (min spec met)response_time_min_spec_metOptionaluint256 (ms)Must be ≥ 0; optionalNoMinimum response time specification.Covered by latency metrics if provided.
Certifications (SOC 2, HIPAA, …)certificationsOptionalstring[]Entries must match known certification identifiers; optionalNoRegulatory certifications.Only relevant for regulated contexts.
Input Formatsinput_formatsOptionalstring[]Entries must match MIME types; optionalNoSupported input data formats.If omitted, assume natural language.
Output Formatsoutput_formatsOptionalstring[]Entries must match MIME types; optionalNoSupported output data formats.If omitted, assume natural-language response.
Rate limitsrate_limitsOptionaluint256 + string (period)Must be ≥ 0; period specified; optionalNoRate limit policy.Only present when throttling exists.
Supported Languagessupported_languagesOptionalstring[] (BCP47)Entries must follow BCP47 tags; optionalNoLanguage codes supported by agent.Defaults to en-US if unspecified.
Average Latencyaverage_latencyCalculateduint256 (ms)Must be ≥ 0; calculated by monitoringNoAverage request latency.Populated later by monitoring.
UptimeuptimeCalculateduint8 or decimal (%)0–100; calculated by monitoringNoPercentage uptime.Populated later by monitoring.
Error Rateerror_rateCalculateduint8 or decimal (%)0–100; calculated by monitoringNoPercentage of failed requests.Populated later by monitoring.
ThroughputthroughputCalculateduint256 (req/s)Must be ≥ 0; calculated by monitoringNoRequests processed per second.Populated later by monitoring.
Last Metrics Updatelast_metrics_updateCalculateduint256 (Unix timestamp)Must be valid timestamp; calculated by monitoringNoTimestamp 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.