Skip to main content
Glama

ppm_risk_start_analysis

Advance a risk from identified to analyzing status, enabling deeper evaluation and mitigation planning.

Instructions

Transition a risk from 'identified' to 'analyzing'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
risk_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The tool handler for ppm_risk_start_analysis. It transitions a risk from 'identified' to 'analyzing' by calling the Odoo server action 'action_start_analysis' on model 'ppm.risk', then reads and returns the updated risk state fields.
    @mcp.tool()
    def ppm_risk_start_analysis(risk_id: int) -> dict[str, Any]:
        """Transition a risk from 'identified' to 'analyzing'."""
        client().call_action("ppm.risk", "action_start_analysis", [risk_id])
        return _read_state("ppm.risk", risk_id, _RISK_FIELDS)
  • The tool is registered as an MCP tool via the @mcp.tool() decorator on line 219.
    @mcp.tool()
    def ppm_risk_start_analysis(risk_id: int) -> dict[str, Any]:
        """Transition a risk from 'identified' to 'analyzing'."""
        client().call_action("ppm.risk", "action_start_analysis", [risk_id])
        return _read_state("ppm.risk", risk_id, _RISK_FIELDS)
  • The _RISK_FIELDS list defines the schema of fields returned by the tool after the action is executed.
    _RISK_FIELDS = [
        "name",
        "state",
        "risk_type",
        "probability",
        "impact",
        "risk_score",
        "risk_level",
        "project_id",
        "owner_id",
    ]
  • The _read_state helper function reads the current state of a record after the action is performed.
    def _read_state(model: str, rec_id: int, fields: list[str]) -> dict[str, Any]:
        rows = client().read(model, [rec_id], fields)
        if not rows:
            raise ValueError(f"{model} id={rec_id} not found")
        return rows[0]
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states that it transitions the state but does not disclose whether the operation is reversible, if it requires specific permissions, or what happens to related data (e.g., comments, history). For a state-altering tool, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that conveys the core action and state change with no extraneous words. It is optimally concise for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (single parameter, simple state transition) and the presence of an output schema (though unseen), the description minimally conveys the operation. However, it omits a key contextual detail: that the risk must currently be in the 'identified' state. This is a minor gap for an otherwise simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0% and the description does not explain the risk_id parameter. While risk_id is intuitively an identifier, the description adds no meaning beyond what the schema already provides (type: integer, required). With low coverage, the description should compensate, but it fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Transition' and specifies the exact state change from 'identified' to 'analyzing', which is a specific verb+resource+scope. It distinguishes itself from sibling risk tools like ppm_risk_start_mitigation, ppm_risk_close, etc., by naming the distinct target state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention any prerequisites (e.g., risk must be in 'identified' state) or situations where this tool is inappropriate. The description is minimal and offers no context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wethti/qod-ppm-odoo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server