Skip to main content
Glama
fieldjoshua

Upwork MCP Server

by fieldjoshua

Request Payment

upwork_request_payment

Request payment for completed work on Upwork. Specify contract ID, and for fixed-price contracts include milestone ID or amount for hourly contracts.

Instructions

Request payment for work completed.

For hourly contracts, request payment for tracked hours. For fixed-price, request milestone payment.

Args:

  • contract_id (string, required): The contract ID

  • milestone_id (string, optional): Milestone ID for fixed-price contracts

  • amount (number, optional): Amount for hourly contracts

  • message (string, optional): Message to client

Returns: Confirmation of payment request.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
amountNoAmount to request for hourly contracts
messageNoOptional message to the client
contract_idYesThe unique identifier of the contract
milestone_idNoSpecific milestone ID for fixed-price contracts

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A3.8/5.0
Behavior3/5

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

The description states it 'returns confirmation of payment request' and explains the two payment modes. Annotations are all false and offer little safety context; the description doesn't disclose idempotency, side effects such as notifying the client, or prerequisites. This leaves behavioral clarity incomplete.

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 main paragraph is front-loaded with purpose and use cases, and the Args list is tidy. The list repeats schema information but is compact and doesn't bloat the description.

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?

The description provides the essential distinction between hourly and fixed-price payment requests and confirms a return value. Missing are caveats about repeated requests (idempotency is false), possible failure conditions, or the relationship to sibling tools like upwork_submit_milestone, leaving some uncertainty for an agent.

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 coverage is 100%, with descriptions for contract_id, milestone_id, amount, and message. The description's Args section largely restates these schema descriptions, adding no substantive new meaning beyond mapping them to contract types.

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 opens with a specific verb and resource: 'Request payment for work completed.' It clearly differentiates between hourly and fixed-price contracts, making the tool's function distinct from siblings like upwork_submit_milestone or upwork_get_work_diary.

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

Usage Guidelines4/5

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

It explicitly maps usage scenarios: hourly contracts use tracked hours, fixed-price contracts use milestone payment. It does not, however, name alternative tools or state when not to use them, so it falls just short of the highest bar.

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