Skip to main content
Glama

aps_get_submittal_item

Fetch complete details for a specific submittal item using its project and item IDs.

Instructions

Get full details for a single submittal item by ID. Returns the complete item object from the API.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_idYesProject ID (UUID or 'b.' prefixed – auto‑converted).
item_idYesSubmittal item UUID.

Implementation Reference

  • Validates the submittal item_id parameter (required, no traversal tokens, must be UUID format). Used by the aps_get_submittal_item handler.
    export function validateSubmittalItemId(id: string): string | null {
      if (!id) return "item_id is required.";
      if (containsTraversalTokens(id))
        return "item_id contains disallowed characters ('/', '\\', '%2F', or '..').";
      if (!UUID_RE.test(id))
        return "item_id must be a UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).";
      return null;
    }
  • Tool registration/schema for aps_get_submittal_item — defines name, description, and inputSchema (project_id and item_id, both required).
    // 21 ── aps_get_submittal_item
    {
      name: "aps_get_submittal_item",
      description:
        "Get full details for a single submittal item by ID. " +
        "Returns the complete item object from the API.",
      inputSchema: {
        type: "object" as const,
        properties: {
          project_id: {
            type: "string",
            description: "Project ID (UUID or 'b.' prefixed – auto‑converted).",
          },
          item_id: {
            type: "string",
            description: "Submittal item UUID.",
          },
        },
        required: ["project_id", "item_id"],
      },
    },
  • Handler function for aps_get_submittal_item — validates project_id and item_id, builds the submittalPath to 'items/{itemId}', makes a GET request, and returns the raw JSON response.
    // ── aps_get_submittal_item ──────────────────────────────────
    if (name === "aps_get_submittal_item") {
      const projectId = args.project_id as string;
      const rawItemId = args.item_id as string;
      const e1 = validateSubmittalProjectId(projectId);
      if (e1) return fail(e1);
      const e2 = validateSubmittalItemId(rawItemId);
      if (e2) return fail(e2);
      const itemId = encodeURIComponent(rawItemId);
    
      const t = await token();
      const raw = await apsDmRequest("GET", submittalPath(projectId, `items/${itemId}`), t, {
        headers: { "Content-Type": "application/json" },
      });
      return json(raw);
    }
  • Validates the submittal project_id — required, no traversal tokens, must be UUID optionally prefixed with 'b.'.
    export function validateSubmittalProjectId(id: string): string | null {
      if (!id) return "project_id is required.";
      if (containsTraversalTokens(id))
        return "project_id contains disallowed characters ('/', '\\', '%2F', or '..').";
      // Accept 'b.<uuid>' (DM format) or plain UUID (ACC format)
      const bare = id.startsWith("b.") ? id.slice(2) : id;
      if (!UUID_RE.test(bare))
        return "project_id must be a UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) optionally prefixed with 'b.'.";
      return null;
    }
Behavior2/5

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

No annotations are provided, so the description must bear the full burden of behavioral disclosure. It states 'Returns the complete item object' but does not disclose auth requirements, rate limits, error handling, or any side effects. For a simple read tool, this is insufficient.

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 a single sentence that is clear and concise. However, it could include a tiny bit more context without becoming verbose.

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 is adequate for a simple retrieval tool with no output schema, but it could be improved by mentioning the structure of the returned object or typical use cases. It lacks completeness for an agent to fully understand what to expect.

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%, with both parameters (project_id, item_id) already documented in the input schema. The description adds no additional meaning or usage context for these parameters.

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 action ('Get full details'), the resource ('single submittal item'), and the scope ('by ID'). It also distinguishes from siblings like aps_list_submittal_items (list many) and aps_get_submittal_item_attachments (attachments).

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 provides no guidance on when to use this tool versus alternatives. It does not mention when to prefer this over aps_list_submittal_items or aps_get_submittal_item_attachments.

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/EverseDevelopment/APS.MCP'

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