Skip to main content
Glama
TylerIlunga

Procore MCP Server

Find Or Create An Annotated Document With Markup Context Filtering

find_or_create_an_annotated_document_with_markup_context

Find or create an annotated document for markup, filtered by markup context (WORKFLOW, WORKSPACE, or PIN). Requires company, project, item ID, and item type.

Instructions

Find or create an Annotated Document where markup may be added. Supports filtering by a single markup context (WORKFLOW, WORKSPACE, or PIN). When markup_context is PIN, pin_origin (WORKFLOW or WORKSPACE) is required. Use this to perform the find or action on Document Markup records. Creates a new Document Markup records and returns the created object on success (HTTP 201). Required parameters: company_id, project_id, item_id, item_type. Procore API (v1.1): Project Management > Document Markup. Endpoint: POST /rest/v1.1/companies/{company_id}/projects/{project_id}/viewer_documents

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
company_idYesURL path parameter — unique identifier for the Procore company
project_idYesURL path parameter — unique identifier for the Procore project
combined_xfdfNoQuery string parameter — the combined xfdf for this Document Markup operation
markup_contextNoQuery string parameter — the markup context for this Document Markup operation
pin_originNoQuery string parameter — the pin origin for this Document Markup operation
item_idYesJSON request body field — unique identifier of the item
item_typeYesJSON request body field — the item type for this Document Markup operation
attachment_idNoJSON request body field — unique identifier of the attachment
attachment_sourceNoJSON request body field — the attachment source for this Document Markup operation
Behavior4/5

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

Beyond annotations (which show non-read-only, non-destructive, non-idempotent), the description discloses that the tool creates new Document Markup records and returns the created object (HTTP 201). It also explains filtering behavior and conditional parameter requirements. No contradictions with annotations.

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 concise (6 sentences) and front-loaded with the main purpose. Each sentence contributes essential information: purpose, filtering, conditional requirement, usage hint, creation outcome, and API reference. No unnecessary repetition or fluff.

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?

Given the tool's complexity (9 parameters, no output schema), the description covers core logic and required params but lacks detail on error handling, find vs. create behavior distinctions, or side effects (openWorldHint). The return structure is vaguely mentioned as 'created object', but more specificity would improve completeness.

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

Parameters4/5

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

With 100% schema coverage, the description adds meaningful context beyond the schema, particularly the conditional dependency between markup_context and pin_origin. It also calls out the four required parameters. This additional logic helps the agent understand parameter interactions.

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 action (find or create) and resource (Annotated Document with markup context filtering). It distinguishes from siblings by specifying a unique filtering capability (WORKFLOW, WORKSPACE, or PIN context) and mentions the endpoint targeting document markup records. This is specific and unambiguous.

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 indicates when to use the tool ('Use this to perform the find or action on Document Markup records') and includes conditional logic for required parameters. However, it does not explicitly state when not to use this tool or provide alternatives among the many sibling markup tools, leaving room for confusion.

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