Skip to main content
Glama
TylerIlunga

Procore MCP Server

List Assets

list_assets_company
Read-onlyIdempotent

Retrieve company assets with filtering options for projects, trades, statuses, and custom fields.

Instructions

Returns List of Assets by given Company. Use this when you already know which asset you want and need its full field set. company_id defaults to the value set by procore_set_config when omitted. Returns a single JSON object describing the asset. 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. Procore API (v2.0): Core > Assets. Endpoint: GET /rest/v2.0/companies/{company_id}/assets

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoQuery string parameter — one-based page index (1..N)
sortNoQuery string parameter — sorting criteria in minus-based order format. Default sort order is ascending. Multiple sort criteria can be provided in CSV format, for example: sort=asset_name,-modified_at.
viewNoQuery string parameter — response detail level. Use 'normal' for standard fields or 'extended' for all fields
searchNoQuery string parameter — search query. Searches across: asset_id (asset_code), asset_name, description, created_by (user name), modified_by (user name), asset_type (name), asset_status (name), trade (name), and custom fiel...
per_pageNoQuery string parameter — the size of the page to be returned
company_idYesURL path parameter — unique identifier for the company.
filters__idNoQuery string parameter — filter by asset IDs. Accepts a single ID or multiple comma-separated IDs (e.g., 'id1,id2,id3').
Accept-LanguageNoJSON request body field — locale for localized response messages (for example: en, fr-FR, pseudo)
include_bim_infoNoQuery string parameter — include BIM scene and object information in response. BIM info is included when this parameter is true.
filters__scene_idNoQuery string parameter — filter by BIM scene IDs. Accepts a single ID or multiple comma-separated IDs (e.g., 'sceneId1,sceneId2').
filters__trade_idNoQuery string parameter — filter by trade IDs. Accepts a single ID or multiple comma-separated IDs (e.g., 'tradeId1,tradeId2').
wrap_custom_fieldsNoQuery string parameter — when true, wraps each custom field value as {"value": ...} and renames "name" to "label" inside LOV objects.
filters__asset_codeNoQuery string parameter — filter by asset IDs (asset_code in API, also referred as asset_id). Case-insensitive. Accepts a single ID or multiple comma-separated IDs (e.g., 'ASSET-001,ASSET-002').
filters__created_atNoQuery string parameter — created at filter (date range format: YYYY-MM-DD...YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ...YYYY-MM-DDTHH:MM:SSZ)
filters__project_idNoQuery string parameter — filter by project IDs. Accepts a single ID or multiple comma-separated IDs (e.g., '12345,67890').
filters__location_idNoQuery string parameter — filter by location IDs. Accepts a single ID or multiple comma-separated IDs (e.g., 'locId1,locId2').
filters__modified_atNoQuery string parameter — updated at filter (date range format: YYYY-MM-DD...YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ...YYYY-MM-DDTHH:MM:SSZ)
include_profile_imageNoQuery string parameter — include profile image URLs in response. Profile image URLs are included in all views when this parameter is true.
filters__asset_type_idNoQuery string parameter — filter by asset type IDs. Accepts a single ID or multiple comma-separated IDs (e.g., 'typeId1,typeId2').
filters__asset_status_idNoQuery string parameter — filter by asset status IDs. Accepts a single ID or multiple comma-separated IDs (e.g., 'statusId1,statusId2').
filters__custom_field_idNoQuery string parameter — filter by custom field values. Supported only for single select, multi-select, and datetime fields. Can be used multiple times for different custom fields. Supports single values (e.g., 'filters[cu...
filters__exclude_project_idNoQuery string parameter — exclude assets by project IDs. Accepts a single ID or multiple comma-separated IDs (e.g., '12345,67890'). Assets belonging to these project IDs will be excluded from the results.
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'Read-only — it changes nothing in Procore.' It adds useful context about the company_id default from procore_set_config and common HTTP error statuses (401, 403, 404). However, the internal contradiction about returning a single object vs. a list detracts from transparency since it misdescribes the response shape.

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 relatively compact at ~120 words and front-loads the core purpose. It covers key aspects (purpose, usage, default, safety, errors, endpoint) without excessive verbosity. However, the redundant 'Required parameters' sentence and the misleading 'single JSON object' phrase could be removed to improve clarity.

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

Completeness2/5

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

With no output schema and a complex 22-parameter tool, the description must clarify the return structure, but it contradicts itself between 'List of Assets' and 'a single JSON object describing the asset.' It also omits pagination behavior, which is relevant given the page and per_page parameters. The error and endpoint info is helpful, but the return-type confusion is a significant gap 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 description coverage is 100%, so the baseline is 3. The description adds one worthwhile detail — company_id defaults to the procore_set_config value when omitted — which is not in the schema. No other parameter semantics are enriched, and the mention of 'Required parameters: company_id' is redundant with the schema.

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 opening line 'Returns List of Assets by given Company' clearly states the verb, resource, and scope, distinguishing it from project-scoped siblings. However, the later sentence 'Returns a single JSON object describing the asset' directly contradicts the list return type, creating confusion about the actual purpose.

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

Usage Guidelines2/5

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

The description says 'Use this when you already know which asset you want and need its full field set,' which is misleading guidance for a list endpoint; this suggests a show/detail tool rather than a list tool. No alternatives are mentioned, and the description fails to distinguish when to use this vs. list_assets_project or show_asset_company.

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