Omnara runs durable AI agents. Tools wrap the Omnara REST API (https://docs.omnara.com/api-reference) and act as the authenticated user or org API key.
Resource model: an organization contains projects; agents run inside a project. Machines, machine pools, model providers and models are org-owned; secrets and skills may be org-, project- or user-owned. A project can only use a shared resource after it is granted to it (grant_* tools).
Typical flow:
1. whoami, then orgs_list and projects_list to find the org and project IDs.
2. Make sure the project has a model (models_list, grant_models_add) and somewhere to run (grant_pools_add or grant_machines_add).
3. Start an agent with agents_launch from an agent profile (profiles_list), a saved config (configs_create), or an inline config_source.
4. Follow progress with agents_events_list, send follow-up messages with agents_input, and answer questions or approvals with agents_interactions_list and agents_interactions_resolve.
List tools paginate: pass a response's next_cursor as cursor to get the next page. Tools marked destructive (cancel, archive, delete, config updates) change or remove state, so confirm with the user first.
Discoverability
1/6 passed1 of 6 passed17/100
Client listings and public setup information.
mcp.json or server-card.json
Either mcp.json or an MCP Server Card declaring this endpoint passes.
The MCP Server Card declares this server's exact endpoint.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Archives the agent: requests cancellation of its active runtime, cancels queued inputs and affected processes, removes its pending wakeup, releases explicit machine bindings, deletes pooled machines created for the agent, and deletes cron triggers targeting the agent. The agent and its full event history stay readable by id; archived agents leave listings. The agent's profile and configuration are retained, as are explicitly attached BYO machines. Archiving an already-archived agent is a no-op that returns the agent unchanged.
The description explains the capability, when to use it, and what to expect.
Inputs64/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Stops the agent's current turn: cancels its unfinished tool calls and open interactions, stops processes whose run_command hasn't returned yet, and discards pending steering messages. The agent stays active and keeps its queued messages, and processes whose run_command already returned keep running. Returns affected false and changes nothing when no turn is in progress.
The description explains the capability, when to use it, and what to expect.
Inputs72/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › display_name
Display name for the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › metadata
Key-value attributes for the actor. Replaces stored metadata when sent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › provider_tenant_id
Your tenant or namespace for the user. With provider_user_id, identifies the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › provider_user_id
The user's ID in your system. With provider_tenant_id, identifies the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Returns one page of agent events, chronological within the page. Forward pagination (after_sequence) walks from a known boundary toward the present using next_after_sequence. Backward pagination (before_sequence) starts at the latest events and walks toward the beginning using next_before_sequence; passing before_sequence takes precedence over after_sequence.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
after_sequence
Exclusive event sequence boundary. Omit or pass 0 for the beginning of the agent event log.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
before_sequence
Exclusive event sequence boundary for backward pagination. Pass 0 for the latest events.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum number of events to return.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Returns one agent's state, model, profile, current config ID, activity (running, waiting_on_interaction, idle, or archived), attached machines, and MCP connection states. The conversation isn't included.
The description explains the capability, when to use it, and what to expect.
Inputs73/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Sends a message to an agent and returns the stored input. Queued messages (the default) wait until the agent is ready for new work; steering messages reach it at its next model call.
The description explains the capability, when to use it, and what to expect.
Inputs76/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › display_name
Display name for the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › metadata
Key-value attributes for the actor. Replaces stored metadata when sent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › provider_tenant_id
Your tenant or namespace for the user. With provider_user_id, identifies the actor.
Clear enough to supply this argument.
actor › provider_user_id
The user's ID in your system. With provider_tenant_id, identifies the actor.
Clear enough to supply this argument.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cancel_open_interactions
Only valid when delivery_mode is steering. When true, atomically cancels open interactions associated with the current turn's unfinished tool calls before creating the steering input. Their parent tool calls complete as canceled; the turn, runtime, and unrelated tool calls are preserved.
Clear enough to supply this argument.
$defs › TextContentBlock › metadata
Key-value metadata. omnara_ keys are reserved.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › TextContentBlock › text
The text.
Explain the meaning of this value, not just its name.
$defs › TextContentBlock › type
text: a plain-text block.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › InlineMediaContentBlock › data
Base64-encoded file bytes. For text media types, the decoded bytes must be valid UTF-8.
Clear enough to supply this argument.
$defs › InlineMediaContentBlock › filename
Original filename.
Explain the meaning of this value, not just its name.
$defs › InlineMediaContentBlock › media_type
MIME type of data.
Explain the meaning of this value, not just its name.
$defs › InlineMediaContentBlock › metadata
Key-value metadata. omnara_ keys are reserved.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › InlineMediaContentBlock › type
media: a base64-encoded file in data.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
delivery_mode
queued (default) waits until the agent is free; steering reaches it at its next model call.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Lists an agent's permission prompts and ask_question questions, oldest first, with each one's form and answers. state filters by open, resolved, or canceled.
The description explains the capability, when to use it, and what to expect.
Inputs79/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
include_subagents
Also return interactions from every subagent beneath this agent. Resolve those against the subagent's own agent_id.
Clear enough to supply this argument.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
state
Filter by state: open, resolved, or canceled. Omit for all.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Answers an open permission prompt or question so the paused agent resumes, and returns the resolved interaction. Send one answer per question with zero-based option_indices; permission prompts use 0 for Allow and 1 for Deny.
The description explains the capability, when to use it, and what to expect.
Inputs78/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › display_name
Display name for the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › metadata
Key-value attributes for the actor. Replaces stored metadata when sent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › provider_tenant_id
Your tenant or namespace for the user. With provider_user_id, identifies the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor › provider_user_id
The user's ID in your system. With provider_tenant_id, identifies the actor.
Clear enough to supply this argument.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › InteractionAnswer › option_indices
Zero-based indices of the chosen options. Pick one unless the question allows multiple.
Clear enough to supply this argument.
$defs › InteractionAnswer › text
Optional companion text when the selected option allows it.
Explain the meaning of this value, not just its name.
interactionID
Interaction ID (int_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Launch from a pinned config, optionally adding agent-local integration tools, subscriptions and interaction handlers and admitting an attributed initial text input in the same transaction. Adding integration capabilities requires project management permission; launching an existing config requires agent operate permission. Reusing an idempotency key returns the current agent even if the retry body differs. The retry body is not applied and integration references are not resolved again.
The description explains the capability, when to use it, and what to expect.
Inputs87/100
74 of 78 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
config
Agent config ID (acfg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › AgentConfigDefinitionToolInputSchema › type
Must be object.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › AgentConfigDefinitionTool › type
built_in for an Omnara tool, custom for a tool your system runs.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › AgentConfigDefinitionTool › if › type
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › AgentConfigDefinition › version
Config format version. Only v1 exists.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
config_source › source_format
Format of source: yaml or json.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › ExternalActorParams › display_name
Display name for the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › ExternalActorParams › metadata
Key-value attributes for the actor. Replaces stored metadata when sent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › ExternalActorParams › provider_tenant_id
Your tenant or namespace for the user. With provider_user_id, identifies the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › ExternalActorParams › provider_user_id
The user's ID in your system. With provider_tenant_id, identifies the actor.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › TextContentBlock › metadata
Key-value metadata. omnara_ keys are reserved.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › TextContentBlock › text
The text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › TextContentBlock › type
text: a plain-text block.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
interaction_handlers
Additional integration interaction handlers, keyed by immutable integration name with empty object values. Slack and Discord handlers require an assigned conversation and accept empty runtime args. Adding a handler does not assign a conversation. Existing entries win unchanged. Requires project management permission.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
message
Optional initial text message. Mutually exclusive with initial_input.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Optional agent name. Omit to inherit the profile name when present; send an empty string to leave the agent unnamed.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
profile
Agent profile (aprf_...) to launch. Runs its current config unless config or config_source is set.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Lists the project's agents with their current activity, newest first by default. Archived agents and subagents are excluded unless requested. Pass `activity_state` to keep only agents in that activity.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
activity_state
Return only agents whose current `activity.state` matches. `archived` includes archived agents even when `include_archived` is omitted.
Clear enough to supply this argument.
agent_profile_id
Return only agents launched from this agent profile.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Clear enough to supply this argument.
include_archived
Include archived agents. Defaults to false.
Clear enough to supply this argument.
include_subagents
Include subagents alongside top-level agents. Defaults to false, so only agents without a parent are returned unless parent_agent_id is set.
Clear enough to supply this argument.
include_usage
Include each agent's `usage`, so a list can show costs without a request per agent.
Clear enough to supply this argument.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\` escapes a wildcard.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
parent_agent_id
Return only subagents spawned by this agent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Sort order for named resources that expose created and modified timestamps.
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Replaces an active agent's config without restarting its conversation and returns the new agent_config. Model, instruction, and tool changes apply at the agent's next model call; machine changes apply immediately, stopping processes on removed machines and deleting the agent's machines from removed pools. Send the complete config, not a patch.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
62 of 66 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agentID
Agent ID (agt_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
expected_current_config_id
Agent config ID (acfg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Compiles and saves an immutable agent config (instruction, model, tools, machine_sources, and more) from YAML or JSON and returns it. Sending the same source again returns the existing config, as long as its names still resolve to the same resources.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
60 of 64 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Returns one agent config: its compiled definition with names resolved to IDs, and its source if it was saved with one. Configs Omnara derives on its own, such as those for subagents and integration launches, have no source.
The description explains the capability, when to use it, and what to expect.
Inputs70/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentConfigID
Agent config ID (acfg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Creates a cron trigger that fires on a schedule. A trigger targeting an agent profile launches a new agent from the profile's current config on each firing; a trigger targeting an agent sends an input to that agent. Missed firings are coalesced, matching standard cron behavior: if one or more scheduled times pass while firing is delayed, the trigger fires once for the oldest missed time and then resumes its schedule from the current time, without retroactively firing for the other missed times.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cron
Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
enabled
Whether the trigger fires on schedule; false pauses it.
Clear enough to supply this argument.
message_template
Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › AgentCronTriggerTarget › agent_id
Agent (agt_...) that receives each message.
Clear enough to supply this argument.
$defs › AgentCronTriggerTarget › delivery_mode
How each message is delivered: queued (default) or steering.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › AgentCronTriggerTarget › type
agent: send each message to an existing agent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.
{
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "crons_create",
"title": "Create cron trigger",
"description": "Creates a cron trigger that fires on a schedule. A trigger targeting an agent profile launches a new agent from the profile's current config on each firing; a trigger targeting an agent sends an input to that agent. Missed firings are coalesced, matching standard cron behavior: if one or more scheduled times pass while firing is delayed, the trigger fires once for the oldest missed time and then resumes its schedule from the current time, without retroactively firing for the other missed times.",
"inputSchema": {
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"cron",
"name",
"orgID",
"projectID",
"target"
],
"properties": {
"cron": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"name": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"target": {
"type": "object",
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"enabled": {
"type": "boolean",
"description": "Whether the trigger fires on schedule; false pauses it."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"projectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"message_template": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create cron trigger",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Returns one cron trigger: its target, schedule, timezone, message template, enabled flag, and firing state (last_fired_at, next_fire_at, and any failure since the last successful firing).
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cronTriggerID
Cron trigger ID (cron_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "crons_get",
"title": "Get cron trigger",
"description": "Returns one cron trigger: its target, schedule, timezone, message template, enabled flag, and firing state (last_fired_at, next_fire_at, and any failure since the last successful firing).",
"inputSchema": {
"type": "object",
"required": [
"cronTriggerID",
"orgID",
"projectID"
],
"properties": {
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"projectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"cronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$",
"description": "Cron trigger ID (cron_...)."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get cron trigger",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Lists the project's cron triggers, newest first by default, filterable by name, agent, profile, or integration. Each item includes its schedule and next_fire_at.
The description explains the capability, when to use it, and what to expect.
Inputs78/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agent_id
Only return triggers targeting this agent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agent_profile_id
Only return triggers targeting this agent profile.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Clear enough to supply this argument.
integration_id
Only return scheduled launches for this integration.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\` escapes a wildcard.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Sort order for named resources that expose created and modified timestamps.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTrigger": {
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"data",
"next_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/CronTrigger"
}
},
"next_cursor": {
"type": [
"string",
"null"
],
"description": "Opaque cursor for the next page, or null when this is the last page."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "crons_list",
"title": "List cron triggers",
"description": "Lists the project's cron triggers, newest first by default, filterable by name, agent, profile, or integration. Each item includes its schedule and next_fire_at.",
"inputSchema": {
"type": "object",
"required": [
"orgID",
"projectID"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\\` escapes a wildcard."
},
"sort": {
"enum": [
"name",
"-name",
"-updated_at",
"updated_at",
"-created_at",
"created_at"
],
"type": "string",
"description": "Sort order for named resources that expose created and modified timestamps."
},
"limit": {
"type": "integer",
"format": "int32",
"maximum": 100,
"minimum": 1,
"description": "Maximum number of items to return in one page."
},
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"cursor": {
"type": "string",
"maxLength": 1024,
"description": "Opaque pagination cursor from a previous response's next_cursor. Omit for the first page."
},
"agent_id": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$",
"description": "Only return triggers targeting this agent."
},
"projectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"integration_id": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$",
"description": "Only return scheduled launches for this integration."
},
"agent_profile_id": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$",
"description": "Only return triggers targeting this agent profile."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTrigger": {
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"data",
"next_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/CronTrigger"
}
},
"next_cursor": {
"type": [
"string",
"null"
],
"description": "Opaque cursor for the next page, or null when this is the last page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List cron triggers",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Updates the schedule, message template, or enabled state. The target is immutable; delete the trigger and create a new one to retarget.
The description explains the capability, when to use it, and what to expect.
Inputs89/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cron
Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cronTriggerID
Cron trigger ID (cron_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
enabled
Whether the trigger fires on schedule; false pauses it.
Clear enough to supply this argument.
message_template
Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › AgentCronTriggerTarget › agent_id
Agent (agt_...) that receives each message.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › AgentCronTriggerTarget › delivery_mode
How each message is delivered: queued (default) or steering.
Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.
{
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "crons_update",
"title": "Update cron trigger",
"description": "Updates the schedule, message template, or enabled state. The target is immutable; delete the trigger and create a new one to retarget.",
"inputSchema": {
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"cronTriggerID",
"orgID",
"projectID"
],
"properties": {
"cron": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"name": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"target": {
"type": "object",
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "Updates target options. The target type and ID cannot change. Integration settings can change for future occurrences. Omitted delivery_mode preserves the current mode.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"enabled": {
"type": "boolean",
"description": "Whether the trigger fires on schedule; false pauses it."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"projectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"cronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$",
"description": "Cron trigger ID (cron_...)."
},
"message_template": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"AgentID": {
"type": "string",
"pattern": "^agt_[a-z2-7]{26}$"
},
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"CronTimezone": {
"type": "string",
"default": "UTC",
"maxLength": 64,
"description": "IANA time zone the schedule is evaluated in."
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CronTriggerID": {
"type": "string",
"pattern": "^cron_[a-z2-7]{26}$"
},
"IntegrationID": {
"type": "string",
"pattern": "^itg_[a-z2-7]{26}$"
},
"AgentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$"
},
"CronExpression": {
"type": "string",
"maxLength": 256,
"minLength": 9,
"description": "Standard five-field cron expression (minute, hour, day of month, month, day of week). `TZ=`/`CRON_TZ=` prefixes are rejected; set the `timezone` field instead."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CronTriggerTarget": {
"oneOf": [
{
"$ref": "#/$defs/AgentCronTriggerTarget"
},
{
"$ref": "#/$defs/AgentProfileCronTriggerTarget"
},
{
"$ref": "#/$defs/IntegrationCronTriggerTarget"
}
],
"description": "What each firing does: type agent sends the message to an existing agent, type profile launches a new agent from a profile, and type integration hands the firing to an integration, such as a new Slack or Discord thread.",
"discriminator": {
"mapping": {
"agent": "#/$defs/AgentCronTriggerTarget",
"profile": "#/$defs/AgentProfileCronTriggerTarget",
"integration": "#/$defs/IntegrationCronTriggerTarget"
},
"propertyName": "type"
}
},
"CronTriggerLastRun": {
"type": "object",
"required": [
"state",
"created_at",
"updated_at",
"failure_message"
],
"properties": {
"state": {
"$ref": "#/$defs/CronTriggerLastRunState"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"failure_message": {
"type": [
"string",
"null"
],
"description": "Coarse scheduled action failure description; no raw provider errors."
}
},
"additionalProperties": false
},
"CronMessageTemplate": {
"type": "string",
"maxLength": 65536,
"description": "Go text/template rendered on each firing to produce the message sent to the target. The template receives a `trigger` value with `name`, `fired_at`, `last_fired_at`, and `local_date` fields. Timestamps remain UTC; local_date is the scheduled occurrence's ISO date in the schedule timezone. Required for agent and profile targets; omitted for integration targets, which use their own settings. Rendering is capped at 64 KiB of output and one second of wall-clock time, and `printf` width and precision specifiers are capped at 1024; a firing whose template fails to render is recorded in `failure_report` without sending a message."
},
"AgentCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_id"
],
"properties": {
"type": {
"enum": [
"agent"
],
"type": "string",
"description": "agent: send each message to an existing agent."
},
"agent_id": {
"$ref": "#/$defs/AgentID",
"description": "Agent (agt_...) that receives each message."
},
"delivery_mode": {
"$ref": "#/$defs/CronTriggerDeliveryMode",
"description": "How each message is delivered: queued (default) or steering."
}
},
"additionalProperties": false
},
"CronTriggerDeliveryMode": {
"enum": [
"queued",
"steering"
],
"type": "string",
"description": "Each firing sends a queued or steering message to the agent. Defaults to `queued` on creation; omitted updates preserve the current mode."
},
"CronTriggerLastRunState": {
"enum": [
"queued",
"processing",
"completed",
"failed"
],
"type": "string",
"description": "State of the latest accepted scheduled integration action. Completed means the integration handled the occurrence; it does not indicate completion of any agent task that action started."
},
"CronTriggerFailureReport": {
"type": "object",
"required": [
"message",
"will_retry",
"failed_at"
],
"properties": {
"message": {
"type": "string",
"description": "Why the most recent failed firing did not deliver a message."
},
"failed_at": {
"$ref": "#/$defs/Timestamp"
},
"will_retry": {
"type": "boolean",
"description": "Whether the firing will be retried after the claim lease expires."
}
},
"additionalProperties": false
},
"IntegrationCronTriggerTarget": {
"type": "object",
"required": [
"type",
"integration_id",
"settings"
],
"properties": {
"type": {
"enum": [
"integration"
],
"type": "string",
"description": "integration: hand each run to an integration."
},
"settings": {
"type": "object",
"description": "Settings validated by the target integration's published schedule input schema. Each accepted occurrence retains its own copy. Integration resource references are resolved when the integration handles the occurrence.",
"additionalProperties": true
},
"integration_id": {
"$ref": "#/$defs/IntegrationID",
"description": "Integration (itg_...) that handles each run."
}
},
"additionalProperties": false
},
"AgentProfileCronTriggerTarget": {
"type": "object",
"required": [
"type",
"agent_profile_id"
],
"properties": {
"type": {
"enum": [
"profile"
],
"type": "string",
"description": "profile: launch a new agent on each run."
},
"agent_profile_id": {
"$ref": "#/$defs/AgentProfileID",
"description": "Profile (aprf_...) to launch a new agent from on each run."
}
},
"additionalProperties": false
}
},
"required": [
"id",
"org_id",
"project_id",
"name",
"target",
"cron",
"timezone",
"enabled",
"last_fired_at",
"next_fire_at",
"failure_report",
"last_run",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/CronTriggerID"
},
"cron": {
"$ref": "#/$defs/CronExpression"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"target": {
"$ref": "#/$defs/CronTriggerTarget"
},
"enabled": {
"type": "boolean"
},
"last_run": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerLastRun"
},
{
"type": "null"
}
],
"description": "Status of the latest accepted scheduled integration launch, scoped to this project and integration. Null for ordinary cron, before any launch is accepted, or when retained details have expired. Never falls back to an older launch. Schedule firing failures remain separate in failure_report. Deleting or disabling a schedule does not cancel launch work already accepted by the integration."
},
"timezone": {
"$ref": "#/$defs/CronTimezone"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"next_fire_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "Next scheduled firing, or null while the trigger is disabled."
},
"last_fired_at": {
"oneOf": [
{
"$ref": "#/$defs/Timestamp"
},
{
"type": "null"
}
],
"description": "When the trigger last fired, or null if it has never fired. For integration targets this means durable inbox handoff."
},
"failure_report": {
"oneOf": [
{
"$ref": "#/$defs/CronTriggerFailureReport"
},
{
"type": "null"
}
],
"description": "Most recent failed firing, or null if no firing has failed since the last successful firing."
},
"message_template": {
"$ref": "#/$defs/CronMessageTemplate"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update cron trigger",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Lets a project's agent configs use one BYO machine by name and returns the grant with the machine's record. Pooled machines can't be granted this way and return 404. Idempotency keys are retained only while the grant exists. Retrying creation after the grant is revoked or deleted can recreate it and restore access, including through automatic SDK retries. A replay compares the request with the current grant.
The description explains the capability, when to use it, and what to expect.
Inputs70/100
Explain the meaning of this value, not just its name.
description
Optional note about this grant.
Explain the meaning of this value, not just its name.
machine_id
Machine ID (mch_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
metadata
Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 characters, values must be strings of up to 512 characters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Removes the project's access to the machine. Processes that depended on the grant are stopped. The machine itself is retained, and there are no dependency blockers.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
grantID
Project machine grant ID (pmg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Lets a project's agent configs use a configured model and returns the new grant. Optional overrides can narrow the model for that project (lower token limits, tools or reasoning turned off, fewer reasoning efforts or modalities) and set its per-request defaults within those limits.
The description explains the capability, when to use it, and what to expect.
Inputs78/100
Explain what happens when this optional value is omitted.
configured_model_id
Configured model (mdl_...) to grant.
Clear enough to supply this argument.
context_window_tokens
Optional project context budget for input and output tokens. Cannot exceed the configured model's budget. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Clear enough to supply this argument.
default_cache_retention
Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own.
Explain what happens when this optional value is omitted.
default_reasoning_effort
Optional project default reasoning effort.
Explain the meaning of this value, not just its name.
input_modalities
Optional project subset of configured-model input types (text, image, or file). Empty or omitted means inherit.
Clear enough to supply this argument.
max_output_tokens
Optional project output-token ceiling. Cannot exceed the configured model's ceiling.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
output_modalities
Optional project subset of configured-model output types. Empty or omitted means inherit.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
supported_reasoning_efforts
Optional project subset of configured-model reasoning efforts. If this excludes the inherited default_reasoning_effort, set default_reasoning_effort on the grant too.
Explain the meaning of this value, not just its name.
supports_reasoning
Optional project-level reasoning gate. Can disable reasoning, but cannot enable reasoning when the configured model does not support it.
Clear enough to supply this argument.
supports_tools
Optional project-level tool-use gate. Can disable tools, but cannot enable tools when the configured model does not support them.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Grant model to project",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
Output schema89/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$defs": {
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ProjectModelGrant": {
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"configured_model_id",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ProjectModelGrantID"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": [
"boolean",
"null"
],
"description": "Project-level tool-use override, or omitted/null to inherit from the configured model."
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Project subset of configured-model input types (text, image, or file). Empty means inherit."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Project output-token ceiling, or omitted/null to inherit from the configured model."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Project subset of configured-model output types. Empty means inherit."
},
"supports_reasoning": {
"type": [
"boolean",
"null"
],
"description": "Project-level reasoning override, or omitted/null to inherit from the configured model."
},
"configured_model_id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"context_window_tokens": {
"type": [
"integer",
"null"
],
"description": "Project context budget for input and output tokens, or omitted/null to inherit from the configured model. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Project default reasoning effort, or omitted/empty to inherit from the configured model."
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Project default per-request output-token cap, or omitted/null to inherit from the configured model."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Project subset of configured-model reasoning efforts. Empty means inherit. When non-empty, default_reasoning_effort must resolve to one of these values."
}
},
"additionalProperties": false
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ProjectModelGrantID": {
"type": "string",
"pattern": "^pmog_[a-z2-7]{26}$"
}
},
"required": [
"grant"
],
"properties": {
"grant": {
"$ref": "#/$defs/ProjectModelGrant"
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "grant_models_add",
"title": "Grant model to project",
"description": "Lets a project's agent configs use a configured model and returns the new grant. Optional overrides can narrow the model for that project (lower token limits, tools or reasoning turned off, fewer reasoning efforts or modalities) and set its per-request defaults within those limits.",
"inputSchema": {
"type": "object",
"required": [
"configured_model_id",
"orgID",
"projectID"
],
"properties": {
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"projectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"supports_tools": {
"type": "boolean",
"description": "Optional project-level tool-use gate. Can disable tools, but cannot enable tools when the configured model does not support them."
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional project subset of configured-model input types (text, image, or file). Empty or omitted means inherit."
},
"max_output_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1,
"description": "Optional project output-token ceiling. Cannot exceed the configured model's ceiling."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional project subset of configured-model output types. Empty or omitted means inherit."
},
"supports_reasoning": {
"type": "boolean",
"description": "Optional project-level reasoning gate. Can disable reasoning, but cannot enable reasoning when the configured model does not support it."
},
"configured_model_id": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$",
"description": "Configured model (mdl_...) to grant."
},
"context_window_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 2,
"description": "Optional project context budget for input and output tokens. Cannot exceed the configured model's budget. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"default_reasoning_effort": {
"type": "string",
"description": "Optional project default reasoning effort."
},
"default_max_output_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1,
"description": "Optional project default per-request output-token cap."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional project subset of configured-model reasoning efforts. If this excludes the inherited default_reasoning_effort, set default_reasoning_effort on the grant too."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"ProjectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ProjectModelGrant": {
"type": "object",
"required": [
"id",
"org_id",
"project_id",
"configured_model_id",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"created_at",
"updated_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ProjectModelGrantID"
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"project_id": {
"$ref": "#/$defs/ProjectID"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": [
"boolean",
"null"
],
"description": "Project-level tool-use override, or omitted/null to inherit from the configured model."
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Project subset of configured-model input types (text, image, or file). Empty means inherit."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Project output-token ceiling, or omitted/null to inherit from the configured model."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Project subset of configured-model output types. Empty means inherit."
},
"supports_reasoning": {
"type": [
"boolean",
"null"
],
"description": "Project-level reasoning override, or omitted/null to inherit from the configured model."
},
"configured_model_id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"context_window_tokens": {
"type": [
"integer",
"null"
],
"description": "Project context budget for input and output tokens, or omitted/null to inherit from the configured model. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Project default reasoning effort, or omitted/empty to inherit from the configured model."
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Project default per-request output-token cap, or omitted/null to inherit from the configured model."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Project subset of configured-model reasoning efforts. Empty means inherit. When non-empty, default_reasoning_effort must resolve to one of these values."
}
},
"additionalProperties": false
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ProjectModelGrantID": {
"type": "string",
"pattern": "^pmog_[a-z2-7]{26}$"
}
},
"required": [
"grant"
],
"properties": {
"grant": {
"$ref": "#/$defs/ProjectModelGrant"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Grant model to project",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Removes the project's access to the configured model. The grant is live policy: new launches can no longer select the model, and agents already using it lose access on their next model call. The model itself is retained, and there are no dependency blockers.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
modelGrantID
Project model grant ID (pmog_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "grant_models_delete",
"title": "Delete project model grant",
"description": "Removes the project's access to the configured model. The grant is live policy: new launches can no longer select the model, and agents already using it lose access on their next model call. The model itself is retained, and there are no dependency blockers.",
"inputSchema": {
"type": "object",
"required": [
"modelGrantID",
"orgID",
"projectID"
],
"properties": {
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"projectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"modelGrantID": {
"type": "string",
"pattern": "^pmog_[a-z2-7]{26}$",
"description": "Project model grant ID (pmog_...)."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": false
},
"annotations": {
"title": "Delete project model grant",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Updates the project's overrides for the configured model. Omitted fields keep their current values; null, or [] for supported_reasoning_efforts, input_modalities, and output_modalities, clears an override so the project inherits from the configured model. Agents already using the model apply the updated overrides on their next model call. Updates are validated against the configured model's current revision but not against agent configs, so narrowing below a config's model settings, such as its context_window_tokens or reasoning effort, makes that agent's next model call fail.
The description explains the capability, when to use it, and what to expect.
Inputs73/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
context_window_tokens
Project context budget for input and output tokens. Cannot exceed the configured model's budget. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
default_cache_retention
Overrides the model's prompt caching for this project. Null inherits it.
Clear enough to supply this argument.
default_max_output_tokens
Project default per-request output-token cap.
Explain the meaning of this value, not just its name.
default_reasoning_effort
Project default reasoning effort.
Explain the meaning of this value, not just its name.
input_modalities
Project subset of configured-model input types.
Explain the meaning of this value, not just its name.
max_output_tokens
Project output-token ceiling. Cannot exceed the configured model's ceiling.
Clear enough to supply this argument.
modelGrantID
Project model grant ID (pmog_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
output_modalities
Project subset of configured-model output types.
Explain the meaning of this value, not just its name.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
supported_reasoning_efforts
Project subset of configured-model reasoning efforts. If this excludes the inherited default_reasoning_effort, set default_reasoning_effort on the grant too.
Explain the meaning of this value, not just its name.
supports_reasoning
Project-level reasoning gate. Can disable reasoning, but cannot enable reasoning when the configured model does not support it.
Clear enough to supply this argument.
supports_tools
Project-level tool-use gate. Can disable tools, but cannot enable tools when the configured model does not support them.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Lists the configured models a project can use, most recently granted first by default, with each grant's overrides and the model's name and provider config.
The description explains the capability, when to use it, and what to expect.
Inputs71/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Clear enough to supply this argument.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\` escapes a wildcard.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Sort order for named resources that expose created and modified timestamps.
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Lets a project create machines from a machine pool, optionally with its own defaults and usage caps within the pool's limits, and returns the grant. No machines are created by this call. Idempotency keys are retained only while the grant exists. Retrying creation after the grant is revoked or deleted can recreate it and restore access, including through automatic SDK retries. A replay compares the request with the current grant, so later edits can return 409 with code idempotency_key_conflict.
The description explains the capability, when to use it, and what to expect.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
default_cwd
Default working directory for processes on this project's machines from the pool.
Clear enough to supply this argument.
default_machine_cpu
Default CPU count for machines this project creates from the pool, overriding the pool's default.
Clear enough to supply this argument.
default_machine_env_overlay
Env overlay merged over the pool's default_machine_env for machines materialized through this grant; a null entry removes the key.
Clear enough to supply this argument.
default_machine_memory_mb
Default memory in MB for machines this project creates from the pool, overriding the pool's default.
Clear enough to supply this argument.
default_machine_provider_options_overlay
Provider-specific options layered over the pool's provider options for this project's machines.
Clear enough to supply this argument.
default_machine_secret_env_overlay
Secret env overlay merged over the pool's default_machine_secret_env for machines materialized through this grant; a null entry removes the key.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
delete_after_idle_minutes
Idle minutes before deleting a machine created through this grant. Use 0 to disable for this grant; omit to inherit the pool default. Values from 1 through 4 are invalid.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
description
Optional note about this grant.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
machine_pool_id
Machine pool ID (mpo_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
max_machine_cpu
Largest CPU count one of this project's machines can request.
Clear enough to supply this argument.
max_machine_memory_mb
Largest memory in MB one of this project's machines can request.
Clear enough to supply this argument.
max_total_cpu
Maximum total CPU across this project's live machines from the pool.
Clear enough to supply this argument.
max_total_machines
Maximum number of live machines this project can have from the pool.
Clear enough to supply this argument.
max_total_memory_mb
Maximum total memory in MB across this project's live machines from the pool.
Clear enough to supply this argument.
metadata
Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 characters, values must be strings of up to 512 characters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
min_machine_cpu
Smallest CPU count one of this project's machines can request.
Clear enough to supply this argument.
min_machine_memory_mb
Smallest memory in MB one of this project's machines can request.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Explain the meaning of this value, not just its name.
projectID
Project ID (proj_...).
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Grant machine pool to project",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Removes the project's access to the machine pool, revokes machine grants generated through it, and stops processes that depended on those grants. The pool itself is retained, and there are no dependency blockers.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
poolGrantID
Project machine pool grant ID (pmpg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Updates the grant's overrides and limits. Omitted fields keep their current values; null clears an override so the grant follows the machine pool again. Overlay objects and metadata are replaced whole when present. Existing machines keep their configuration; the updated defaults and limits apply to new launches.
The description explains the capability, when to use it, and what to expect.
Inputs89/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
default_cwd
Default working directory for processes on this project's machines created from the pool after this change.
Clear enough to supply this argument.
default_machine_cpu
Default CPU count for machines this project creates from the pool, overriding the pool's default.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
default_machine_env_overlay
Env overlay merged over the pool's default_machine_env for machines this project creates from the pool afterward; a null entry removes the key.
Clear enough to supply this argument.
default_machine_memory_mb
Default memory in MB for machines this project creates from the pool, overriding the pool's default.
Clear enough to supply this argument.
default_machine_provider_options_overlay
Provider-specific options layered over the pool's provider options for this project's machines.
Clear enough to supply this argument.
default_machine_secret_env_overlay
Secret env overlay merged over the pool's default_machine_secret_env for machines this project creates from the pool afterward; a null entry removes the key.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
delete_after_idle_minutes
Idle minutes before deleting a machine created through this grant. Use 0 to disable for this grant; null restores inheritance from the pool; omitted leaves it unchanged. Values from 1 through 4 are invalid.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
description
Optional note about this grant.
Clear enough to supply this argument.
max_machine_cpu
Largest CPU count one of this project's machines can request.
Clear enough to supply this argument.
max_machine_memory_mb
Largest memory in MB one of this project's machines can request.
Clear enough to supply this argument.
max_total_cpu
Maximum total CPU across this project's live machines from the pool.
Clear enough to supply this argument.
max_total_machines
Maximum number of live machines this project can have from the pool.
Clear enough to supply this argument.
max_total_memory_mb
Maximum total memory in MB across this project's live machines from the pool.
Clear enough to supply this argument.
metadata
Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 characters, values must be strings of up to 512 characters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
min_machine_cpu
Smallest CPU count one of this project's machines can request.
Clear enough to supply this argument.
min_machine_memory_mb
Smallest memory in MB one of this project's machines can request.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Clear enough to supply this argument.
poolGrantID
Project machine pool grant ID (pmpg_...).
Clear enough to supply this argument.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Returns one project's grant for a machine pool, with the defaults and limits it sets on top of the pool's own. Null fields set no override, so the pool's value applies.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
poolGrantID
Project machine pool grant ID (pmpg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Registers a machine you run yourself and returns its daemon token for installing omnarad on it; the token is shown only in this response. The machine stays offline until its daemon connects. project_ids grants it to those projects in the same call, and their agent configs reference it by display_name.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Explain the meaning of this value, not just its name.
cwd
Default working directory for processes started on the machine.
Clear enough to supply this argument.
description
Optional description of the machine.
Explain the meaning of this value, not just its name.
display_name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
env
Environment variables set for processes started on the machine.
Clear enough to supply this argument.
metadata
User-supplied metadata stored on a machine, provided directly or copied from the machine pool that provisions it. A restriction of Metadata that leaves room for one reserved pair - Omnara sets observed_platform on the machine to the platform reported by its daemon, so the key is reserved and at most 15 user pairs are accepted.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Clear enough to supply this argument.
project_ids
Projects to grant the machine to in the same call (up to 100).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
secret_env
Environment variable names mapped to secret IDs (sec_...) whose values are set for processes started on the machine.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
token_name
Optional daemon token name. Omitted values default to daemon.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Deletes a BYO machine, ends its active daemon runtimes and work, revokes its daemon tokens and project grants, and releases agent bindings. Pooled machines are managed through their machine pool and cannot be deleted through this route. There are no dependency blockers for a BYO machine.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
machineID
Machine ID (mch_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "machines_delete",
"title": "Delete machine",
"description": "Deletes a BYO machine, ends its active daemon runtimes and work, revokes its daemon tokens and project grants, and releases agent bindings. Pooled machines are managed through their machine pool and cannot be deleted through this route. There are no dependency blockers for a BYO machine.",
"inputSchema": {
"type": "object",
"required": [
"machineID",
"orgID"
],
"properties": {
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"machineID": {
"type": "string",
"pattern": "^mch_[a-z2-7]{26}$",
"description": "Machine ID (mch_...)."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": false
},
"annotations": {
"title": "Delete machine",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Returns one active machine's full record: connection state, execution defaults (secret IDs only, never values), metadata, and the latest failure report. Machines in other lifecycle states, such as pool machines still provisioning, aren't returned.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
machineID
Machine ID (mch_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Lists the machines the caller can see, both BYO and pooled, newest first by default, with each one's connection state. Items are summaries without execution defaults or metadata.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Clear enough to supply this argument.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
machine_pool_id
Return only machines provisioned by this machine pool.
Clear enough to supply this argument.
name
Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\` escapes a wildcard.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Sort order for named resources that expose created and modified timestamps.
Explain the meaning of this value, not just its name.
source_kind
Filter machines by source kind. Omit to include both BYO and pooled machines.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Updates a machine's execution defaults: working directory, environment variables, and secret environment variables. env and secret_env replace the whole map, and changes apply to processes started afterward.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
Explain what happens when this optional value is omitted.
cwd
Default working directory for processes started on the machine.
Clear enough to supply this argument.
env
Environment variables set for processes started on the machine.
Explain what happens when this optional value is omitted.
machineID
Machine ID (mch_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
secret_env
Environment variable names mapped to secret IDs (sec_...) whose values are set for processes started on the machine.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Fetches the provider's live model catalog by validating the configured credential and probing the provider's /models endpoint. The call waits on the upstream provider, so it is slower than the other model provider config routes and can report failure as data.
The description explains the capability, when to use it, and what to expect.
Inputs62/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
modelProviderConfigID
Model provider config ID (mpc_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"$defs": {
"DiscoveredModelPricing": {
"type": "object",
"required": [
"input_usd_per_million",
"output_usd_per_million"
],
"properties": {
"input_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
},
"output_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
},
"cache_read_input_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
},
"cache_write_input_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
}
},
"description": "Provider-advertised list prices in USD per million tokens, as exact decimal strings. Present only when the provider publishes pricing in its model catalog (OpenRouter). Cache prices are omitted when the provider does not publish them.",
"additionalProperties": false
},
"DiscoveredProviderModel": {
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Provider model slug usable as a configured model's provider_model_slug."
},
"pricing": {
"$ref": "#/$defs/DiscoveredModelPricing"
},
"display_name": {
"type": "string"
},
"max_output_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1,
"description": "Provider-advertised maximum output limit in tokens, when available."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara can send this model a reasoning effort, when the provider or the public model catalog reports it."
},
"context_window_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 2,
"description": "Provider-advertised context window limit in tokens, when available."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values the model accepts, when reported."
}
},
"additionalProperties": false
}
},
"required": [
"status"
],
"properties": {
"error": {
"type": "string",
"description": "Why the probe failed. Present when status is failed."
},
"models": {
"type": "array",
"items": {
"$ref": "#/$defs/DiscoveredProviderModel"
},
"description": "Models advertised by the provider, newest first, filtered to text-output tool-calling models where the provider exposes enough metadata to tell. Present when status is ok."
},
"status": {
"enum": [
"ok",
"failed"
],
"type": "string"
}
},
"description": "The provider's model catalog, obtained by validating the configured credential and probing the provider's /models endpoint. A failed probe does not affect the stored config; treat it as a warning that the base URL or API key may be invalid.",
"additionalProperties": false
}
Original tool metadata
{
"name": "model_providers_catalog",
"title": "Get model provider catalog",
"description": "Fetches the provider's live model catalog by validating the configured credential and probing the provider's /models endpoint. The call waits on the upstream provider, so it is slower than the other model provider config routes and can report failure as data.",
"inputSchema": {
"type": "object",
"required": [
"modelProviderConfigID",
"orgID"
],
"properties": {
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"modelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$",
"description": "Model provider config ID (mpc_...)."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"DiscoveredModelPricing": {
"type": "object",
"required": [
"input_usd_per_million",
"output_usd_per_million"
],
"properties": {
"input_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
},
"output_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
},
"cache_read_input_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
},
"cache_write_input_usd_per_million": {
"type": "string",
"pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$"
}
},
"description": "Provider-advertised list prices in USD per million tokens, as exact decimal strings. Present only when the provider publishes pricing in its model catalog (OpenRouter). Cache prices are omitted when the provider does not publish them.",
"additionalProperties": false
},
"DiscoveredProviderModel": {
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Provider model slug usable as a configured model's provider_model_slug."
},
"pricing": {
"$ref": "#/$defs/DiscoveredModelPricing"
},
"display_name": {
"type": "string"
},
"max_output_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1,
"description": "Provider-advertised maximum output limit in tokens, when available."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara can send this model a reasoning effort, when the provider or the public model catalog reports it."
},
"context_window_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 2,
"description": "Provider-advertised context window limit in tokens, when available."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values the model accepts, when reported."
}
},
"additionalProperties": false
}
},
"required": [
"status"
],
"properties": {
"error": {
"type": "string",
"description": "Why the probe failed. Present when status is failed."
},
"models": {
"type": "array",
"items": {
"$ref": "#/$defs/DiscoveredProviderModel"
},
"description": "Models advertised by the provider, newest first, filtered to text-output tool-calling models where the provider exposes enough metadata to tell. Present when status is ok."
},
"status": {
"enum": [
"ok",
"failed"
],
"type": "string"
}
},
"description": "The provider's model catalog, obtained by validating the configured credential and probing the provider's /models endpoint. A failed probe does not affect the stored config; treat it as a warning that the base URL or API key may be invalid.",
"additionalProperties": false
},
"annotations": {
"title": "Get model provider catalog",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Create a model provider config, validate the configured credential where the provider exposes a validation endpoint, then probe the provider's /models endpoint. The result is returned as model_catalog; a failed probe does not fail creation.
The description explains the capability, when to use it, and what to expect.
Inputs67/100
13 of 16 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
api_format
Wire protocol the model endpoint speaks: openai-responses, openai-chat-completions, or anthropic-messages.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
api_variant
Provider-specific flavor of the API format: default, openrouter, or bedrock.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
auth_kind
How the credential is sent: bearer_token, api_key_header, or sigv4 (AWS).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
auth_options › header_name
Not provided
Missing description. Explain what this value means and how to supply it.
auth_options › region
Not provided
Missing description. Explain what this value means and how to supply it.
auth_options › service
Not provided
Missing description. Explain what this value means and how to supply it.
base_url
Provider endpoint base URL. Normal API mode requires a public HTTPS endpoint; localhost and loopback endpoints are accepted only when the API is running in insecure dev mode.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
credential_secret_id
Secret ID (sec_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
endpoint_path
URL path under base_url. Defaults to /responses for OpenAI Responses, /chat/completions for Chat Completions, and /messages for Anthropic Messages.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
headers
Extra HTTP headers sent with every request to this provider. Values are stored and returned as plain text; use secret_headers for keys and tokens.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
idle_timeout_ms
Maximum wait for response headers or the next response bytes, in milliseconds. Heartbeats count as activity. Defaults to 300000 (5 minutes). Local response processing does not consume this idle budget.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Clear enough to supply this argument.
preset
Built-in provider settings: openai, openrouter, or anthropic. A preset fills in api_format, api_variant, base_url, endpoint_path, auth_kind, and auth_options, so omit those when using one.
Clear enough to supply this argument.
request_timeout_ms
Total deadline for one provider attempt, including reasoning and response streaming, in milliseconds. Defaults to 3600000 (60 minutes). Retries have separate deadlines.
Clear enough to supply this argument.
secret_headers
Extra HTTP headers whose values come from org-owned generic secrets, mapping header names to secret references.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Deletes only the model provider config. Deletion is blocked while it has configured models. Cluster-managed provider configs cannot be deleted through this route.
The description explains the capability, when to use it, and what to expect.
Inputs73/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
modelProviderConfigID
Model provider config ID (mpc_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Returns one model provider config's stored settings; secret values are never returned. The provider isn't contacted, so the response doesn't list its models.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
modelProviderConfigID
Model provider config ID (mpc_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Updates a model provider config's connection settings, such as its credential and headers, and returns the updated config; omitted fields keep their values. The credential secret is checked to exist and match auth_kind, but the provider isn't contacted, so a credential the provider rejects isn't caught here.
The description explains the capability, when to use it, and what to expect.
Inputs63/100
10 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
auth_kind
How the credential is sent: bearer_token, api_key_header, or sigv4 (AWS).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
auth_options › header_name
Not provided
Missing description. Explain what this value means and how to supply it.
auth_options › region
Not provided
Missing description. Explain what this value means and how to supply it.
auth_options › service
Not provided
Missing description. Explain what this value means and how to supply it.
base_url
Provider endpoint base URL. Normal API mode requires a public HTTPS endpoint; localhost and loopback endpoints are accepted only when the API is running in insecure dev mode.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
credential_secret_id
Secret ID (sec_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
endpoint_path
URL path under base_url. This changes where requests are sent, not which API format Omnara speaks.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
headers
Extra HTTP headers sent with every request to this provider. Values are stored and returned as plain text; use secret_headers for keys and tokens. Replaces all headers when provided.
Clear enough to supply this argument.
idle_timeout_ms
Maximum wait for response headers or the next response bytes, in milliseconds. Heartbeats count as activity. Local response processing does not consume this idle budget.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
modelProviderConfigID
Model provider config ID (mpc_...).
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
request_timeout_ms
Total deadline for one provider attempt, including reasoning and response streaming, in milliseconds. Retries have separate deadlines.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
secret_headers
Extra HTTP headers whose values come from org-owned generic secrets, mapping header names to secret references. Replaces all secret headers when provided.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Adds a provider model to this provider config under the name agent configs use as model.name, and returns it. The model slug isn't checked against the provider's catalog, and no project can use the model yet.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
api_variant_options
Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.
Clear enough to supply this argument.
context_window_tokens
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Clear enough to supply this argument.
default_cache_retention
Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
default_max_output_tokens
Optional normal per-request output allowance. Discovery never populates this field. When omitted, requests use the known output ceiling. If both are absent, Messages uses 64000 tokens; other formats omit the allowance. Runtime allowances are fitted to available context.
Clear enough to supply this argument.
default_reasoning_effort
Default reasoning effort to send for models/API formats that support effort-style reasoning controls. Requires supports_reasoning=true. When supported_reasoning_efforts is present, this value must be listed there.
Explain the meaning of this value, not just its name.
input_modalities
Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified.
Clear enough to supply this argument.
max_output_tokens
Optional known output-token ceiling. Omitted capacity remains unknown; selecting a discovered model can supply its published ceiling. Explicit values must not exceed the provider's supported limit.
Clear enough to supply this argument.
modelProviderConfigID
Model provider config ID (mpc_...).
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
name
User-assigned configured model name used by agent YAML as model.name. Names are unique within an active model provider config and can be renamed without changing existing agents.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Explain the meaning of this value, not just its name.
output_modalities
Output types this configured model can return. Omnara currently consumes text output.
Clear enough to supply this argument.
provider_model_slug
Exact provider model slug sent to the provider endpoint. Free-pool, `:online`, and preset model ids are not accepted on Omnara-managed OpenRouter providers.
Clear enough to supply this argument.
supported_reasoning_efforts
Reasoning effort values this configured model accepts. Requires supports_reasoning=true when non-empty.
Clear enough to supply this argument.
supports_reasoning
Whether Omnara should use this model's reasoning features. For OpenAI Responses, this also enables encrypted reasoning replay for stateless calls.
Clear enough to supply this argument.
supports_tools
Whether this configured model can receive tool definitions and emit tool calls. Agent configs with enabled tools are rejected when this is false.
{
"type": "object",
"$defs": {
"Timestamp": {
"type": "string",
"format": "date-time"
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"ManagementKind": {
"enum": [
"tenant",
"cluster"
],
"type": "string",
"description": "Lifecycle owner. Tenant-managed resources can be changed through tenant APIs. Cluster-managed resources are installed and lifecycle-managed by the control plane; individual APIs may explicitly expose tenant-editable settings."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ModelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$"
},
"ModelAPIVariantOptions": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"ConfiguredModelRevisionID": {
"type": "string",
"pattern": "^mrev_[a-z2-7]{26}$"
}
},
"required": [
"id",
"org_id",
"model_provider_config_id",
"management_kind",
"name",
"current_revision_id",
"provider_model_slug",
"context_window_tokens",
"max_output_tokens",
"supports_tools",
"supports_reasoning",
"default_reasoning_effort",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"api_variant_options",
"created_at",
"updated_at",
"revision_created_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"name": {
"$ref": "#/$defs/ResourceName",
"description": "User-assigned configured model name used by agent YAML as model.name."
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls."
},
"management_kind": {
"$ref": "#/$defs/ManagementKind"
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Known output-token ceiling for this model, or null when unknown."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features."
},
"api_variant_options": {
"$ref": "#/$defs/ModelAPIVariantOptions"
},
"current_revision_id": {
"$ref": "#/$defs/ConfiguredModelRevisionID"
},
"provider_model_slug": {
"type": "string",
"description": "Exact provider model slug sent to the provider endpoint by the current revision."
},
"revision_created_at": {
"$ref": "#/$defs/Timestamp"
},
"context_window_tokens": {
"type": "integer",
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls."
},
"model_provider_config_id": {
"$ref": "#/$defs/ModelProviderConfigID"
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Default per-request output-token cap sent to the provider unless an agent config overrides it."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "models_create",
"title": "Create configured model",
"description": "Adds a provider model to this provider config under the name agent configs use as model.name, and returns it. The model slug isn't checked against the provider's catalog, and no project can use the model yet.",
"inputSchema": {
"type": "object",
"required": [
"context_window_tokens",
"modelProviderConfigID",
"name",
"orgID",
"provider_model_slug"
],
"properties": {
"name": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "User-assigned configured model name used by agent YAML as model.name. Names are unique within an active model provider config and can be renamed without changing existing agents."
},
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls. Agent configs with enabled tools are rejected when this is false."
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"max_output_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1,
"description": "Optional known output-token ceiling. Omitted capacity remains unknown; selecting a discovered model can supply its published ceiling. Explicit values must not exceed the provider's supported limit."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return. Omnara currently consumes text output."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features. For OpenAI Responses, this also enables encrypted reasoning replay for stateless calls."
},
"api_variant_options": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"provider_model_slug": {
"type": "string",
"minLength": 1,
"description": "Exact provider model slug sent to the provider endpoint. Free-pool, `:online`, and preset model ids are not accepted on Omnara-managed OpenRouter providers."
},
"context_window_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 2,
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"modelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$",
"description": "Model provider config ID (mpc_...)."
},
"default_cache_retention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls. Requires supports_reasoning=true. When supported_reasoning_efforts is present, this value must be listed there."
},
"default_max_output_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1,
"description": "Optional normal per-request output allowance. Discovery never populates this field. When omitted, requests use the known output ceiling. If both are absent, Messages uses 64000 tokens; other formats omit the allowance. Runtime allowances are fitted to available context."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts. Requires supports_reasoning=true when non-empty."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"Timestamp": {
"type": "string",
"format": "date-time"
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"ManagementKind": {
"enum": [
"tenant",
"cluster"
],
"type": "string",
"description": "Lifecycle owner. Tenant-managed resources can be changed through tenant APIs. Cluster-managed resources are installed and lifecycle-managed by the control plane; individual APIs may explicitly expose tenant-editable settings."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ModelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$"
},
"ModelAPIVariantOptions": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"ConfiguredModelRevisionID": {
"type": "string",
"pattern": "^mrev_[a-z2-7]{26}$"
}
},
"required": [
"id",
"org_id",
"model_provider_config_id",
"management_kind",
"name",
"current_revision_id",
"provider_model_slug",
"context_window_tokens",
"max_output_tokens",
"supports_tools",
"supports_reasoning",
"default_reasoning_effort",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"api_variant_options",
"created_at",
"updated_at",
"revision_created_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"name": {
"$ref": "#/$defs/ResourceName",
"description": "User-assigned configured model name used by agent YAML as model.name."
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls."
},
"management_kind": {
"$ref": "#/$defs/ManagementKind"
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Known output-token ceiling for this model, or null when unknown."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features."
},
"api_variant_options": {
"$ref": "#/$defs/ModelAPIVariantOptions"
},
"current_revision_id": {
"$ref": "#/$defs/ConfiguredModelRevisionID"
},
"provider_model_slug": {
"type": "string",
"description": "Exact provider model slug sent to the provider endpoint by the current revision."
},
"revision_created_at": {
"$ref": "#/$defs/Timestamp"
},
"context_window_tokens": {
"type": "integer",
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls."
},
"model_provider_config_id": {
"$ref": "#/$defs/ModelProviderConfigID"
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Default per-request output-token cap sent to the provider unless an agent config overrides it."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create configured model",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Deletes only the configured model. Deletion is blocked while it has active project grants. Cluster-managed configured models cannot be deleted through this route.
The description explains the capability, when to use it, and what to expect.
Inputs69/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
configuredModelID
Configured model ID (mdl_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
modelProviderConfigID
Model provider config ID (mpc_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"type": "object",
"$defs": {
"Timestamp": {
"type": "string",
"format": "date-time"
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"ManagementKind": {
"enum": [
"tenant",
"cluster"
],
"type": "string",
"description": "Lifecycle owner. Tenant-managed resources can be changed through tenant APIs. Cluster-managed resources are installed and lifecycle-managed by the control plane; individual APIs may explicitly expose tenant-editable settings."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModel": {
"type": "object",
"required": [
"id",
"org_id",
"model_provider_config_id",
"management_kind",
"name",
"current_revision_id",
"provider_model_slug",
"context_window_tokens",
"max_output_tokens",
"supports_tools",
"supports_reasoning",
"default_reasoning_effort",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"api_variant_options",
"created_at",
"updated_at",
"revision_created_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"name": {
"$ref": "#/$defs/ResourceName",
"description": "User-assigned configured model name used by agent YAML as model.name."
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls."
},
"management_kind": {
"$ref": "#/$defs/ManagementKind"
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Known output-token ceiling for this model, or null when unknown."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features."
},
"api_variant_options": {
"$ref": "#/$defs/ModelAPIVariantOptions"
},
"current_revision_id": {
"$ref": "#/$defs/ConfiguredModelRevisionID"
},
"provider_model_slug": {
"type": "string",
"description": "Exact provider model slug sent to the provider endpoint by the current revision."
},
"revision_created_at": {
"$ref": "#/$defs/Timestamp"
},
"context_window_tokens": {
"type": "integer",
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls."
},
"model_provider_config_id": {
"$ref": "#/$defs/ModelProviderConfigID"
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Default per-request output-token cap sent to the provider unless an agent config overrides it."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts."
}
},
"additionalProperties": false
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ModelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$"
},
"ModelAPIVariantOptions": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"ConfiguredModelRevisionID": {
"type": "string",
"pattern": "^mrev_[a-z2-7]{26}$"
}
},
"required": [
"data",
"next_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/ConfiguredModel"
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "models_list",
"title": "List configured models",
"description": "Lists the models configured under one model provider config, newest first, with each model's slug, token limits, and reasoning support.",
"inputSchema": {
"type": "object",
"required": [
"modelProviderConfigID",
"orgID"
],
"properties": {
"limit": {
"type": "integer",
"format": "int32",
"maximum": 100,
"minimum": 1,
"description": "Maximum number of items to return in one page."
},
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"cursor": {
"type": "string",
"maxLength": 1024,
"description": "Opaque pagination cursor from a previous response's next_cursor. Omit for the first page."
},
"modelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$",
"description": "Model provider config ID (mpc_...)."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"Timestamp": {
"type": "string",
"format": "date-time"
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"ManagementKind": {
"enum": [
"tenant",
"cluster"
],
"type": "string",
"description": "Lifecycle owner. Tenant-managed resources can be changed through tenant APIs. Cluster-managed resources are installed and lifecycle-managed by the control plane; individual APIs may explicitly expose tenant-editable settings."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModel": {
"type": "object",
"required": [
"id",
"org_id",
"model_provider_config_id",
"management_kind",
"name",
"current_revision_id",
"provider_model_slug",
"context_window_tokens",
"max_output_tokens",
"supports_tools",
"supports_reasoning",
"default_reasoning_effort",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"api_variant_options",
"created_at",
"updated_at",
"revision_created_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"name": {
"$ref": "#/$defs/ResourceName",
"description": "User-assigned configured model name used by agent YAML as model.name."
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls."
},
"management_kind": {
"$ref": "#/$defs/ManagementKind"
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Known output-token ceiling for this model, or null when unknown."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features."
},
"api_variant_options": {
"$ref": "#/$defs/ModelAPIVariantOptions"
},
"current_revision_id": {
"$ref": "#/$defs/ConfiguredModelRevisionID"
},
"provider_model_slug": {
"type": "string",
"description": "Exact provider model slug sent to the provider endpoint by the current revision."
},
"revision_created_at": {
"$ref": "#/$defs/Timestamp"
},
"context_window_tokens": {
"type": "integer",
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls."
},
"model_provider_config_id": {
"$ref": "#/$defs/ModelProviderConfigID"
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Default per-request output-token cap sent to the provider unless an agent config overrides it."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts."
}
},
"additionalProperties": false
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ModelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$"
},
"ModelAPIVariantOptions": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"ConfiguredModelRevisionID": {
"type": "string",
"pattern": "^mrev_[a-z2-7]{26}$"
}
},
"required": [
"data",
"next_cursor"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/$defs/ConfiguredModel"
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"annotations": {
"title": "List configured models",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Updates a configured model's settings and returns the updated model; omitted fields keep their values. Agents already using the model pick up the change on their next model call. The update isn't checked against project grants or agent configs, so lowering a limit below their overrides or turning off tools or reasoning they rely on makes those agents' next model call fail.
The description explains the capability, when to use it, and what to expect.
Inputs89/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
api_variant_options
Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.
Clear enough to supply this argument.
configuredModelID
Configured model ID (mdl_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
context_window_tokens
Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit.
Clear enough to supply this argument.
default_cache_retention
Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own.
Clear enough to supply this argument.
default_max_output_tokens
Optional per-request output allowance unless a project or agent overrides it. Without a default or known ceiling, Messages uses 64000 tokens; other formats omit the allowance.
Clear enough to supply this argument.
default_reasoning_effort
Default reasoning effort to send for models/API formats that support effort-style reasoning controls. Requires supports_reasoning=true. When supported_reasoning_efforts is present, this value must be listed there.
Explain the meaning of this value, not just its name.
input_modalities
Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified.
Clear enough to supply this argument.
max_output_tokens
Known output-token ceiling for this model. Omitted keeps the current value. Null clears it to unknown for every API format.
Clear enough to supply this argument.
modelProviderConfigID
Model provider config ID (mpc_...).
Explain the meaning of this value, not just its name.
name
User-assigned configured model name used by agent YAML as model.name. Renaming affects future YAML resolution but does not change existing agents.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
output_modalities
Output types this configured model can return. Omnara currently consumes text output.
Clear enough to supply this argument.
provider_model_slug
Exact provider model slug sent to the provider endpoint. Free-pool, `:online`, and preset model ids are not accepted on Omnara-managed OpenRouter providers.
Clear enough to supply this argument.
supported_reasoning_efforts
Reasoning effort values this configured model accepts. Requires supports_reasoning=true when non-empty.
Clear enough to supply this argument.
supports_reasoning
Whether Omnara should use this model's reasoning features. For OpenAI Responses, this also enables encrypted reasoning replay for stateless calls. Omitted keeps the current value.
Clear enough to supply this argument.
supports_tools
Whether this configured model can receive tool definitions and emit tool calls. Agent configs with enabled tools are rejected when this is false. Omitted keeps the current value.
{
"type": "object",
"$defs": {
"Timestamp": {
"type": "string",
"format": "date-time"
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"ManagementKind": {
"enum": [
"tenant",
"cluster"
],
"type": "string",
"description": "Lifecycle owner. Tenant-managed resources can be changed through tenant APIs. Cluster-managed resources are installed and lifecycle-managed by the control plane; individual APIs may explicitly expose tenant-editable settings."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ModelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$"
},
"ModelAPIVariantOptions": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"ConfiguredModelRevisionID": {
"type": "string",
"pattern": "^mrev_[a-z2-7]{26}$"
}
},
"required": [
"id",
"org_id",
"model_provider_config_id",
"management_kind",
"name",
"current_revision_id",
"provider_model_slug",
"context_window_tokens",
"max_output_tokens",
"supports_tools",
"supports_reasoning",
"default_reasoning_effort",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"api_variant_options",
"created_at",
"updated_at",
"revision_created_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"name": {
"$ref": "#/$defs/ResourceName",
"description": "User-assigned configured model name used by agent YAML as model.name."
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls."
},
"management_kind": {
"$ref": "#/$defs/ManagementKind"
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Known output-token ceiling for this model, or null when unknown."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features."
},
"api_variant_options": {
"$ref": "#/$defs/ModelAPIVariantOptions"
},
"current_revision_id": {
"$ref": "#/$defs/ConfiguredModelRevisionID"
},
"provider_model_slug": {
"type": "string",
"description": "Exact provider model slug sent to the provider endpoint by the current revision."
},
"revision_created_at": {
"$ref": "#/$defs/Timestamp"
},
"context_window_tokens": {
"type": "integer",
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls."
},
"model_provider_config_id": {
"$ref": "#/$defs/ModelProviderConfigID"
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Default per-request output-token cap sent to the provider unless an agent config overrides it."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts."
}
},
"additionalProperties": false
}
Original tool metadata
{
"name": "models_update",
"title": "Update configured model",
"description": "Updates a configured model's settings and returns the updated model; omitted fields keep their values. Agents already using the model pick up the change on their next model call. The update isn't checked against project grants or agent configs, so lowering a limit below their overrides or turning off tools or reasoning they rely on makes those agents' next model call fail.",
"inputSchema": {
"type": "object",
"required": [
"configuredModelID",
"modelProviderConfigID",
"orgID"
],
"properties": {
"name": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "User-assigned configured model name used by agent YAML as model.name. Renaming affects future YAML resolution but does not change existing agents."
},
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls. Agent configs with enabled tools are rejected when this is false. Omitted keeps the current value."
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"configuredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$",
"description": "Configured model ID (mdl_...)."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"maximum": 2147483647,
"minimum": 1,
"description": "Known output-token ceiling for this model. Omitted keeps the current value. Null clears it to unknown for every API format."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return. Omnara currently consumes text output."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features. For OpenAI Responses, this also enables encrypted reasoning replay for stateless calls. Omitted keeps the current value."
},
"api_variant_options": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"provider_model_slug": {
"type": "string",
"minLength": 1,
"description": "Exact provider model slug sent to the provider endpoint. Free-pool, `:online`, and preset model ids are not accepted on Omnara-managed OpenRouter providers."
},
"context_window_tokens": {
"type": "integer",
"maximum": 2147483647,
"minimum": 2,
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"modelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$",
"description": "Model provider config ID (mpc_...)."
},
"default_cache_retention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls. Requires supports_reasoning=true. When supported_reasoning_efforts is present, this value must be listed there."
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"maximum": 2147483647,
"minimum": 1,
"description": "Optional per-request output allowance unless a project or agent overrides it. Without a default or known ceiling, Messages uses 64000 tokens; other formats omit the allowance."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts. Requires supports_reasoning=true when non-empty."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"Timestamp": {
"type": "string",
"format": "date-time"
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"ManagementKind": {
"enum": [
"tenant",
"cluster"
],
"type": "string",
"description": "Lifecycle owner. Tenant-managed resources can be changed through tenant APIs. Cluster-managed resources are installed and lifecycle-managed by the control plane; individual APIs may explicitly expose tenant-editable settings."
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"ConfiguredModelID": {
"type": "string",
"pattern": "^mdl_[a-z2-7]{26}$"
},
"ModelCacheRetention": {
"enum": [
"none",
"short",
"long"
],
"type": "string",
"description": "Prompt-cache preference for model requests; `short` when omitted. `short` applies the route's default caching (explicit cache breakpoints where the provider requires them) and, where the route accepts one, a stable conversation key for cache-aware routing. `long` prefers the route's extended cache lifetime where one exists (currently Anthropic's one-hour cache, which on Bedrock requires Claude 4.5 or newer) and behaves like `short` elsewhere. `none` sends no Omnara-managed cache controls or conversation key; providers may still cache prefixes on their own."
},
"ModelProviderConfigID": {
"type": "string",
"pattern": "^mpc_[a-z2-7]{26}$"
},
"ModelAPIVariantOptions": {
"type": "object",
"description": "Extra top-level JSON fields to include in provider requests for this configured model. Use this for provider-specific settings that Omnara does not expose as typed fields, such as OpenRouter `provider` routing or sampling parameters. Omnara still controls the fields it needs to run the agent correctly, including the model, prompt/messages, streaming, tools, output-token limit, and selected reasoning policy. Provider passthrough values for those fields are ignored. For OpenRouter routing options, see https://openrouter.ai/docs/guides/routing/provider-selection and general request parameters at https://openrouter.ai/docs/api/reference/parameters. Omnara-managed OpenRouter providers accept only sampling, reasoning, and per-model routing options here.",
"additionalProperties": true
},
"ConfiguredModelRevisionID": {
"type": "string",
"pattern": "^mrev_[a-z2-7]{26}$"
}
},
"required": [
"id",
"org_id",
"model_provider_config_id",
"management_kind",
"name",
"current_revision_id",
"provider_model_slug",
"context_window_tokens",
"max_output_tokens",
"supports_tools",
"supports_reasoning",
"default_reasoning_effort",
"supported_reasoning_efforts",
"input_modalities",
"output_modalities",
"api_variant_options",
"created_at",
"updated_at",
"revision_created_at"
],
"properties": {
"id": {
"$ref": "#/$defs/ConfiguredModelID"
},
"name": {
"$ref": "#/$defs/ResourceName",
"description": "User-assigned configured model name used by agent YAML as model.name."
},
"org_id": {
"$ref": "#/$defs/OrganizationID"
},
"created_at": {
"$ref": "#/$defs/Timestamp"
},
"updated_at": {
"$ref": "#/$defs/Timestamp"
},
"supports_tools": {
"type": "boolean",
"description": "Whether this configured model can receive tool definitions and emit tool calls."
},
"management_kind": {
"$ref": "#/$defs/ManagementKind"
},
"input_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Input types this configured model accepts. Omnara recognizes text, image, and file; an empty list leaves capabilities unspecified."
},
"max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Known output-token ceiling for this model, or null when unknown."
},
"output_modalities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Output types this configured model can return."
},
"supports_reasoning": {
"type": "boolean",
"description": "Whether Omnara should use this model's reasoning features."
},
"api_variant_options": {
"$ref": "#/$defs/ModelAPIVariantOptions"
},
"current_revision_id": {
"$ref": "#/$defs/ConfiguredModelRevisionID"
},
"provider_model_slug": {
"type": "string",
"description": "Exact provider model slug sent to the provider endpoint by the current revision."
},
"revision_created_at": {
"$ref": "#/$defs/Timestamp"
},
"context_window_tokens": {
"type": "integer",
"description": "Context budget for input and output tokens. Triggers compaction when estimated input exceeds the remaining budget after output and safety reserves. The turn fails if compaction cannot make it fit."
},
"default_cache_retention": {
"$ref": "#/$defs/ModelCacheRetention"
},
"default_reasoning_effort": {
"type": "string",
"description": "Default reasoning effort to send for models/API formats that support effort-style reasoning controls."
},
"model_provider_config_id": {
"$ref": "#/$defs/ModelProviderConfigID"
},
"default_max_output_tokens": {
"type": [
"integer",
"null"
],
"description": "Default per-request output-token cap sent to the provider unless an agent config overrides it."
},
"supported_reasoning_efforts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Reasoning effort values this configured model accepts."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update configured model",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Creates the organization and its local default resources atomically.
An idempotency key determines the proposed organization ID; replaying it
returns the existing organization. Without a key, each request is a fresh
attempt. Optional default-provider provisioning begins after commit and
retries asynchronously without failing organization creation.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description69/100
Creates a machine pool in the organization. The body carries the pool name, the provider (agent37, arker, blaxel, boxd, createos, daytona, e2b, freestyle, modal, superserve, tenki, or unikraft), the provider auth secret, default machine settings, and the per-machine and total CPU, memory, and machine-count limits the provider supports; the required fields depend on the provider. See the createMachinePool operation in the Omnara API reference at https://docs.omnara.com/api-reference for the full request schema.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
22 of 38 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
Default environment for pool machines. A machine's environment, including resolved secret_env values, is applied to the provider machine at provisioning, so the provider_options startup_script and the daemon run with it, and is resolved again for each process at launch.
Default secret environment for pool machines, mapping env names to generic secret references. References are resolved to secret values wherever the machine environment is applied.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Deletes the machine pool and its pooled machines, revokes generated machine grants and project machine-pool grants, and stops processes that depended on those grants. Deleting a cluster-managed machine pool is rejected with 409 Conflict; there are no other dependency blockers.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
poolID
Machine pool ID (mpo_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Returns one machine pool's configuration and current usage: provider, default machine settings, CPU, memory, and machine-count limits, and idle deletion policy.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
poolID
Machine pool ID (mpo_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Tenant-managed pools support every request field. Cluster-managed pools only allow changes to default CPU and memory, environment and secret environment variables, provider-supported per-machine CPU and memory limits, and the idle deletion policy. Other cluster-managed changes are rejected with 409 Conflict.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
default_cwd
Default working directory for processes on machines created from the pool after this change.
Clear enough to supply this argument.
default_machine_cpu
Default CPU count for new machines in the pool.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
default_machine_env
Default environment for pool machines. A machine's environment, including resolved secret_env values, is applied to the provider machine at provisioning, so the provider_options startup_script and the daemon run with it, and is resolved again for each process at launch.
Clear enough to supply this argument.
default_machine_memory_mb
Default memory in MB for new machines in the pool.
Clear enough to supply this argument.
default_machine_provider_options
Provider-specific options applied to new machines in the pool.
Explain the meaning of this value, not just its name.
default_machine_secret_env
Default secret environment for pool machines, mapping env names to generic secret references. References are resolved to secret values wherever the machine environment is applied.
Clear enough to supply this argument.
delete_after_idle_minutes
Idle minutes before deleting a machine from this pool. Null clears the pool default; omitted leaves it unchanged.
Clear enough to supply this argument.
description
Optional description of the pool.
Explain the meaning of this value, not just its name.
max_machine_cpu
Largest CPU count a single machine in the pool can use.
Clear enough to supply this argument.
max_machine_memory_mb
Largest memory in MB a single machine in the pool can use.
Clear enough to supply this argument.
max_total_cpu
Maximum total CPU across the pool's live machines.
Clear enough to supply this argument.
max_total_machines
Maximum number of live machines in the pool.
Clear enough to supply this argument.
max_total_memory_mb
Maximum total memory in MB across the pool's live machines.
Clear enough to supply this argument.
metadata
User-supplied metadata stored on a machine, provided directly or copied from the machine pool that provisions it. A restriction of Metadata that leaves room for one reserved pair - Omnara sets observed_platform on the machine to the platform reported by its daemon, so the key is reserved and at most 15 user pairs are accepted.
Clear enough to supply this argument.
min_machine_cpu
Smallest CPU count a single machine in the pool can use.
Clear enough to supply this argument.
min_machine_memory_mb
Smallest memory in MB a single machine in the pool can use.
Clear enough to supply this argument.
name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
poolID
Machine pool ID (mpo_...).
Explain the meaning of this value, not just its name.
provider_auth_secret_id
Secret ID (sec_...).
Explain the meaning of this value, not just its name.
provider_config
Provider-specific settings for the pool.
Explain the meaning of this value, not just its name.
runtime_protection_enabled
Whether Omnara should delete a pool machine when its provider remains running after its daemon becomes inactive.
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Deletes the profile, all of its profile versions, and any cron triggers targeting the profile. Agents launched from the profile are retained and keep running: each agent holds an immutable snapshot of the configuration it was launched with, so its reference to the profile becomes historical provenance only. Integration settings may retain the public profile ID; future launches fail as unavailable until those settings reference an available profile.
The description explains the capability, when to use it, and what to expect.
Inputs74/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentProfileID
Agent profile ID (aprf_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
{
"name": "profiles_delete",
"title": "Delete agent profile",
"description": "Deletes the profile, all of its profile versions, and any cron triggers targeting the profile. Agents launched from the profile are retained and keep running: each agent holds an immutable snapshot of the configuration it was launched with, so its reference to the profile becomes historical provenance only. Integration settings may retain the public profile ID; future launches fail as unavailable until those settings reference an available profile.",
"inputSchema": {
"type": "object",
"required": [
"agentProfileID",
"orgID",
"projectID"
],
"properties": {
"orgID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$",
"description": "Organization ID (org_...)."
},
"projectID": {
"type": "string",
"pattern": "^proj_[a-z2-7]{26}$",
"description": "Project ID (proj_...)."
},
"agentProfileID": {
"type": "string",
"pattern": "^aprf_[a-z2-7]{26}$",
"description": "Agent profile ID (aprf_...)."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"additionalProperties": false
},
"annotations": {
"title": "Delete agent profile",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
Lists the project's agent profiles, newest first by default, filterable by name. Items include a summary of each profile's current config, not its full compiled definition.
The description explains the capability, when to use it, and what to expect.
Inputs87/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Clear enough to supply this argument.
include_stats
Include each profile's `stats`, so a list can show instance counts and usage without a request per profile.
Clear enough to supply this argument.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\` escapes a wildcard.
Clear enough to supply this argument.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Sort order for named resources that expose created and modified timestamps.
Explain what happens when this optional value is omitted.
stats_since
Start of the window `stats.usage` tallies, with `include_stats`. Omit to tally from the earliest recorded call.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Renames an agent profile without changing its config. Agents and cron triggers reference the profile by ID and keep working, but configs that name the profile under subagents must use the new name the next time they're compiled.
The description explains the capability, when to use it, and what to expect.
Inputs68/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentProfileID
Agent profile ID (aprf_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Points a profile at a different agent config. Existing agents keep their current config; agents launched from the profile afterward use the new one. Fails with 409 unless expected_current_config_id matches the profile's current config.
The description explains the capability, when to use it, and what to expect.
Inputs42/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agentProfileID
Agent profile ID (aprf_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
config
Agent config ID (acfg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
expected_current_config_id
Agent config ID (acfg_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
projectID
Project ID (proj_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Creates an encrypted secret holding one credential and returns its metadata; the value is never returned. owner sets whether the organization, a project, or the caller owns it.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › GenericSecretMaterial › kind
generic: a single value, such as an API key.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › GenericSecretMaterial › value
The secret value, up to 64 KiB.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Deletes the secret and permanently destroys all of its versions and project grants; the ciphertext cannot be recovered. Deletion is blocked while the secret is the credential of a model provider config, machine pool, or integration.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
secretID
Secret ID (sec_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Items are ordered by created_at descending, then id descending. Without an owner filter, returns the deduplicated union of organization secrets the caller may list, project secrets the caller may list, and the caller's own user secrets.
The description explains the capability, when to use it, and what to expect.
Inputs73/100
Explain the meaning of this value, not just its name.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Clear enough to supply this argument.
kind
Filter secrets by material kind.
Explain the meaning of this value, not just its name.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mcp_oauth_flow_id
Filter to secrets that have a version created by this MCP OAuth flow.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
metadata
Metadata key/value filters, encoded as metadata[key]=value.
Explain the meaning of this value, not just its name.
name
Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\` escapes a wildcard.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
owner_kind
Filter by the immutable owner kind.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
owner_project_id
Required with owner_kind=project and invalid with other owner kinds.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Sort order for named resources that expose created and modified timestamps.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Renames a secret or replaces its metadata, and returns the updated secret without its value. The value, kind, and owner can't be changed here. References use the secret ID, so renaming doesn't break them.
The description explains the capability, when to use it, and what to expect.
Inputs74/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
metadata
Arbitrary key-value metadata. Maximum 16 pairs, keys up to 64 characters, values must be strings of up to 512 characters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
secretID
Secret ID (sec_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Deletes the skill together with all of its revisions and project grants; uploaded archive content is destroyed. No other resources are deleted. Deletion is blocked while an active agent's configuration references the skill.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillID
Skill ID (skl_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description80/100
Items are ordered by created_at descending, then id descending. Without an owner filter, returns the deduplicated union of organization skills the caller may list, project skills the caller may list, and the caller's own user skills. Grants are managed separately and do not change ownership.
The description explains the capability, when to use it, and what to expect.
Inputs79/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
Opaque pagination cursor from a previous response's next_cursor. Omit for the first page.
Clear enough to supply this argument.
limit
Maximum number of items to return in one page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Case-insensitive glob over the list's logical name. `*` matches zero or more characters, `?` matches one character, and `\` escapes a wildcard.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
orgID
Organization ID (org_...).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
owner_kind
Filter by the immutable skill owner kind.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
owner_project_id
Required with owner_kind=project and invalid with other owner kinds.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Sort order for named resources that expose created and modified timestamps.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Lists the built-in tools agent configs can use, with each tool's description and permission settings, plus the permission modes for custom and MCP tools.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
{
"name": "whoami",
"title": "Who am I",
"description": "Get the authenticated user and their organizations",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"$defs": {
"UserID": {
"type": "string",
"pattern": "^usr_[a-z2-7]{26}$"
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"ResourceName": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "Human-readable name. Spaces and punctuation are allowed; leading or trailing whitespace and invisible or control characters are not."
},
"CurrentUserOrg": {
"type": "object",
"required": [
"id",
"name",
"role",
"created_at"
],
"properties": {
"id": {
"$ref": "#/$defs/OrganizationID"
},
"name": {
"$ref": "#/$defs/ResourceName"
},
"role": {
"type": "string",
"description": "The authenticated user's role in this organization."
},
"created_at": {
"allOf": [
{
"$ref": "#/$defs/Timestamp"
}
],
"description": "Organization creation timestamp, not the membership join timestamp."
}
},
"additionalProperties": false
},
"OrganizationID": {
"type": "string",
"pattern": "^org_[a-z2-7]{26}$"
},
"CurrentUserIdentity": {
"type": "object",
"required": [
"id",
"email",
"display_name"
],
"properties": {
"id": {
"$ref": "#/$defs/UserID"
},
"email": {
"type": "string",
"description": "The user's primary verified email, or an empty string if none."
},
"display_name": {
"type": "string"
}
},
"additionalProperties": false
}
},
"required": [
"user",
"orgs"
],
"properties": {
"orgs": {
"type": "array",
"items": {
"$ref": "#/$defs/CurrentUserOrg"
}
},
"user": {
"$ref": "#/$defs/CurrentUserIdentity"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Who am I",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Who am IGet the authenticated user and their organizations
02List organizationsUsers get every organization they belong to; org API keys get the organization that issued them.
03Get tool catalogLists the built-in tools agent configs can use, with each tool's description and permission settings, plus the permission modes for custom and MCP tools.
04List machinesLists the machines the caller can see, both BYO and pooled, newest first by default, with each one's connection state.
05List projectsLists the projects the caller can access in the organization, newest first, with the caller's permissions on each.
Want to run these tasks against your MCP server with us?
Omnara setup, tools, quality score, publishing readiness, and alternatives.
How do I add Omnara to Claude, ChatGPT, or Cursor?
Add Omnara to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://trained-make-pharmaceuticals-bandwidth.trycloudflare.com/mcp.
Is Omnara MCP ready for ChatGPT and Claude?
As of November 13, 2026, Omnara scores 100/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is Omnara's MCP tool documentation?
As of November 13, 2026, Omnara scores 86/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 75 of 75 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to Omnara?
As of November 13, 2026, alternatives to Omnara in developer-tools on the Manufact MCP leaderboard include Speko, Manufact, AgentMail, Context, and Speko.
How can Omnara improve its MCP documentation?
pools_create is the lowest-scoring reviewed tool at 76/100. 22 of 38 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.