Partner Toolkits¶
Toolkits enable partners to define and deploy complete meeting experiences in a single declarative JSON document. Instead of making dozens of API calls to create templates, next steps, and action buttons individually, you define everything in one manifest and install it atomically.
New in v1.5
Toolkits are a major v1.5 feature. They dramatically simplify partner onboarding and enable version-controlled meeting configurations that can be tested, reviewed, and deployed like code.
Why Toolkits?¶
| Before (Imperative) | After (Declarative) |
|---|---|
| 15+ API calls to set up a workflow | 1 manifest, 1 API call |
| Manual dependency tracking | Automatic reference resolution |
| Error-prone sequential setup | Atomic install (all-or-nothing) |
| Hard to version control | JSON file in your repo |
| Difficult to replicate across workspaces | Same manifest, any workspace |
Core Concepts¶
A toolkit manifest bundles four entity types that work together:
┌──────────────────────────────────────────────────────────────────────────┐
│ TOOLKIT MANIFEST │
├──────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Templates │───▶│ Next Steps │───▶│ Action Buttons │ │
│ │ │ │ │ │ │ │
│ │ Meeting │ │ AI prompts │ │ Email, clipboard, │ │
│ │ structures │ │ or redirects│ │ webhooks, downloads │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ │ │ │ │
│ └──────────────────┴──────────────────────┘ │
│ Cross-references via $ref │
│ │
│ ┌─────────────────────┐ │
│ │ Shortcuts │ Standalone AI prompt shortcuts │
│ │ │ available on meeting surfaces │
│ │ Quick AI actions │ │
│ └─────────────────────┘ │
└──────────────────────────────────────────────────────────────────────────┘
Templates¶
Meeting templates define the structure users see when creating meetings. Each template can reference next steps that appear after the meeting.
Next Steps¶
AI-powered prompts or redirect URLs that guide users after a meeting ends. Next steps can trigger action buttons for delivery.
Action Buttons¶
The final output mechanism — copy to clipboard, send email, download file, call webhook, or redirect to external URL.
Shortcuts¶
AI prompt shortcuts that appear on meeting surfaces (e.g., the home screen or in-meeting panel). Shortcuts provide quick one-tap access to AI-generated content — such as instant summaries, action item extraction, or custom prompts — without requiring a full next-step workflow.
Each shortcut can optionally declare surface configuration — an array of { surface, position } entries that control where the shortcut appears when the toolkit is installed. Available surfaces: HOME, MEETING_PREPARE, MEETING_RUN, MEETING_REVIEW, CANVAS. Positions range from 1 to 10.
Available Icons¶
Shortcuts support an optional icon field. The following icon keys are available (based on the Font Awesome icon set). If omitted, the default icon waveform-lines is used.
| Icon Key | Label | Suggested Use |
|---|---|---|
waveform-lines | Waveform | Audio / transcription (default) |
briefcase-arrow-right | :material-briefcase-arrow-right: Briefcase Right | Handoff / export workflows |
folder-arrow-down | Folder Down | Download / save |
user-question | User Question | Q&A / participant queries |
bullseye | Bullseye | Goals / objectives |
folder-arrow-left | Folder Left | Import / ingest |
square-list | Square List | Checklists / action items |
message-question | Message Question | Discussion / prompts |
paperclip | Paperclip | Attachments |
bolt | Bolt | Quick actions / instant |
chart-line-up | Chart Up | Analytics / trends |
money-bill-1-wave | Money Bill | Finance / billing |
clock-rotate-left | Clock Rotate | History / recap |
lightbulb | Lightbulb | Ideas / insights |
The Reference System¶
Manifests use a JSON Schema-inspired reference system to link entities:
$id— Assigns a manifest-local identifier to an entity$ref— References another entity by its$id
This allows you to define entities once and reference them multiple times:
{
"templates": [
{
"spec": {
"$id": "sales-call",
"name": "Sales Discovery Call",
"description": "Initial sales discovery meeting"
},
"next_steps": [
{ "next_step": { "$ref": "follow-up-email" }, "sort_order": 1, "autopilot": false }
]
}
],
"next_steps": [
{
"spec": {
"$id": "follow-up-email",
"name": "Send Follow-up Email",
"type": "ai",
"ai_prompt": "Draft a follow-up email based on the meeting discussion."
},
"action_buttons": [
{ "action_button": { "$ref": "email-btn" }, "sort_order": 1 }
]
}
],
"action_buttons": [
{
"spec": {
"$id": "email-btn",
"name": "Send via Email",
"delivery_mechanism": "email",
"content_format": "rich_text"
}
}
]
}
When installed, Contio resolves all $ref pointers, creates the proper database relationships, and returns an entity map — a mapping of every $id in the manifest to the database UUID assigned to the created entity. This entity map is persisted on the installation record, so you can retrieve it at any time via GET /v1/partner/user/workspaces/{id}/toolkits. See Entity Lifecycle & Runtime Usage for details on using the entity map in your integration.
Quick Start¶
1. Create Your Toolkit¶
A toolkit is a provenance wrapper (name, slug, version) around a manifest (entity definitions). See Manifest Format for full details.
{
"name": "My Standup Toolkit",
"slug": "my-standup-toolkit",
"version": "1.0.0",
"manifest": {
"schema_version": "1",
"templates": [
{
"spec": {
"$id": "standup",
"name": "Daily Standup",
"description": "15-minute team sync"
}
}
],
"next_steps": [],
"action_buttons": [],
"shortcuts": []
}
}
2. Install via Partner Admin API¶
// Create the toolkit
const toolkit = await sdk.admin.createToolkit({
name: 'My Standup Toolkit',
slug: 'my-standup-toolkit',
version: '1.0.0',
manifest: {
schema_version: '1',
templates: [
{
spec: {
$id: 'standup',
name: 'Daily Standup',
description: '15-minute team sync'
}
}
]
}
});
// Install on a workspace
await sdk.admin.installToolkit(toolkit.id, {
workspace_id: 'ws_abc123'
});
3. Users See Your Templates¶
Once installed, workspace users can select your templates when creating meetings.
What's Next¶
-
Authoring Guide
Step-by-step guide for building your own custom toolkits—from planning to production.
-
Manifest Format
Understand the toolkit format: provenance wrapper, manifest schema, and entity referencing.
-
JSON Schema Reference
Complete field documentation generated from the API source code.
-
Examples
Real-world manifest examples including Robert's Rules toolkits.
-
Reference Patterns
Advanced
$refand$idpatterns for complex toolkits. -
Entity Lifecycle & Runtime Usage
How to use the entity map, call runtime APIs, and manage entities through toolkit versions.
-
Ownership & Distribution
Understand ownership types, provenance vs. governance, and distribution strategies including marketplace models.
API Endpoints¶
Admin API (API Key Authentication)¶
Manage toolkits and their components:
| Endpoint | Method | Description |
|---|---|---|
/v1/partner/admin/toolkits | POST | Create a new toolkit from manifest |
/v1/partner/admin/toolkits | GET | List all toolkits |
/v1/partner/admin/toolkits/{toolkitId} | GET | Retrieve toolkit details |
/v1/partner/admin/toolkits/{toolkitId} | PUT | Update toolkit manifest |
/v1/partner/admin/toolkits/{toolkitId} | DELETE | Delete toolkit |
/v1/partner/admin/toolkits/{toolkitId}/export | GET | Export single toolkit manifest |
/v1/partner/admin/toolkits/export | POST | Bulk export toolkit manifests |
User API (OAuth Authentication)¶
Access installed toolkits and execute meeting actions:
| Endpoint | Method | Description |
|---|---|---|
/v1/partner/user/toolkits | GET | List available toolkits |
/v1/partner/user/toolkits/{toolkitId}/install | POST | Install toolkit to workspace |
/v1/partner/user/workspaces/{workspace_id}/toolkits | GET | List toolkits installed in workspace |
/v1/partner/user/workspaces/{workspace_id}/toolkits/{toolkit_id} | DELETE | Uninstall toolkit from workspace |
/v1/partner/user/meeting-templates | GET | List available meeting templates |
/v1/partner/user/meeting-templates/{id} | GET | Get template details |
/v1/partner/user/meeting-templates/{id}/apply | POST | Apply template to a meeting |
/v1/partner/user/meeting-templates/{id}/next-steps | GET | List template's next steps |
/v1/partner/user/meetings/{id}/next-steps | GET | Get next steps for a meeting |
/v1/partner/user/meetings/{id}/next-steps/{next_step_id}/execute | POST | Execute a next step |
/v1/partner/user/next-step-results/{result_id} | GET | Get execution result |
/v1/partner/user/meetings/{id}/action-buttons | GET | Get action buttons for a meeting |
/v1/partner/user/meetings/{id}/action-buttons/{button_id}/trigger | POST | Trigger an action button |
See the OpenAPI specification for complete endpoint documentation.
SDK Usage¶
For TypeScript examples of working with Toolkits programmatically, see the SDK Examples Guide.