You're viewing a demo portfolio

Join the waitlist
PRSM

agents_trigger_create

Active

Tool of io.github.saloprj/dialogbrain

declared in 1.17.0

Create a new trigger for an AI agent. Triggers determine when the agent activates. Trigger types: - incoming_message: Activates on new incoming messages - schedule: Activates on a schedule - webhook: Activates on webhook events - event: Activates on system events

Parameters schema

{
  "type": "object",
  "required": [
    "agent_id",
    "trigger_type"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "description": "Whether the trigger is enabled. OMIT to use the default (true)."
    },
    "agent_id": {
      "type": "integer",
      "description": "ID of the agent to create a trigger for"
    },
    "priority": {
      "type": "integer",
      "description": "Trigger priority — lower numbers run first (default: 100)"
    },
    "send_mode": {
      "enum": [
        "auto",
        "draft"
      ],
      "type": "string",
      "description": "Send mode override for this trigger. OMIT to inherit from the agent."
    },
    "conditions": {
      "type": "object",
      "description": "Trigger conditions (JSON). Supported fields for incoming_message:\n- keywords: [\"pricing\",\"demo\"] — message must contain keyword(s) (free, no LLM cost)\n- keyword_match: \"any\" (default, OR) or \"all\" (AND)\n- channel_types: [\"telegram\",\"whatsapp\",\"livechat_voice\",\"twilio_voice\",\"telegram_voice\",\"voice\",...] — filter by channel. For voice, use EITHER the three per-channel keys (scoped) OR \"voice\" alone (wildcard matching all three) — mixing them is redundant. Per-channel keys: \"livechat_voice\" (web widget), \"twilio_voice\" (PSTN inbound), \"telegram_voice\" (Telegram p2p calls)\n- context_types: [\"dm\",\"group\",\"channel\",\"livechat\"] — filter by chat type\n- group_mode: \"mentions_only\" or \"questions\" — for group chats\n- channel_account_ids: [\"123\"] — restrict to specific accounts\n- folder_ids: [5,10] — restrict to threads in folders\n- ai_tag_ids: [1,2] — restrict to threads with AI tags\n- ai_filter_ids: [1,2] — semantic intent filters (message matched via embedding similarity, works in noisy groups)\n- ai_filter_mode: \"any\" (default, OR) or \"all\" (AND) — how multiple AI filters combine\n- ai_filters: [{id: 1}, {name: \"...\", description: \"...\"}] — shorthand: reference existing by id or create inline (calls Voyage embedding API). If a filter with the same name already exists, it is reused by id. Prefer referencing existing filters by id when available. Use ai_filters.create + ai_filters.test for fine-tuning before assigning.\n- contact_states: [\"active\"] — filter by contact state\n- cooldown_seconds: 30 — min gap between runs per thread\n- max_runs_per_thread_per_hour: 5 — rate limit\n\nSupported fields for job_completed (proactive callback when a delegated job finishes):\n- source_agent_id: <int> — fire only when this agent's job completed\n- source_agent_slug: <str> — alternate to source_agent_id\n- job_type: \"agentic_session\" — match a specific job type (default: any)\n- outcome: [\"completed\"] | [\"escalated\"] | [\"completed\",\"escalated\"] — default [\"completed\"]\n- min_duration_seconds: <int> — skip very-short jobs (noise filter)\n- thread_filter: {thread_ids: [<int>...]} — restrict to specific threads\n\nSupported fields for calendar_event (fires N minutes before a Google Calendar event starts):\n- window_minutes_before: <int 1-1440> — REQUIRED, fire when an event starts within this window\n- channel_account_ids: [<int>...] — restrict to specific calendar accounts (default: all)\n- keywords: [\"standup\"] — word-boundary match on event title\n- prepare_meet_join: true — pre-invite pool bots to the event (enables unattended Meet join)\n\nGeneric run-mode fields (incoming_message AND calendar_event):\n- run_mode: \"text\" (default, normal agent run) or \"voice\" (deterministically join the meeting/call resolved from the event or message — requires send_mode=auto)\n- voice: {speak_first: <bool — greet immediately vs stay silent until addressed>, vision_mode: \"off\"|\"on_demand\"|\"continuous_0_3fps\"}"
    },
    "thread_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Restrict this trigger to specific threads (chats) by their numeric thread IDs. When set, the trigger only fires for messages in these threads. Only for incoming_message and job_completed triggers. Maps to conditions.thread_filter.thread_ids."
    },
    "trigger_type": {
      "enum": [
        "incoming_message",
        "incoming_call",
        "schedule",
        "webhook",
        "event",
        "blockchain_event",
        "job_completed",
        "calendar_event"
      ],
      "type": "string",
      "description": "Type of trigger: 'incoming_message', 'incoming_call', 'schedule', 'webhook', 'event', 'blockchain_event', 'job_completed', or 'calendar_event'"
    },
    "excluded_thread_ids": {
      "type": "array",
      "items": {
        "type": "integer"
      },
      "description": "Exclude specific threads (chats) by their numeric thread IDs — the opposite of thread_ids. When set, the trigger NEVER fires for messages in these threads, even if thread_ids would otherwise allow them (explicit deny wins). Only for incoming_message and job_completed triggers. Maps to conditions.thread_filter.excluded_thread_ids."
    }
  }
}

What this tool wraps· 0 endpoints

min confidence0.700.50

No endpoints wrapped at confidence ≥ 0.70.

Parent server

io.github.saloprj/dialogbrain

https://github.com/saloprj/dialogbrain-mcp

1/7 registries
View full server →
agents_trigger_create — io.github.saloprj/dialogbrain — PRSM MCP