ppm_issue_start
Transition an issue to 'in_progress' to begin active work on it.
Instructions
Move an issue to 'in_progress'.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/qod_ppm_mcp/server.py:299-303 (handler)The handler function for the ppm_issue_start tool. It calls the 'action_issue_start' button method on the 'ppm.risk' model via the Odoo client, then reads back and returns the issue state.
@mcp.tool() def ppm_issue_start(issue_id: int) -> dict[str, Any]: """Move an issue to 'in_progress'.""" client().call_action("ppm.risk", "action_issue_start", [issue_id]) return _read_state("ppm.risk", issue_id, _ISSUE_FIELDS) - src/qod_ppm_mcp/server.py:299-303 (schema)The function signature defines the schema: takes an integer 'issue_id' and returns a dict. The returned fields correspond to _ISSUE_FIELDS (name, state, issue_state, project_id, owner_id, date_resolved).
@mcp.tool() def ppm_issue_start(issue_id: int) -> dict[str, Any]: """Move an issue to 'in_progress'.""" client().call_action("ppm.risk", "action_issue_start", [issue_id]) return _read_state("ppm.risk", issue_id, _ISSUE_FIELDS) - src/qod_ppm_mcp/server.py:299-300 (registration)The @mcp.tool() decorator on line 292 registers ppm_issue_start as an MCP tool.
@mcp.tool() def ppm_issue_start(issue_id: int) -> dict[str, Any]: - src/qod_ppm_mcp/server.py:122-124 (helper)The _read_state helper used by ppm_issue_start to fetch the record state after the action.
report_id = rows[0]["id"] return _read_state( "ppm.status.report", - src/qod_ppm_mcp/client.py:122-124 (helper)The call_action method on OdooClient, which is used by ppm_issue_start to invoke the Odoo server action.
def call_action(self, model: str, method: str, ids: list[int]) -> Any: """Invoke an `action_*` button method on the given record ids.""" return self.execute_kw(model, method, [ids])