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

event
string
required
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._-]*$
description
string
required
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.
parameters
array
required
List of parameters the action accepts. May be empty [] for actions with no inputs.
description_summary
string
Auto-generated by Orceum’s AI. You don’t need to set this.

Parameters

name
string
required
Parameter name. Used as the JSON key in event_data when Orceum calls your app.
type
string
required
One of: string, integer, number, boolean, array, object
description
string
required
What this parameter means. The AI reads this to know what value to provide.Include the format, valid values, and an example where helpful.
required
boolean
required
Whether the parameter must be provided for the action to execute.
default
any
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.

Checklist for Good Descriptions

  • Action description says when to use it, not just what it does
  • Parameter descriptions include format (e.g. “ISO 8601 date string: 2026-04-15”)
  • Parameter descriptions include an example for non-obvious values
  • Array parameters describe what each item should be
  • Constraints are listed (e.g. “must be a valid email”, “max 500 characters”)

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 }
      ]
    }
  ]
}