Problem
The RegistrationValidator does not recognize optional fields within service objects. Fields like version, skills, and domains inside a service entry likely trigger REG-040 at the top level or are silently ignored.
The ERC-8004 spec defines these optional service fields:
{
"name": "OASF",
"endpoint": "ipfs://{cid}",
"version": "0.8",
"skills": [],
"domains": []
}
And:
{
"name": "A2A",
"endpoint": "https://agent.example/.well-known/agent-card.json",
"version": "0.3.0"
}
Required Changes
In RegistrationValidator.mjs → #validateServices():
- Accept
version (string, optional) as a valid field on any service object
- Accept
skills (array, optional) as a valid field — primarily for OASF services
- Accept
domains (array, optional) as a valid field — primarily for OASF services
- Optionally warn if
skills/domains are used on non-OASF services
Known valid service object fields per spec:
name (string, required) — service identifier
endpoint (string, required) — service URL/identifier
version (string, optional) — service version
skills (array, optional) — OASF agent skills
domains (array, optional) — OASF agent domains
Validation Data
version appears 3,158 times as top-level REG-040 — some of these may actually be service-level fields being misattributed.
Problem
The
RegistrationValidatordoes not recognize optional fields within service objects. Fields likeversion,skills, anddomainsinside a service entry likely trigger REG-040 at the top level or are silently ignored.The ERC-8004 spec defines these optional service fields:
{ "name": "OASF", "endpoint": "ipfs://{cid}", "version": "0.8", "skills": [], "domains": [] }And:
{ "name": "A2A", "endpoint": "https://agent.example/.well-known/agent-card.json", "version": "0.3.0" }Required Changes
In
RegistrationValidator.mjs→#validateServices():version(string, optional) as a valid field on any service objectskills(array, optional) as a valid field — primarily for OASF servicesdomains(array, optional) as a valid field — primarily for OASF servicesskills/domainsare used on non-OASF servicesKnown valid service object fields per spec:
name(string, required) — service identifierendpoint(string, required) — service URL/identifierversion(string, optional) — service versionskills(array, optional) — OASF agent skillsdomains(array, optional) — OASF agent domainsValidation Data
versionappears 3,158 times as top-level REG-040 — some of these may actually be service-level fields being misattributed.