Skip to main content
Glama
TylerIlunga

Procore MCP Server

Download All Company-Level Email Attachments

download_all_company_level_email_attachments
Read-onlyIdempotent

Download all attachments from a company-level email as a ZIP file. Provide company, communication, and email IDs to get the download URL.

Instructions

Return URL to download all email attachments in .zip format for company-level communications. Use this when you already know which company-level email attachment you want and need its full field set. company_id defaults to the value set by procore_set_config when omitted, and communication_id, email_id must identify existing parent records — resolve them with the matching list tool first. Returns a JSON object containing the generated file or a download URL for the company-level email attachment. Read-only — it changes nothing in Procore. 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: company_id, communication_id, email_id. Procore API: Project Management > Emails. Endpoint: GET /rest/v1.0/companies/{company_id}/email_communications/{communication_id}/emails/{email_id}/download_attachments

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
email_idYesURL path parameter — unique identifier of the email
company_idYesURL path parameter — unique identifier for the company.
communication_idYesURL path parameter — unique identifier of the communication
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint), the description adds valuable behavioral details: it states the return format (JSON with file or download URL), explicitly says it changes nothing in Procore, and outlines error payloads with common HTTP statuses (401, 403, 404). It also discloses the prerequisite that communication_id and email_id must reference existing parent records and the company_id default behavior.

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 front-loaded with the main purpose and includes many useful details, but it is somewhat lengthy and contains redundancy (e.g., 'Required parameters' repeats schema information). The phrase 'and need its full field set' is confusing and could be trimmed without losing meaning.

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?

The description is highly complete for a tool with no output schema: it covers purpose, usage prerequisites, return type, read-only behavior, error handling, and the exact API endpoint. This provides an agent with enough information to invoke the tool correctly and understand likely outcomes.

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?

Schema coverage is 100% with basic identifier descriptions, so baseline is 3. The description adds meaningful context by explaining company_id defaults to procore_set_config when omitted and that communication_id/email_id must identify existing parent records. However, there is an inconsistency: the schema marks company_id as required, yet the description implies it can be omitted, which could confuse an agent.

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 first sentence clearly states the tool returns a URL to download all email attachments as a .zip for company-level communications. However, the subsequent phrase 'which company-level email attachment you want and need its full field set' introduces ambiguity about whether this downloads a single attachment or all attachments, and 'full field set' is more typical of a show operation than a download.

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: use when you already know the target email, resolve IDs with the matching list tool first, and company_id defaults from procore_set_config. It does not explicitly name alternative sibling tools or state when not to use this tool, but the context is sufficient for selection.

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