Install a directory entry
const url = 'http://localhost:11044/api/v1/directory/install';const options = { method: 'POST', headers: {'X-Embabel-Api-Key': '<X-Embabel-Api-Key>', 'Content-Type': 'application/json'}, body: '{"description":"example","metadata":{"additionalProperty":"example"},"name":"example","source":"example","type":"SKILL","url":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:11044/api/v1/directory/install \ --header 'Content-Type: application/json' \ --header 'X-Embabel-Api-Key: <X-Embabel-Api-Key>' \ --data '{ "description": "example", "metadata": { "additionalProperty": "example" }, "name": "example", "source": "example", "type": "SKILL", "url": "example" }'Install a skill, API, MCP server, or realm from a directory entry. Dispatches to the appropriate install mechanism based on type.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”A directory entry as search returns it, installed into the authenticated user’s world; type picks how. SKILL installs the GitHub skill at source. API learns the OpenAPI spec at source (400 when blank), keeping metadata.headers, a string map, as the API’s custom headers. REALM clones and admits the realm repository at source under name. MCP_SERVER fetches the README at source (then url), has a model extract the launch configuration, and files it under a name derived from name. description is not used. Any failure answers 400 with status: error
An installable skill, API, MCP server or realm found in a registered directory. GET /directory answers a list of these; POST /directory/install takes one back as its body.
object
One-line summary from the directory source; never empty, a source without one gets a generic label
Source-specific extras such as repo, from, version, author, format or registry. On install of an API, a headers object of string values becomes the custom HTTP headers sent to it.
object
Display name; the install records the item under it and the installed filter matches on it (for a GitHub realm, the repo name without its realm- prefix)
What install fetches: the OpenAPI spec URL for an API, the git clone URL for a realm, the GitHub tree URL of a skill, the repository or project link of an MCP server. An API entry with a blank source is refused with 400.
Kind of item; selects the install flow
Page for a person to browse (GitHub page, docs site); null when the source gives none
Responses
Section titled “Responses”Installed successfully
object
Unsupported type or missing source
A directory install that failed. Every refusal carries the same two keys
object
Why the install failed: an unsupported type, a missing spec URL, or what the installer reported
Always “error”

