# Tool Reference

> Inputs and permissions for all 36 Oasis tools.

Tool arguments are validated against these schemas. Resource IDs and query parameters are top-level arguments; request payloads go in `body`. The authorized workspace is supplied by the connection.

This reference is generated from the backend's public allowlist and API schemas. Call `tools/list` on your server for the deployed version. Tools that require a permission you did not grant are omitted from that response.

## list_tool_types
Discover available tool types before attaching tools to an agent.

**In Oasis:** Agent → Tools. Browse the integrations available to an agent. MCP returns the underlying tool types.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## get_workspace
Read the workspace selected during sign-in.

**In Oasis:** Workspace settings. View the workspace selected when you connected your assistant.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## list_agents
List agents in this workspace.

**In Oasis:** Agents. Browse the agents already in your workspace.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "include_triggers": {
      "type": "boolean",
      "default": false,
      "title": "Include Triggers"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## create_agent
Create an Oasis agent. Set name, instructions, appearance and apps in body.

**In Oasis:** Agents → Create agent. Give your agent a name, role, instructions, and tools.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "body": {
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200,
          "title": "Name",
          "description": "Display name for the agent"
        },
        "connection_grants": {
          "anyOf": [
            {
              "items": {
                "properties": {
                  "connection_id": {
                    "type": "string",
                    "title": "Connection Id"
                  },
                  "scope": {
                    "type": "string",
                    "title": "Scope",
                    "description": "'read' | 'write'",
                    "default": "write"
                  },
                  "auto_approve": {
                    "type": "boolean",
                    "title": "Auto Approve",
                    "default": false
                  }
                },
                "type": "object",
                "required": [
                  "connection_id"
                ],
                "title": "AgentConnectionGrantInput",
                "description": "A Composio connection (a user-owned connected account) to link to the\nagent at creation. The toolkit is derived server-side from the connection;\nonly the caller's own connections may be granted."
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Connection Grants",
          "description": "Composio connected accounts to attach to the new agent. Grants are created server-side after the agent row exists, so no pre-generated agent_id or orphan grants are needed."
        },
        "system_prompt": {
          "default": "",
          "title": "System Prompt",
          "type": "string"
        },
        "response_style": {
          "default": "default",
          "enum": [
            "default",
            "warm",
            "direct",
            "professional",
            "super_casual"
          ],
          "title": "Response Style",
          "type": "string"
        },
        "agent_role": {
          "default": "",
          "title": "Agent Role",
          "type": "string"
        },
        "color": {
          "items": {
            "type": "string"
          },
          "title": "Color",
          "type": "array"
        },
        "picture_url": {
          "default": "",
          "title": "Picture Url",
          "type": "string"
        },
        "composio_toolkits": {
          "items": {
            "type": "string"
          },
          "title": "Composio Toolkits",
          "type": "array"
        },
        "is_draft": {
          "default": false,
          "title": "Is Draft",
          "type": "boolean"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "title": "AgentCreate",
      "description": "Create an agent. Used both at org-level and when creating+importing into a team.",
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "additionalProperties": false
}
```

## get_agent
Read an agent before editing its configuration or prompt.

**In Oasis:** Agents → Scout. Open an agent’s profile to inspect its instructions and configuration.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    }
  },
  "required": [
    "agent_id"
  ],
  "additionalProperties": false
}
```

## update_agent
Edit an agent's prompt, role, configuration, or connected tools. Send only changed fields in body.

**In Oasis:** Agents → Scout → Edit. Edit the agent’s instructions or configuration.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    },
    "team_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Team Id"
    },
    "body": {
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ],
          "title": "Name"
        },
        "agent_role": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 5000
            },
            {
              "type": "null"
            }
          ],
          "title": "Agent Role"
        },
        "description": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 5000
            },
            {
              "type": "null"
            }
          ],
          "title": "Description",
          "description": "Agent's own human-facing blurb (the 'desc' field); distinct from agent_role"
        },
        "system_prompt": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 50000
            },
            {
              "type": "null"
            }
          ],
          "title": "System Prompt"
        },
        "response_style": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "default",
                "warm",
                "direct",
                "professional",
                "super_casual"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Response Style"
        },
        "x_coord": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "X Coord"
        },
        "y_coord": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Y Coord"
        },
        "picture_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Picture Url"
        },
        "color": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Color"
        },
        "composio_toolkits": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Toolkits"
        },
        "composio_require_approval": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Require Approval"
        },
        "composio_toolkit_approval_overrides": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "boolean"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Toolkit Approval Overrides"
        },
        "composio_toolkit_account_source": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Toolkit Account Source",
          "description": "Per-toolkit account source. {toolkit_slug: 'shared'|'self'}. Missing key inherits 'shared'."
        },
        "enable_memory_recall": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Enable Memory Recall"
        },
        "trigger_strip_x": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Trigger Strip X"
        },
        "trigger_strip_y": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Trigger Strip Y"
        },
        "budget_amount_usd": {
          "anyOf": [
            {
              "type": "number",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "title": "Budget Amount Usd",
          "description": "USD cap for the budget period; null = no cap"
        },
        "budget_period": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Budget Period",
          "description": "'daily' | 'weekly' | 'monthly'; null = no cap"
        }
      },
      "type": "object",
      "title": "AgentUpdate",
      "additionalProperties": false
    }
  },
  "required": [
    "agent_id",
    "body"
  ],
  "additionalProperties": false
}
```

## delete_agent
Delete an agent. Confirm the user's intent first.

**In Oasis:** Agents → Scout → Delete. Remove the agent after confirming which one to delete.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    }
  },
  "required": [
    "agent_id"
  ],
  "additionalProperties": false
}
```

