Publishing
Register, update, and manage your service listing on the registry.
This guide covers the full lifecycle of a service listing — from initial registration through updates and audit management.
Registration
When you register a service, the AgentRegistry contract stores four fields on-chain:
| Field | Description | Updatable? |
|---|---|---|
name | Service name (used to generate the service ID) | No |
description | What your service does | Yes |
endpoint | Your MCP server URL | Yes |
repoUrl | Source code repository | No |
The serviceId is a bytes32 hash derived from the service name and your wallet address. This means service names are unique per developer.
Via the Web UI
Navigate to Register New Service and fill in the form. You'll need a connected wallet with Arbitrum Sepolia ETH.
Via the CLI
multiverse register \
--name "My Service" \
--description "Does X for AI agents" \
--endpoint "https://api.example.com/mcp" \
--repo "https://github.com/org/repo"Via the SDK
const { hash, serviceId } = await registryClient.registerService({
name: "My Service",
description: "Does X for AI agents",
endpoint: "https://api.example.com/mcp",
repoUrl: "https://github.com/org/repo",
});Updating Your Service
Only the original registrant (the wallet that registered the service) can update it. You can change the description and endpoint:
await registryClient.updateService(serviceId, {
description: "Updated description",
endpoint: "https://new-api.example.com/mcp",
});The name and repoUrl are immutable after registration.
Audit Trail
Once registered, your service can receive audits. Each audit is stored on-chain with:
- Auditor address — Who submitted the audit
- Report URI — Link to the full audit report (typically IPFS or a URL)
- Reproducible — Whether the auditor was able to reproduce the service's behavior
- Timestamp — When the audit was submitted
You can query the audit trail for any service:
const audits = await registryClient.getAudits(serviceId);
for (const audit of audits) {
console.log(audit.auditor, audit.reproducible);
}Verification
A service is marked as verified (isVerified = true) by the protocol owner after it accumulates sufficient positive audits. Verified services are highlighted in the registry and eligible for bounty claims.