The manifest is the most important part of your app. It tells Orceum:
- What actions your app supports
- What parameters each action accepts
- What each action and parameter means — so the AI fills them in correctly
The AI reads your description fields to decide when to use your app and how to fill in parameters. Vague descriptions cause the AI to misuse your app. Write descriptions like you’re explaining to another developer, not labelling a database column.
Structure
{
"actions": [
{
"event": "email.send",
"description": "Send an email to one or more recipients with a subject and body. Use this when the user wants to compose and send an email.",
"parameters": [
{
"name": "to",
"type": "array",
"description": "List of recipient email addresses, e.g. ['sarah@company.com']",
"required": true
},
{
"name": "subject",
"type": "string",
"description": "Email subject line",
"required": true
},
{
"name": "body",
"type": "string",
"description": "Email body content. Supports plain text and HTML.",
"required": true
},
{
"name": "cc",
"type": "array",
"description": "CC recipient email addresses (optional)",
"required": false,
"default": []
}
]
}
],
"metadata": {
"category": "Communication",
"tags": ["email", "productivity"]
}
}
Actions
Unique action identifier. Use lowercase with dots, underscores, or hyphens.Valid: email.send, calendar.create_event, user-profile.get
Invalid: EmailSend, SEND EMAIL, send()Regex: ^[a-z0-9][a-z0-9._-]*$
What the action does — written for the AI, not a human UI. This determines when the AI chooses your action. Be specific.Include: what it does, when to use it, any important constraints.
List of parameters the action accepts. May be empty [] for actions with no inputs.
Auto-generated by Orceum’s AI. You don’t need to set this.
Parameters
Parameter name. Used as the JSON key in event_data when Orceum calls your app.
One of: string, integer, number, boolean, array, object
What this parameter means. The AI reads this to know what value to provide.Include the format, valid values, and an example where helpful.
Whether the parameter must be provided for the action to execute.
Default value used when the parameter is not provided. Only valid when required is false.
Writing Descriptions That Work
{
"event": "do_thing",
"description": "Does a thing",
"parameters": [
{
"name": "data",
"type": "string",
"description": "the data",
"required": true
}
]
}
The AI has no idea when to call this or what data should be.{
"event": "email.send",
"description": "Send an email to one or more recipients. Supports plain text and HTML body. Use this when the user wants to compose and send an email.",
"parameters": [
{
"name": "to",
"type": "array",
"description": "List of recipient email addresses. Each item must be a valid email address, e.g. ['sarah@company.com', 'james@company.com']",
"required": true
},
{
"name": "subject",
"type": "string",
"description": "Email subject line. Keep it concise — under 78 characters.",
"required": true
},
{
"name": "body",
"type": "string",
"description": "Email body content. Can be plain text or HTML. For plain text, use newlines for paragraphs.",
"required": true
}
]
}
Checklist for Good Descriptions
Multi-Action Example
{
"actions": [
{
"event": "calendar.create_event",
"description": "Create a new calendar event. Use this when the user wants to schedule a meeting, appointment, or reminder.",
"parameters": [
{ "name": "title", "type": "string", "description": "Event title", "required": true },
{ "name": "start_time", "type": "string", "description": "Event start time as ISO 8601 string, e.g. '2026-04-15T14:00:00Z'", "required": true },
{ "name": "end_time", "type": "string", "description": "Event end time as ISO 8601 string", "required": true },
{ "name": "attendees", "type": "array", "description": "List of attendee email addresses", "required": false, "default": [] },
{ "name": "description", "type": "string", "description": "Event description or agenda notes", "required": false }
]
},
{
"event": "calendar.list_events",
"description": "List upcoming calendar events within a date range. Use this when the user asks about their schedule, upcoming meetings, or availability.",
"parameters": [
{ "name": "start_date", "type": "string", "description": "Start of range as ISO 8601 date: 2026-04-15", "required": true },
{ "name": "end_date", "type": "string", "description": "End of range as ISO 8601 date: 2026-04-22", "required": true },
{ "name": "max_results", "type": "integer", "description": "Maximum number of events to return", "required": false, "default": 20 }
]
},
{
"event": "calendar.delete_event",
"description": "Delete or cancel a calendar event by its ID. Use only when the user explicitly asks to delete or cancel an event.",
"parameters": [
{ "name": "event_id", "type": "string", "description": "The unique ID of the event to delete", "required": true }
]
}
]
}