## get_agent_state
Read agent runtime status.

**In Oasis:** Room → Scout. Check the agent’s activity. MCP returns its runtime status.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    }
  },
  "required": [
    "agent_id"
  ],
  "additionalProperties": false
}
```

## list_agent_tools
List an agent's configured tools.

**In Oasis:** Agents → Scout → Tools. Inspect the tools configured for this agent.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    },
    "limit": {
      "type": "integer",
      "maximum": 500,
      "minimum": 1,
      "description": "Max tools to return (default: no limit)",
      "title": "Limit"
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Number of tools to skip",
      "default": 0,
      "title": "Offset"
    },
    "search": {
      "type": "string",
      "description": "Filter by name or tool_type (case-insensitive)",
      "title": "Search"
    },
    "paginated": {
      "type": "boolean",
      "description": "If true, return {items, total, limit, offset}",
      "default": false,
      "title": "Paginated"
    }
  },
  "required": [
    "agent_id"
  ],
  "additionalProperties": false
}
```

## create_agent_tool
Configure a tool for an agent. Provider account consent may still require the Oasis UI.

**In Oasis:** Agents → Scout → Tools. Add a tool to the agent. Connecting a provider account may still require sign-in in Oasis.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    },
    "body": {
      "properties": {
        "tool_type": {
          "type": "string",
          "title": "Tool Type",
          "description": "Type of tool (e.g., 'cursor_cloud_agent', 'devin_cloud_agent')"
        },
        "name": {
          "type": "string",
          "title": "Name",
          "description": "Display name for the tool"
        },
        "usage_prompt": {
          "type": "string",
          "title": "Usage Prompt",
          "description": "Instructions for the LLM on how to use this tool"
        },
        "input_schema": {
          "additionalProperties": true,
          "type": "object",
          "title": "Input Schema",
          "description": "JSON schema describing expected input"
        },
        "enabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Enabled",
          "default": true
        }
      },
      "type": "object",
      "required": [
        "tool_type",
        "name",
        "usage_prompt"
      ],
      "title": "ToolCreate",
      "additionalProperties": false
    }
  },
  "required": [
    "agent_id",
    "body"
  ],
  "additionalProperties": false
}
```

## update_agent_tool
Edit an agent tool.

**In Oasis:** Agents → Scout → Tools. Change a configured tool. The available settings depend on the tool type.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    },
    "tool_id": {
      "type": "string",
      "title": "Tool Id"
    },
    "body": {
      "properties": {
        "tool_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Tool Type"
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Name"
        },
        "usage_prompt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Usage Prompt"
        },
        "input_schema": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Input Schema"
        },
        "enabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Enabled"
        }
      },
      "type": "object",
      "title": "ToolUpdate",
      "additionalProperties": false
    }
  },
  "required": [
    "agent_id",
    "tool_id",
    "body"
  ],
  "additionalProperties": false
}
```

