Skip to main content
Glama
TylerIlunga

Procore MCP Server

Update Timecard Entry (Project)

update_timecard_entry_project
Idempotent

Update an existing timecard entry in Procore. Provide the project ID and entry ID, then modify fields such as date, hours, or billable status; omitted fields remain unchanged.

Instructions

Update a specific timecard entry. #### See - Daily Log guide - for additional info on * Attachments. Send only the fields you intend to change; omitted fields keep their current values. Pass the record's fields as top-level arguments — they are nested under "timecard_entry" in the request payload for you. project_id defaults to the value set by procore_set_config when omitted, and id must identify an existing parent record — resolve it with the matching list tool first. Returns the modified timecard entry on success. Failures come back as an error payload carrying the HTTP status — commonly 401 when the token has expired, 403 without tool permission, and 404 when an id does not resolve. Required parameters: project_id, id. Procore API: Project Management > Field Productivity. Endpoint: PATCH /rest/v1.0/projects/{project_id}/timecard_entries/{id}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesURL path parameter — iD of the timecard entry
dateNoJSON request body field — the date of the timecard dntry in ISO 8601 format.
hoursNoJSON request body field — total number of hours worked (excluding breaks) for the timecard entry. This property is not applicable if the timesheet time entry is configured for start time and stop time.
time_inNoJSON request body field — the start time of the timecard entry in ISO 8601 format. This property is only applicable if the timesheet time entry is configured for start time and stop time.
billableNoJSON request body field — the billable status of the timecard entry. Must be either true or false.
datetimeNoJSON request body field — the date and time of the record. This property is mutually exclusive with the Date property.
party_idNoJSON request body field — the ID of the Party of the Timecard Entry
time_outNoJSON request body field — the stop time of the timecard entry in ISO 8601 format. This property is only applicable if the timesheet time entry is configured for start time and stop time.
origin_idNoJSON request body field — the ID of the related external data.
lunch_timeNoJSON request body field — the duration of the lunch break, in minutes, for the timecard entry. This property is only applicable if the tmesheet time entry is configured for start time and stop time.
project_idYesURL path parameter — unique identifier for the project.
clock_in_idNoJSON request body field — the ID of the clock in GPS position corresponding to the timecard entry.
descriptionNoJSON request body field — the description of the timecard entry.
origin_dataNoJSON request body field — the value of the related external data.
clock_out_idNoJSON request body field — the ID of the clock out GPS position corresponding to the timecard entry.
cost_code_idNoJSON request body field — the ID of the cost code corresponding to the timecard entry.
timesheet_idNoJSON request body field — the ID of the timesheet corresponding to the timecard entry.
serializer_viewNoQuery string parameter — changes which fields are included in the serialized response. - `extended_daily_log` - Returns extended fields plus Daily Log segment associations - Default (not specified) - Returns the standard e...
line_item_type_idNoJSON request body field — the ID of the line item type pertaining to the time card entry.
daily_log_segment_idNoJSON request body field — daily Log Segment ID
login_information_idNoJSON request body field — the ID of the login information corresponding to the timecard entry.
timecard_time_type_idNoJSON request body field — the ID of the timecard time type corresponding to the timecard entry.
Behavior5/5

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

The description discloses substantial behavioral details beyond the annotations: omitted fields retain their values, fields are nested under 'timecard_entry' in the payload, project_id defaults, and specific HTTP error statuses (401, 403, 404). This goes far beyond the annotation flags (idempotent, non-destructive, non-read-only) and provides actionable expectations for the agent.

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 dense and every sentence adds value, covering purpose, usage notes, error handling, required parameters, and API path. The '####' markdown formatting is slightly awkward and the paragraph is a bit long, but it remains efficiently organized and free of fluff.

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

Completeness5/5

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

For a complex mutation tool with 22 parameters and no output schema, the description is remarkably complete: it explains return behavior, error payloads, partial update semantics, parameter defaults, and the API endpoint. It also links to external docs for attachments. The schema and annotations cover parameter details and idempotency, leaving no significant gaps.

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

Parameters5/5

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

With 100% schema coverage, the parameters are already well-documented, but the description adds crucial semantics: partial update behavior, top-level argument to payload nesting, project_id defaulting, and id resolution via a list tool. These clarify how to use the parameters correctly and would be easy to miss from the schema alone.

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's action ('Update a specific timecard entry') and resource (timecard entry), with the endpoint path including /projects/{project_id}/timecard_entries/{id} and the title '(Project)' indicating project scope. However, it does not explicitly distinguish this from sibling tools like update_timecard_entry_company or update_timecard_entry, so sibling differentiation is implicit rather than explicit.

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?

The description provides clear context and usage guidance: partial update semantics, top-level argument mapping, project_id defaulting from procore_set_config, and resolving id via a list tool. It also explains common error statuses and required parameters. However, it does not explicitly state when to use this tool versus alternatives or name the specific list tool to use, so exclusionary guidance is missing.

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/TylerIlunga/procore-mcp-server'

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