inite-ai Registry publishing API
Publisher-facing writes to the global registry (scope `registry:publish`).
Publisher-facing writes to the global registry (scope `registry:publish`).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/inite-ai:inite-ai-registry-publishing-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: 'Generated from the zod wire contracts (`pnpm openapi:build` — scripts/build-openapi.ts); do not edit by hand. Excluded on purpose: the operator/ops surface (jobs, leases, policy, stats, maintenance, GDPR cascades), which is indexed in docs/api.md, and the MCP transport `ALL /mcp/{companyId}`, which is JSON-RPC over Streamable HTTP rather than REST — MCP clients discover it through `tools/list` (docs/mcp.md). Scopes are plain bearer-key grants, not OAuth flows — each operation states its required scope.'
license:
identifier: AGPL-3.0-or-later
name: AGPL-3.0-or-later
summary: 'The community-facing platform surface: the memory core (fact ingest, search, multi-hop, synthesize, entity and fact reads), the Domain Pack registry and tenant pack admin, the document pipeline, the external-indexer work protocol, the raw-substrate driver, the evidence substrate, and source reputation reads.'
title: INITE Brain — Platform Registry publishing API
version: 2.6.0
servers:
- description: Hosted instance (placeholder — self-hosted deployments serve the same paths on their own origin).
url: https://brain.inite.ai
security:
- bearerAuth: []
tags:
- description: Publisher-facing writes to the global registry (scope `registry:publish`).
name: Registry publishing
paths:
/v1/admin/registry/packs:
post:
description: 'Versions are immutable once published. Republishing an identical (packId, version, checksum) is idempotent (`created: false`); a different body for an existing version is rejected. Source: src/registry/admin-registry.controller.ts.
Required scope: `registry:publish`.'
operationId: publishRegistryPack
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublishPackRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/PublishPackResponse'
description: Published (or already present).
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
$ref: '#/components/responses/Conflict'
summary: Publish a pack version to the global registry
tags:
- Registry publishing
/v1/admin/registry/packs/{packId}/{version}/unyank:
post:
description: 'Reverses a yank — the version becomes installable again.
Required scope: `registry:publish`.'
operationId: unyankRegistryPack
parameters:
- description: The pack id.
in: path
name: packId
required: true
schema:
type: string
- description: The yanked version to restore.
in: path
name: version
required: true
schema:
type: string
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/YankPackResponse'
description: Yank state after the call.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
summary: Restore a yanked version
tags:
- Registry publishing
/v1/admin/registry/packs/{packId}/{version}/yank:
post:
description: 'Marks a version as not-installable (existing installs keep working). The version stays visible in the history, flagged.
Required scope: `registry:publish`.'
operationId: yankRegistryPack
parameters:
- description: The pack id.
in: path
name: packId
required: true
schema:
type: string
- description: The published version to yank.
in: path
name: version
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/YankPackRequest'
required: true
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/YankPackResponse'
description: Yank state after the call.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
summary: Yank a published version
tags:
- Registry publishing
components:
schemas:
PublishPackRequest:
additionalProperties: false
properties:
expectedChecksum:
type: string
keywords:
items:
type: string
type: array
manifest:
$ref: '#/components/schemas/DomainPackManifest'
required:
- manifest
type: object
YankPackResponse:
additionalProperties: false
properties:
packId:
type: string
version:
type: string
yanked:
type: boolean
required:
- packId
- version
- yanked
type: object
DomainPackManifest:
additionalProperties: {}
properties:
description:
type: string
evalFixtures:
items:
additionalProperties: {}
propertyNames:
type: string
type: object
type: array
extractionProfile:
additionalProperties: {}
propertyNames:
type: string
type: object
id:
description: snake_case pack id, no `__`.
type: string
indexer:
additionalProperties: {}
propertyNames:
type: string
type: object
mcpTools:
items:
additionalProperties: {}
propertyNames:
type: string
type: object
type: array
memoryModel:
additionalProperties: {}
propertyNames:
type: string
type: object
predicates:
items:
additionalProperties: {}
propertyNames:
type: string
type: object
type: array
publisher:
type: string
seedDocuments:
items:
additionalProperties: {}
propertyNames:
type: string
type: object
type: array
signature:
description: ed25519 signature (base64) over the canonical manifest sans this field.
type: string
version:
description: semver MAJOR.MINOR.PATCH.
type: string
required:
- id
- version
- description
- predicates
type: object
ErrorResponse:
description: Standard NestJS error envelope.
properties:
error:
type: string
message:
anyOf:
- type: string
- items:
type: string
type: array
statusCode:
type: integer
required:
- statusCode
- message
type: object
PublishPackResponse:
additionalProperties: false
properties:
checksum:
type: string
created:
type: boolean
packId:
type: string
version:
type: string
required:
- packId
- version
- checksum
- created
type: object
YankPackRequest:
additionalProperties: false
properties:
reason:
type: string
type: object
responses:
Forbidden:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: The key lacks the required scope.
Unauthorized:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Missing or unknown bearer key.
Conflict:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: State conflict — e.g. a lost/mismatched claim token, an already claimed work item, or an immutable-version republish.
NotFound:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: No such resource in this tenant.
BadRequest:
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
description: Validation failed.
securitySchemes:
bearerAuth:
description: 'API key (`Authorization: Bearer <key>`); its SHA-256 must be registered in BRAIN_API_KEYS. Keys carry scopes (`brain:read`, `brain:write`, `brain:admin`, `brain:read_pii`, `registry:publish`, `registry:curate`, `indexer:write`) — each operation states the scope it requires. Not an OAuth flow.'
scheme: bearer
type: http