## delete_agent_tool
Remove an agent tool.

**In Oasis:** Agents → Scout → Tools. Remove this tool from Scout’s configuration.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    },
    "tool_id": {
      "type": "string",
      "title": "Tool Id"
    }
  },
  "required": [
    "agent_id",
    "tool_id"
  ],
  "additionalProperties": false
}
```

## list_workspace_skills
List custom workspace skills, including their slugs and SKILL.md content.

**In Oasis:** Workspace settings → Skills. Browse reusable instructions saved in your workspace library.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## save_workspace_skill
Add or replace a workspace skill from body.skill_md text. Include name for plain instructions, or use SKILL.md frontmatter. Reusing a slug replaces its files and updates attached agents on their next turn. Read existing skills before replacing; use Oasis for ZIP bundles.

**In Oasis:** Workspace settings → Skills → Import skills. Import instructions into your workspace library. MCP accepts the SKILL.md text directly; use the app to import supporting files.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "body": {
      "properties": {
        "skill_md": {
          "type": "string",
          "minLength": 1,
          "description": "Full SKILL.md text, or plain instructions with a name."
        },
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Name"
        },
        "slug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Slug"
        }
      },
      "type": "object",
      "title": "Body_upload_workspace_skill_api_v1_organizations__org_id__workspace_skills_post",
      "required": [
        "skill_md"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "additionalProperties": false
}
```

## delete_workspace_skill
Delete a workspace skill and detach it from affected agents. Requires edit access to each affected agent. Confirm the user's intent first.

**In Oasis:** Workspace settings → Skills → Remove. Remove a skill from the library and detach it from the agents using it.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "title": "Slug"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}
```

## assign_workspace_skills
Give workspace skills to agents without removing existing skills. Supply body.assignments with skill_slug and agent_ids. Repeating an assignment is safe. Check each returned status for failures.

**In Oasis:** Workspace settings → Skills → Greeting → Agents. Select the agents that should use a workspace skill. MCP assignments add the skill and keep existing skills.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "body": {
      "properties": {
        "assignments": {
          "items": {
            "properties": {
              "skill_slug": {
                "type": "string",
                "title": "Skill Slug"
              },
              "agent_ids": {
                "items": {
                  "type": "string"
                },
                "type": "array",
                "title": "Agent Ids",
                "minItems": 1
              }
            },
            "type": "object",
            "required": [
              "skill_slug",
              "agent_ids"
            ],
            "title": "SkillAssignmentInput",
            "additionalProperties": false
          },
          "type": "array",
          "maxItems": 1000,
          "title": "Assignments",
          "minItems": 1
        }
      },
      "type": "object",
      "required": [
        "assignments"
      ],
      "title": "SkillAssignmentsRequest",
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "additionalProperties": false
}
```

## list_agent_skills
Read the skills assigned to an agent, including each skill's source and slug.

**In Oasis:** Agent → Skills. See which skills are assigned to an agent.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    }
  },
  "required": [
    "agent_id"
  ],
  "additionalProperties": false
}
```

## replace_agent_skills
Replace the complete skill list for an agent. Read list_agent_skills first and retain every skill you want to keep. Omitted skills are detached; an explicit empty skills array removes all. Prefer assign_workspace_skills when only adding workspace skills.

**In Oasis:** Agent → Skills. Change the skills assigned to an agent. MCP replaces the complete list, so read it first and include every skill you want to keep.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "title": "Agent Id"
    },
    "body": {
      "properties": {
        "skills": {
          "items": {
            "properties": {
              "slug": {
                "type": "string",
                "title": "Slug"
              },
              "source": {
                "type": "string",
                "enum": [
                  "anthropic",
                  "skillsmp",
                  "mercury",
                  "internal",
                  "workspace"
                ],
                "title": "Source"
              },
              "version": {
                "type": "string",
                "title": "Version",
                "default": ""
              },
              "pinned": {
                "type": "boolean",
                "title": "Pinned",
                "default": false
              },
              "github_url": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Github Url"
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Name"
              },
              "description": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "Description"
              }
            },
            "type": "object",
            "required": [
              "slug",
              "source"
            ],
            "title": "SkillInstallInput",
            "additionalProperties": false
          },
          "type": "array",
          "title": "Skills"
        }
      },
      "type": "object",
      "title": "ReplaceSkillsRequest",
      "required": [
        "skills"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "agent_id",
    "body"
  ],
  "additionalProperties": false
}
```

