Skip to main content
Glama
aliyun

AlibabaCloud DevOps MCP Server

Official
by aliyun

update_effort_record

Modify logged work hours for specific tasks in Alibaba Cloud DevOps projects to maintain accurate time tracking and project management records.

Instructions

[Project Management] 更新登记实际工时

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
organizationIdYesorganizationId
workitemIdYes工作项唯一标识
idYes工时记录唯一标识
actualTimeYes实际工时
descriptionNo工作描述
gmtEndYes工作开始结束日期
gmtStartYes工作开始日期
operatorIdNo操作者的useId,个人token时该参数无效
workTypeNo工作类型

Implementation Reference

  • MCP tool handler for 'update_effort_record': parses input arguments using UpdateEffortRecordSchema and calls the underlying effort.updateEffortRecord function.
    case "update_effort_record": {
      const args = types.UpdateEffortRecordSchema.parse(request.params.arguments);
      await effort.updateEffortRecord({
        organizationId: args.organizationId,
        workitemId: args.workitemId,
        id: args.id,
        actualTime: args.actualTime,
        description: args.description,
        gmtEnd: args.gmtEnd,
        gmtStart: args.gmtStart,
        operatorId: args.operatorId,
        workType: args.workType
      });
      return {
        content: [{ type: "text", text: "Effort record updated successfully" }],
      };
    }
  • Core implementation of updateEffortRecord: validates parameters, constructs API URL, and performs PUT request to update the effort record via yunxiaoRequest.
    export async function updateEffortRecord(
      params: z.infer<typeof CreateEffortRecordRequestSchema> & {
        organizationId: string;
        workitemId: string;
        id: string;
      }
    ) {
      const validatedParams = CreateEffortRecordRequestSchema.parse({
        actualTime: params.actualTime,
        description: params.description,
        gmtEnd: params.gmtEnd,
        gmtStart: params.gmtStart,
        operatorId: params.operatorId,
        workType: params.workType
      });
      
      const url = `/oapi/v1/projex/organizations/${params.organizationId}/workitems/${params.workitemId}/effortRecords/${params.id}`;
      
      const response = await yunxiaoRequest(url, {
        method: "PUT",
        body: validatedParams
      });
    
      return response;
    }
  • Tool registration defining the name, description, and input schema (derived from UpdateEffortRecordSchema) for 'update_effort_record'.
    {
      name: "update_effort_record",
      description: "[Project Management] 更新登记实际工时",
      inputSchema: zodToJsonSchema(UpdateEffortRecordSchema),
    },
  • Zod schema definition for UpdateEffortRecord input validation, including fields like organizationId, workitemId, id, actualTime, etc.
    export const UpdateEffortRecordSchema = z.object({
      organizationId: z.string().describe("organizationId"),
      workitemId: z.string().describe("工作项唯一标识"),
      id: z.string().describe("工时记录唯一标识"),
      actualTime: z.number().positive().describe("实际工时"),
      description: z.string().max(500).optional().describe("工作描述"),
      gmtEnd: z.string().describe("工作开始结束日期"),
      gmtStart: z.string().describe("工作开始日期"),
      operatorId: z.string().optional().describe("操作者的useId,个人token时该参数无效"),
      workType: z.string().optional().describe("工作类型"),
    });
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 states the action ('更新' meaning update) which implies a mutation, but doesn't disclose behavioral traits like required permissions, whether changes are reversible, error conditions (e.g., invalid IDs), or response format. For a mutation tool with 9 parameters and no annotations, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is a single, efficient phrase with no wasted words. It's front-loaded with the domain context and core action. However, it could be slightly more informative (e.g., specifying 'effort record' explicitly) without losing conciseness.

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?

Given the complexity (9 parameters, 6 required, mutation operation) and lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns, error handling, or critical behavioral aspects like the effect of 'operatorId' being invalid with personal tokens. For a mutation tool, this leaves the agent under-informed.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (e.g., 'actualTime' as actual working hours, 'operatorId' as operator's userId). The description adds no additional parameter semantics beyond implying it updates '实际工时' (actual working hours), which aligns with the 'actualTime' parameter. Baseline 3 is appropriate when the schema does the heavy lifting.

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 '[Project Management] 更新登记实际工时' clearly states the verb ('更新' meaning update) and resource ('实际工时' meaning actual effort/working hours), and the domain context ('Project Management') is helpful. It distinguishes from sibling 'create_effort_record' by indicating an update rather than creation. However, it doesn't specify what exactly is being updated (an effort record) beyond the name, leaving some ambiguity.

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. The description doesn't mention prerequisites (e.g., needing an existing effort record), compare it to 'update_estimated_effort' (for estimated vs. actual hours), or indicate when not to use it (e.g., for creating new records). The agent must infer usage from the name and context alone.

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/aliyun/alibabacloud-devops-mcp-server'

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