Actions MCP Tools
Two tools expose the actions domain to MCP clients (Claude Code, Claude
Desktop): list_actions and create_action. Implementation:
services/mcp/src/lkwiz_mcp/tools/actions.py.
This is a partial surface, not a full MCP mirror of the REST API. There is no MCP tool for updating an action, changing status, accepting/declining, deleting, or managing attachments — those operations currently require the web app or the REST API directly. See Deviations from REST for other gaps worth knowing about before you build automation on top of these tools.
list_actions
list_actions(workspace_id: str, status: str = "") -> strLists actions in a workspace, optionally filtered by exact status match.
Requires the caller to be a member of workspace_id.
Returns (JSON-encoded string):
{
"actions": [
{
"action_id": "a1b2c3d4-...",
"workspace_id": "ws_123",
"title": "Create hero graphic",
"status": "open",
"assignee_id": "user_456",
"post_id": "post_789",
"created_by": "user_111",
"created_at": "2026-07-17T12:00:00+00:00",
"updated_at": "2026-07-17T12:00:00+00:00"
}
]
}The field is post_id here, not linked_post_id — see
Deviations from REST. If the action was created
through the web app/REST API, post_id will read back as "" even when
the action is linked to a post, because this tool never reads
linked_post_id.
create_action
create_action(workspace_id: str, title: str, assignee_id: str, post_id: str = "") -> strCreates an action with status: "open". Requires the caller to be a member
of workspace_id — despite the tool catalog table describing this as
"WS editor+", the implementation does not check role, only membership.
Returns:
{
"action_id": "a1b2c3d4-...",
"workspace_id": "ws_123",
"title": "Create hero graphic",
"status": "open",
"assignee_id": "user_456",
"created_at": "2026-07-17T12:00:00+00:00"
}assignee_id is not validated — unlike POST /api/actions, this tool
will happily create an action assigned to a user who isn't actually a
member of the workspace. It also writes a much thinner record than the REST
endpoint: no description, priority, due_date, assignee_name, or
attachments fields, and it does not send a Slack notification or emit the
ActionCreated metric.
Deviations from REST
The MCP tools talk to DynamoDB directly with the raw boto3 client (not the
common.db helper the REST actions_service uses) and are implemented
independently of it. If you're building automation that mixes both surfaces,
be aware of:
| REST API | MCP tools | |
|---|---|---|
| Post link attribute | linked_post_id | post_id |
| Assignee validated as workspace member? | Yes (400 if not) | No |
| Record completeness on create | Full action record | Minimal subset (see above) |
| Slack notification / metrics on create | Yes | No |
| Update / status / respond / delete / attachments | Full REST surface — see Actions API | Not available via MCP |
In practice: use the MCP tools for quick "what's assigned to me" checks and lightweight action creation from an AI client, but drive anything involving status changes, attachments, or reassignment through the REST API.
See also
- Actions feature guide — product behavior, lifecycle, notifications.
- Actions API reference — the full REST surface, including the operations not available over MCP.