## list_rooms
List rooms visible to you.

**In Oasis:** Rooms. Browse the rooms you can access.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "include_archived": {
      "type": "boolean",
      "default": false,
      "title": "Include Archived"
    },
    "include_cli": {
      "type": "boolean",
      "default": false,
      "title": "Include Cli"
    },
    "workspace_view": {
      "type": "boolean",
      "default": false,
      "title": "Workspace View"
    },
    "limit": {
      "type": "integer",
      "default": 100,
      "title": "Limit"
    },
    "before": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Before"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## create_room
Create a room with agent_participants and human_participants UUIDs.

**In Oasis:** Rooms → Create room. Name the room, choose its visibility, and add people and agents.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "body": {
      "properties": {
        "name": {
          "type": "string",
          "title": "Name"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Description"
        },
        "agent_participants": {
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "type": "array",
          "title": "Agent Participants"
        },
        "human_participants": {
          "items": {
            "type": "string",
            "format": "uuid"
          },
          "type": "array",
          "title": "Human Participants"
        },
        "room_type": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "room",
                "agent_draft",
                "cli"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Room Type"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "public",
                "private"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Visibility"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "title": "RoomCreate",
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "additionalProperties": false
}
```

## get_room
Read a room and its participants.

**In Oasis:** Research → Room details. View the room’s name, visibility, and participants.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "string",
      "title": "Room Id"
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}
```

## update_room
Edit a room's name, description, visibility, or archive state.

**In Oasis:** Research → Room settings. Change the room’s name, description, or visibility.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "string",
      "title": "Room Id"
    },
    "body": {
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Name"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Description"
        },
        "picture_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Picture Url"
        },
        "archived": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Archived"
        },
        "pinned": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Pinned"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "public",
                "private"
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "Visibility"
        }
      },
      "type": "object",
      "title": "RoomUpdate",
      "additionalProperties": false
    }
  },
  "required": [
    "room_id",
    "body"
  ],
  "additionalProperties": false
}
```

## archive_room
Archive a room.

**In Oasis:** Research → Archive room. Move the room to the archive.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "string",
      "title": "Room Id"
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}
```

## restore_room
Restore an archived room.

**In Oasis:** Archived rooms → Research. Bring an archived room back to your room list.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "string",
      "title": "Room Id"
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}
```

## add_room_participant
Add one agent_id or human_id to a room.

**In Oasis:** Research → Members. Add an existing agent or person to this room.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "string",
      "title": "Room Id"
    },
    "body": {
      "properties": {
        "agent_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Agent Id"
        },
        "human_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Human Id"
        }
      },
      "type": "object",
      "title": "ParticipantAdd",
      "additionalProperties": false
    }
  },
  "required": [
    "room_id",
    "body"
  ],
  "additionalProperties": false
}
```

## list_messages
Read a page of room messages; use cursor parameters for history.

