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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.mor.org/mrc/pending/mrc58.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
