registry_upsert_gaps
Admin: up to 200 gaps of a registry organization: what it has that no primitive of its schema covers, by key, with an open-web source. Gaps seen across organizations are candidates for new primitives. Needs an admin key.
Parameters
- organizationstringrequired
The organization's domain or website, as given to registry_upsert_organization
min 3 charsmax 300 chars - gapsobject[]requiredmin 1 itemmax 200 items
- gaps[].keystringoptional
Stable key; derived from the label when omitted
min 1 charmax 80 charspattern ^[a-z0-9_]+$ - gaps[].labelstringrequired
What the organization has that no primitive covers
min 1 charmax 120 chars - gaps[].layerenumoptionalpeopleprocesssoftwaredatadecisions
- gaps[].detailstringoptionalmax 2000 chars
- gaps[].sourceobjectrequired
- gaps[].source.urlstringrequired
Public web address the finding rests on
min 1 charmax 500 chars - gaps[].source.kindenumoptionaldefault "website"websitecareersjob_postpressreviewfilingregistry
- gaps[].source.titlestringoptionalmax 200 chars
Example call
Agents call tools by name; you rarely write this by hand. It is here so you can test the server from a shell or your own code.
{
"name": "registry_upsert_gaps",
"arguments": {
"organization": "acmebuilders.example",
"gaps": [
{
"label": "Drone site surveys",
"layer": "process",
"source": {
"url": "https://acmebuilders.example/services",
"kind": "website"
}
}
]
}
}Response
The result is one text content block holding this JSON (abbreviated here). Errors come back with isError: true and a message such as Error 401: … or Invalid input: ….
{
"organization": {
"domain": "acmebuilders.example"
},
"results": [
{
"key": "drone_site_surveys",
"created": true
}
]
}Over REST
The same call without MCP: POST/api/v1/admin/registry/gaps