**In Oasis:** Research → Conversation. Read the conversation in a room. MCP lets you page through its history.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "string",
      "title": "Room Id"
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "title": "Limit"
    },
    "before": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Before"
    }
  },
  "required": [
    "room_id"
  ],
  "additionalProperties": false
}
```

## send_message
Post a message as the signed-in human; may wake agents and consume credits.

**In Oasis:** Research → Message composer. Send a message as yourself. This may wake the room’s agents.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "room_id": {
      "type": "string",
      "title": "Room Id"
    },
    "body": {
      "properties": {
        "content": {
          "type": "string",
          "title": "Content"
        },
        "attachments": {
          "items": {
            "additionalProperties": true,
            "type": "object"
          },
          "type": "array",
          "title": "Attachments"
        },
        "extras": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Extras"
        },
        "mentions": {
          "anyOf": [
            {
              "items": {
                "type": "string",
                "format": "uuid"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Mentions",
          "description": "Optional pre-resolved IDs the sender @-mentioned. Can contain agent IDs (which fire a wake) and human user IDs (no wake today — a future inbox view will surface them). Server classifies each ID at write time. When omitted, the server parses @-mentions from `content` against the room roster."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "description": "Optional client-supplied dedupe token. A retry with the same (room_id, key) returns the existing message."
        },
        "thread_root_message_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Thread Root Message Id",
          "description": "Top-level message this reply belongs to."
        },
        "reply_to_message_id": {
          "anyOf": [
            {
              "type": "string",
              "format": "uuid"
            },
            {
              "type": "null"
            }
          ],
          "title": "Reply To Message Id",
          "description": "Main-timeline message quoted by this inline reply."
        },
        "also_show_in_main": {
          "type": "boolean",
          "title": "Also Show In Main",
          "description": "Also render this thread reply in the room/DM main timeline.",
          "default": false
        }
      },
      "type": "object",
      "required": [
        "content"
      ],
      "title": "RoomMessageCreate",
      "additionalProperties": false
    }
  },
  "required": [
    "room_id",
    "body"
  ],
  "additionalProperties": false
}
```

## list_workflows
List your workflows and public workspace workflows. Set include_disabled to include paused workflows.

