registry_upsert_components
Admin: up to 200 public components of a registry organization, each with its open-web source and confidence, and its values. Placed on primitives like an upload; re-sending a clientId updates it. Items on private sources are refused per item. Needs an admin key.
Parameters
- organizationstringrequired
The organization's domain or website, as given to registry_upsert_organization
min 3 charsmax 300 chars - itemsobject[]requiredmin 1 itemmax 200 items
- items[].clientIdstringoptional
Your stable id for this thing (e.g. repo path or tool slug). Re-uploading the same clientId updates instead of duplicating.
min 1 charmax 120 charspattern ^[\w.:/@-]+$ - items[].labelstringrequired
The company's own name for it: 'Payroll (Gusto)', 'Platform team'
min 1 charmax 200 chars - items[].descriptionstringoptional
One or two plain sentences: what it is, what it does
max 2000 chars - items[].layerenumoptionalpeopleprocesssoftwaredatadecisions
- items[].primitivestringoptional
Primitive key from get_mapping_guide, if you know it
max 80 chars - items[].parentstringoptional
Parent component: its clientId, label, or component id
min 1 charmax 200 chars - items[].kindenumoptionaldefault "internal"internalexternal
- items[].externalKindenumoptionalcustomersupplierpartnerregulatoreconomic_factor
- items[].valuesobject[]optionaldefault []max 50 items
- items[].values[].parameterstringrequiredmin 1 charmax 80 chars
- items[].values[].valuestring | number | booleanrequired
- items[].values[].sourceobjectoptional
Defaults to the component's source
- items[].values[].source.urlstringrequired
Public web address the finding rests on
min 1 charmax 500 chars - items[].values[].source.kindenumoptionaldefault "website"websitecareersjob_postpressreviewfilingregistry
- items[].values[].source.titlestringoptionalmax 200 chars
- items[].sourceobjectrequired
- items[].source.urlstringrequired
Public web address the finding rests on
min 1 charmax 500 chars - items[].source.kindenumoptionaldefault "website"websitecareersjob_postpressreviewfilingregistry
- items[].source.titlestringoptionalmax 200 chars
- items[].confidenceenumoptionaldefault "high"
How sure the public evidence makes it: high (stated plainly) or low (implied)
highlow
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_components",
"arguments": {
"organization": "acmebuilders.example",
"items": [
{
"clientId": "estimating",
"label": "In-house estimating team",
"primitive": "estimating",
"layer": "people",
"confidence": "high",
"source": {
"url": "https://acmebuilders.example/careers/estimator",
"kind": "job_post"
},
"values": [
{
"parameter": "estimating_method",
"value": "estimating software"
}
]
}
]
}
}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",
"ref": "acme-builders-3f2a9c1d"
},
"placed": {
"given": 1,
"existing": 0,
"matched": 0,
"model": 0,
"parent": 0,
"custom": 0,
"failed": 0
},
"results": [
{
"clientId": "estimating",
"label": "In-house estimating team",
"primitive": "estimating",
"placedBy": "given",
"created": true,
"values": 1
}
]
}Over REST
The same call without MCP: POST/api/v1/admin/registry/components