Skip to main content
Glama
TylerIlunga

Procore MCP Server

Create Injury

create_injury

Create an injury record tied to an incident, capturing affected person, affliction details, medical treatment, and work impact. Requires project and incident IDs.

Instructions

Creates a new injury record associated with the specified incident. Requires incident_id. Optionally specify affliction details (affliction_type_id, body_part_ids), affected person information, medical treatment details, and work impact metrics. The affected_body_parts field is deprecated; use body_part_ids instead. Pass run_configurable_validations=true to enforce custom validation rules. The operation is idempotent. NOTE: The afflictions and affected_body_part keys are deprecated. Please disregard and use the affected_body_parts and affliction_type keys as documented below. Pass the record's fields as top-level arguments — they are nested under "injury" in the request payload for you. project_id defaults to the value set by procore_set_config when omitted. Acts on the injury and returns Procore's response for the operation. 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, incident_id. Procore API: Project Management > Incidents. Endpoint: POST /rest/v1.0/projects/{project_id}/incidents/injuries

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYesURL path parameter — unique identifier for the project.
recordableNoJSON request body field — represents whether the Injury record is recordable
descriptionNoJSON request body field — description of event in Rich Text format
filing_typeNoJSON request body field — filing Type - The 'recordable' filing_type value is deprecated. When a filing type of 'recordable' is provided, the `recordable` attribute of the Injury will instead be set to 'true'.
incident_idYesJSON request body field — the ID of the Incident
body_part_idsNoJSON request body field — the IDs of body parts affected by the affliction. This requires an affliction_type to be set.
date_of_deathNoJSON request body field — the date of death for this Incidents operation
treated_in_erNoJSON request body field — represents whether the injured person was treated in the ER
harm_source_idNoJSON request body field — the ID of the Harm Source
work_activity_idNoJSON request body field — the ID of the Work Activity
work_days_absentNoJSON request body field — the number of days absent from work
affected_party_idNoJSON request body field — the ID of the Affected Person. This supports full and reference Users from the People endpoints.
body_diagram_typeNoJSON request body field — the body diagram type for this Incidents operation
affected_person_idNoJSON request body field — the ID of the Affected Person. This only supports full Users from the Users endpoints.
affliction_type_idNoJSON request body field — the ID of the Affliction Type. This cannot be cleared if there is an affected_body_part.
treatment_facilityNoJSON request body field — the name of the treatment facility
treatment_providerNoJSON request body field — the name of the treatment provider
affected_body_partsNoJSON request body field — dEPRECATED - Use body_part_ids instead. The body parts affected by the affliction. This requires an affliction_type to be set.
affected_company_idNoJSON request body field — the ID of the Affected Company
managed_equipment_idNoJSON request body field — the ID of the Managed Equipment
work_days_restrictedNoJSON request body field — the number of days on restricted work
date_returned_to_workNoJSON request body field — date returned to work
work_days_transferredNoJSON request body field — the number of days transferred
hospitalized_overnightNoJSON request body field — represents whether the injured person was hospitalized overnight
treatment_facility_addressNoJSON request body field — the street address of the treatment facility
run_configurable_validationsNoQuery string parameter — whether or not Configurable validations from the Injury Configurable Field Set should be run (default: false). See (https://developers.procore.com/reference/configurable-field-sets#list-project-con...
custom_field_%{custom_field_definition_id}NoJSON request body field — value of the custom field. The data type of the value passed in corresponds with the data_type of the Custom Field Definition. For a lov_entry data_type the value passed in should be the ID of one ...
Behavior1/5

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

The description directly contradicts the annotations: annotations declare idempotentHint=false, but the description states 'The operation is idempotent.' This is a clear annotation contradiction, which per rubric must score 1. Additional behavioral details (error statuses, default behavior) are present but are overshadowed by the contradiction.

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 fairly long and somewhat disorganized. It contains a confusing, contradictory NOTE about deprecated keys, repeats 'Required parameters' at the end, and mixes deprecation warnings, payload mechanics, and error handling without clear sectioning. It is not concise, though it does front-load the primary action.

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 covers many necessary aspects: required parameters, optional field groups, error handling statuses, validation flag, project_id default, and the endpoint. However, the idempotency contradiction and the ambiguous return statement ('returns Procore's response') leave gaps. For a tool with 27 parameters and no output schema, this is adequate but not complete.

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%, so the baseline is 3. The description adds some value by explaining top-level argument passing (nested under 'injury' in payload), the project_id default, and deprecation guidance. However, it contains a contradictory deprecation note (first says use body_part_ids, later says use affected_body_parts) and contradicts the schema by suggesting project_id can be omitted when it is required, undermining reliability.

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 tool's purpose: 'Creates a new injury record associated with the specified incident.' This uses a specific verb (creates), a specific resource (injury record), and the relationship to incidents, distinguishing it from sibling tools like create_incident or update_injury.

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 usage context: it requires incident_id, explains optional field categories, mentions run_configurable_validations for custom validation, and explains the project_id default from procore_set_config. It does not explicitly name alternatives or when-not conditions, but the prerequisites and configuration guidance are solid.

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