**In Oasis:** Workflows. Browse workflows and see when they run.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "include_disabled": {
      "type": "boolean",
      "default": false,
      "title": "Include Disabled"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## create_workflow
Create a workflow with instructions, agents, a room, and when it runs: manual, recurring, one-time, or event-triggered. Timing belongs to this workflow. Use an explicit IANA timezone. Saving may draft a plan and use credits; automatic triggers are active when saved.

**In Oasis:** Workflows → Create. Set up the instructions, agents, destination room, and trigger together.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "body": {
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ],
          "title": "Name"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Description"
        },
        "kind": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Kind",
          "description": "'time' (cron), 'event' (trigger-driven), or 'manual'"
        },
        "dispatch_intent": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Dispatch Intent",
          "description": "Natural-language 'when should this fire' read by the dispatcher. Empty = always fire when reached."
        },
        "trigger_type": {
          "type": "string",
          "title": "Trigger Type",
          "description": "'cron', 'composio', or 'manual'",
          "default": "cron",
          "enum": [
            "manual",
            "cron",
            "composio"
          ]
        },
        "composio_trigger_slug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Trigger Slug",
          "description": "Composio trigger slug, e.g. 'GMAIL_NEW_EMAIL'"
        },
        "composio_trigger_config": {
          "additionalProperties": true,
          "type": "object",
          "title": "Composio Trigger Config",
          "description": "Config for the Composio trigger"
        },
        "composio_connected_account_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Connected Account Id",
          "description": "Which connected account the trigger watches (the creator's chosen account for the toolkit); auto-resolved if omitted"
        },
        "cron_expr": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cron Expr",
          "description": "Standard 5-field cron, e.g. '0 8 * * *'"
        },
        "timezone": {
          "type": "string",
          "title": "Timezone",
          "description": "IANA timezone name, e.g. 'America/New_York'",
          "default": "UTC"
        },
        "execute_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Execute At",
          "description": "ISO 8601 datetime for one-time runs"
        },
        "seed_prompt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Seed Prompt",
          "description": "Message that kicks off the room"
        },
        "agent_ids": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Agent Ids",
          "description": "Agent UUIDs to include in the room"
        },
        "human_participant_ids": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Human Participant Ids",
          "description": "Human participant UUIDs"
        },
        "room_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Room Id",
          "description": "Existing room where each run should post"
        },
        "visibility": {
          "type": "string",
          "title": "Visibility",
          "description": "'private' (creator-only) or 'public' (visible to whole org)",
          "default": "private"
        },
        "condition_rules": {
          "items": {
            "properties": {
              "rule_type": {
                "type": "string",
                "title": "Rule Type",
                "description": "'deterministic' (future: 'llm')",
                "default": "deterministic"
              },
              "field": {
                "type": "string",
                "title": "Field",
                "description": "Dotted path into the event payload, e.g. 'from' or 'repository.full_name'"
              },
              "operator": {
                "type": "string",
                "title": "Operator",
                "description": "One of: equals, contains, starts_with, ends_with, regex, exists, gt, lt"
              },
              "value": {
                "title": "Value",
                "description": "Value to compare against; ignored for 'exists'"
              }
            },
            "type": "object",
            "required": [
              "field",
              "operator"
            ],
            "title": "ConditionRule",
            "description": "One row in a schedule's condition_rules array.\n\nEvaluated pre-LLM, server-side, against the incoming event payload.\nDay-one only supports rule_type='deterministic'; future fuzzy rules will\nland as rule_type='llm' without changing the eval loop's structural shape."
          },
          "type": "array",
          "title": "Condition Rules",
          "description": "AND-ed filter rules evaluated pre-LLM"
        },
        "dedup_window_seconds": {
          "type": "integer",
          "minimum": 0,
          "title": "Dedup Window Seconds",
          "description": "Layer-2 (semantic) dedup window; 0 disables",
          "default": 300
        },
        "dedup_fields": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Dedup Fields",
          "description": "Override the per-trigger natural-key registry"
        },
        "fire_cap_per_window": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "title": "Fire Cap Per Window",
          "description": "Per-schedule rate limit; null = uncapped"
        },
        "fire_cap_window_seconds": {
          "type": "integer",
          "minimum": 1,
          "title": "Fire Cap Window Seconds",
          "description": "Window for fire_cap_per_window",
          "default": 3600
        },
        "task_blueprint": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Task Blueprint",
          "description": "Task template {title, description, steps[], exit_criteria, assignee_agent_names[]}; omit to auto-generate"
        },
        "generate_task_blueprint": {
          "type": "boolean",
          "title": "Generate Task Blueprint",
          "description": "Draft a task blueprint from seed_prompt at save time when none is supplied",
          "default": true
        },
        "canvas_labels": {
          "additionalProperties": true,
          "type": "object",
          "title": "Canvas Labels"
        },
        "task_contact_mode": {
          "type": "string",
          "pattern": "^(normal|exceptions_only|silent)$",
          "title": "Task Contact Mode",
          "default": "normal"
        }
      },
      "type": "object",
      "title": "WorkflowInput",
      "required": [
        "trigger_type"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "additionalProperties": false
}
```

## get_workflow
Read a workflow, including its instructions, agents, timing, and enabled state.

**In Oasis:** Workflows → Morning briefing. Open the workflow to see what it does and when it runs.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "workflow_id": {
      "type": "string",
      "title": "Workflow Id"
    }
  },
  "required": [
    "workflow_id"
  ],
  "additionalProperties": false
}
```

## update_workflow
Edit a workflow's instructions, agents, plan, or timing. Set body.enabled false to pause future runs or true to resume.

