Skip to content

Releases

Copy page

A Release is a deployable AI assistant configuration — its model, prompt, RAG indexes, theme, and access rules. Your end users chat against a Release id; divinci.releases is how you create and manage them.

const { data, hasMore } = await divinci.releases.list("ws_123", { limit: 20 });
const release = await divinci.releases.create({
workspaceId: "ws_123",
name: "Support Assistant",
// ...model, prompt, and config fields
});
console.log(release._id); // the releaseId your client/embed uses
const release = await divinci.releases.get("rel_abc123");
// Update a release (top-level)
await divinci.releases.update("rel_abc123", { name: "Support Assistant v2" });
// Or update a release within an explicit workspace
await divinci.releases.updateInWorkspace("ws_123", "rel_abc123", { name: "v2" });

A Release can serve anonymous, no-login chat — the pattern behind public marketing pages and embedded landing-page widgets (see the Deploy to Cloudflare Workers guide). Three fields control it, and they layer:

FieldDefaultPurpose
allowAnonymousChatfalseMaster switch. While false, anonymous chat is rejected with 403 FORBIDDEN.
requireSignedAnonymousChatfalseWhen true, anonymous-chat calls must carry a valid landing-page HMAC signature, so only your signing proxy (e.g. a Cloudflare Worker) can reach the endpoint. Only has an effect while allowAnonymousChat is true.
maxAnonymousChatMessages1Per-conversation message cap. Raise it for multi-turn.
// Secure public anonymous chat: on, signed, multi-turn
await divinci.releases.updateInWorkspace(workspaceId, "rel_abc123", {
allowAnonymousChat: true,
requireSignedAnonymousChat: true,
maxAnonymousChatMessages: 12,
});

A Release can be published as its own MCP server — a curated, tenant-scoped endpoint your consumers connect their AI assistants to. Set the mcpConfig object on the release to enable it and choose which tools, guardrails, and billing apply:

await divinci.releases.updateInWorkspace(workspaceId, "rel_abc123", {
mcpConfig: {
enabled: true,
exposedTools: ["search_knowledge", "send_message"], // omit = all release tools
allowAnonymousMcp: false,
maxSpendPerTokenCents: 500, // $5.00 cap per token
mcpRateLimit: { requestsPerMinute: 60, requestsPerDay: 10000 },
},
});
FieldDefaultPurpose
enabledfalseMaster switch. While false, the tenant MCP endpoint returns 404.
exposedTools(all)Allowlist of tool names. Empty/unset exposes all of the release’s tools.
allowedScopes(all)Subset of platform scopes the release’s tokens may carry.
allowAnonymousMcpfalseAllow connections with no API key or OAuth token. Public/read-only products only.
maxSpendPerTokenCents1000Billing safety cap per token (1000 = $10.00).
mcpRateLimit{ 60/min, 10000/day }Per-minute and per-day request ceilings.

Once enabled and published, consumers connect to https://mcp.divinci.app/{whitelabelId}/mcp. See Release as an MCP Server for the endpoint, authentication options (API key, central OAuth, or your own federated IdP), and billing modes.

await divinci.releases.activate("rel_abc123"); // make it the live release
await divinci.releases.archive("rel_abc123"); // retire it
await divinci.releases.delete("rel_abc123");
MethodDescription
list(workspaceId, options?)Paginated releases in a workspace.
get(releaseId)Fetch a release.
create(options)Create a release (requires workspaceId).
update(releaseId, options)Update a release.
updateInWorkspace(workspaceId, releaseId, options)Update within an explicit workspace.
activate(releaseId)Mark a release active.
archive(releaseId)Archive a release.
delete(releaseId)Delete a release.