Skip to main content
Glama

ppm_change_request_submit

Submit a draft Change Request to initiate review and get a sequence number assigned.

Instructions

Submit a draft Change Request for review; assigns a sequence number.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cr_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The tool handler function. Calls the Odoo server-side action_submit method on ppm.change.request and returns the updated record state.
    @mcp.tool()
    def ppm_change_request_submit(cr_id: int) -> dict[str, Any]:
        """Submit a draft Change Request for review; assigns a sequence number."""
        client().call_action("ppm.change.request", "action_submit", [cr_id])
        return _read_state("ppm.change.request", cr_id, _CR_FIELDS)
  • Fields read back after the action to return current state of the Change Request.
    _CR_FIELDS = ["name", "state", "project_id", "change_type", "priority", "initiator_id"]
  • Registered as an MCP tool via the @mcp.tool() decorator on FastMCP instance 'mcp'.
    @mcp.tool()
  • Helper that reads the record back from Odoo after the action to return updated state.
    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]
  • OdooClient.call_action wraps execute_kw to invoke server-side action methods (used here as action_submit on ppm.change.request).
    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])
Behavior3/5

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

With no annotations, the description carries full burden. It mentions submission and sequence number assignment, implying state change, but lacks details on permissions, side effects, or reversibility. This is adequate but minimal.

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

Conciseness3/5

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

The description is a single sentence, concise but arguably too brief. No wasted words, but it omits important details that could be included without excessive length.

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

Completeness2/5

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

The description is incomplete for a tool with 0% schema coverage and no annotations. It does not define the parameter, state preconditions (requires draft status), or indicate what happens after submission. Output schema exists but description needn't cover that.

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

Parameters2/5

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

Schema coverage is 0% and the description does not explain the 'cr_id' parameter. While the parameter name suggests a change request ID, the description should provide explicit meaning, especially given the lack of schema descriptions.

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

Purpose4/5

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

The description clearly states the tool submits a draft Change Request for review and assigns a sequence number, using a specific verb and resource. It distinguishes from siblings like approve/reject by indicating the action is for drafts.

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

Usage Guidelines3/5

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

The description implies usage when a draft is ready for review but provides no explicit when-to-use/alternatives guidance. The context of siblings suggests other actions exist, but the description doesn't differentiate them.

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