**In Oasis:** Workflows → Morning briefing → Edit. Update the instructions or trigger, or pause future runs.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "workflow_id": {
      "type": "string",
      "title": "Workflow Id"
    },
    "body": {
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200,
              "minLength": 1
            },
            {
              "type": "null"
            }
          ],
          "title": "Name"
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Description"
        },
        "kind": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Kind"
        },
        "dispatch_intent": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Dispatch Intent"
        },
        "trigger_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Trigger Type"
        },
        "composio_trigger_slug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Trigger Slug"
        },
        "composio_trigger_config": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Trigger Config"
        },
        "composio_connected_account_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Composio Connected Account Id"
        },
        "cron_expr": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cron Expr"
        },
        "timezone": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Timezone"
        },
        "execute_at": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Execute At"
        },
        "enabled": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Enabled"
        },
        "seed_prompt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Seed Prompt"
        },
        "agent_ids": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Agent Ids"
        },
        "human_participant_ids": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Human Participant Ids"
        },
        "room_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Room Id"
        },
        "visibility": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Visibility"
        },
        "condition_rules": {
          "anyOf": [
            {
              "items": {
                "properties": {
                  "rule_type": {
                    "type": "string",
                    "title": "Rule Type",
                    "description": "'deterministic' (future: 'llm')",
                    "default": "deterministic"
                  },
                  "field": {
                    "type": "string",
                    "title": "Field",
                    "description": "Dotted path into the event payload, e.g. 'from' or 'repository.full_name'"
                  },
                  "operator": {
                    "type": "string",
                    "title": "Operator",
                    "description": "One of: equals, contains, starts_with, ends_with, regex, exists, gt, lt"
                  },
                  "value": {
                    "title": "Value",
                    "description": "Value to compare against; ignored for 'exists'"
                  }
                },
                "type": "object",
                "required": [
                  "field",
                  "operator"
                ],
                "title": "ConditionRule",
                "description": "One row in a schedule's condition_rules array.\n\nEvaluated pre-LLM, server-side, against the incoming event payload.\nDay-one only supports rule_type='deterministic'; future fuzzy rules will\nland as rule_type='llm' without changing the eval loop's structural shape."
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Condition Rules"
        },
        "dedup_window_seconds": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ],
          "title": "Dedup Window Seconds"
        },
        "dedup_fields": {
          "anyOf": [
            {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "title": "Dedup Fields"
        },
        "fire_cap_per_window": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "title": "Fire Cap Per Window"
        },
        "fire_cap_window_seconds": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1
            },
            {
              "type": "null"
            }
          ],
          "title": "Fire Cap Window Seconds"
        },
        "task_blueprint": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Task Blueprint"
        },
        "canvas_labels": {
          "anyOf": [
            {
              "additionalProperties": true,
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "title": "Canvas Labels"
        },
        "task_contact_mode": {
          "anyOf": [
            {
              "type": "string",
              "pattern": "^(normal|exceptions_only|silent)$"
            },
            {
              "type": "null"
            }
          ],
          "title": "Task Contact Mode"
        }
      },
      "type": "object",
      "title": "WorkflowInput",
      "additionalProperties": false
    }
  },
  "required": [
    "workflow_id",
    "body"
  ],
  "additionalProperties": false
}
```

## delete_workflow
Delete a workflow and its trigger. Confirm the user's intent. Existing runs and results may remain.

**In Oasis:** Workflows → Morning briefing → Delete. Delete the workflow and its trigger. Existing runs may remain.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "workflow_id": {
      "type": "string",
      "title": "Workflow Id"
    }
  },
  "required": [
    "workflow_id"
  ],
  "additionalProperties": false
}
```

## start_workflow
Run a manual or time-based workflow now, including a paused workflow. May use credits. Event-triggered workflows run through their configured event.

**In Oasis:** Workflows → Morning briefing → Run. Run a manual or time-based workflow now. Event-triggered workflows run through their event.

**Permission:** `oasis:write` · **Write**

```json
{
  "type": "object",
  "properties": {
    "workflow_id": {
      "type": "string",
      "title": "Workflow Id"
    }
  },
  "required": [
    "workflow_id"
  ],
  "additionalProperties": false
}
```

## list_members
List human workspace members and roles.

**In Oasis:** Workspace settings → Members. View the people in your workspace and their roles.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}
```

## list_invites
List workspace invitations subject to your role.

**In Oasis:** Workspace settings → Members → Pending invites. View workspace invitations and their status.

**Permission:** `oasis:read` · **Read**

```json
{
  "type": "object",
  "properties": {
    "invite_status": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Invite Status"
    }
  },
  "required": [],
  "additionalProperties": false
}
```

## invite_human
Email a workspace invitation. Requires owner/admin role and oasis:invite. Confirm recipient and role.

**In Oasis:** Workspace settings → Members → Invite. Enter an email and choose a role, then send a workspace invitation.

**Permission:** `oasis:invite` · **Write**

```json
{
  "type": "object",
  "properties": {
    "body": {
      "properties": {
        "email": {
          "type": "string",
          "title": "Email"
        },
        "role": {
          "type": "string",
          "title": "Role",
          "default": "member"
        }
      },
      "type": "object",
      "required": [
        "email"
      ],
      "title": "InviteCreateRequest",
      "additionalProperties": false
    }
  },
  "required": [
    "body"
  ],
  "additionalProperties": false
}
```
