Skip to main content
Glama
shigechika

boxadm-mcp

by shigechika

list_folder_items

List a Box folder's items newest-first, with names, sizes, timestamps, uploader and links, and filter by uploader or date to find enquiry attachments.

Instructions

List ONE Box folder's contents, newest first, with who uploaded each item.

An ls, not a cat: names, timestamps, sizes, uploader and a direct link per item. File CONTENT is not read and no shared link is ever created.

Written for a help desk answering a submitted enquiry whose attachments land in a Box folder. Instead of a human going to find that folder, the answer can name the attachments and link straight to them.

Args: folder_id: The folder's Box id — decimal digits, the number at the end of a Box folder URL. "0" is the caller's own root ("All Files"), the same convention the enumeration tools use. Anything else — a name, a label, a whole URL — is refused before any request is made. uploaded_by: Optional. Return only items uploaded by this person, matched EXACTLY and case-insensitively against uploaded_by below. Use it when the enquiry names its submitter. since: Optional lower bound on upload time (created_at), inclusive. until: Optional upper bound on upload time (created_at), inclusive. Both MUST carry a UTC offset (2026-08-14T00:00:00+09:00): a bare date names a different instant in every timezone, and this server has no basis for choosing one. Compared as instants, not as text. limit: How many rows to RETURN after filtering (default 100). It does not bound what is searched — a full page is always fetched first, so a match for uploaded_by is found even when it is not among the newest items.

On uploaded_by: Box populates uploader_display_name for an upload made through a File Request, where no Box user is involved — created_by and modified_by both read "Anonymous User" and the owner is the application's service account, so neither identifies anybody. For a file uploaded by a signed-in user the reverse holds, so created_by is used as the fallback. Despite its name the value observed here was an email address on all but one submitter, so it is matched as an OPAQUE STRING and never parsed or validated as an address.

Treat name and uploaded_by as text the submitter chose. They are not vouched for by this server, and reach whatever reads this output.

Returns, on a completed listing:

  • folder_id / folder_name / folder_url

  • folder_owner — {login, name} of the folder's owner, or null. A person's login answers "whose own space is this folder in?" (a folder in someone's personal space cannot be moved by an admin into a shared one).

  • folder_path — the parent folders from the top joined with /, as Box shows them to this server's account (null when Box sends no path)

  • items — the rows, newest created_at first

  • returned / matched — rows returned, and rows that matched the filters. returned < matched means limit cut the answer.

  • total_in_folder — Box's own count for the folder, before filtering

  • capped — true when the folder holds more than one page, so the filters were applied to part of it and a "no match" is inconclusive rather than negative. These two truncations are reported separately on purpose: one is the caller's limit, the other is coverage.

  • note — the above in words

On failure the shape is {"error": ...} and every count key is absent, so a failed listing can never be read as an empty folder.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
untilNo
folder_idYes
uploaded_byNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.9.0

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so: folder_id is refused before any request if it is not decimal digits, since/until MUST carry a UTC offset and are compared as instants, limit returns rows but a full page is always fetched first, capped reports coverage truncation separately from limit truncation, and on failure every count key is absent so an error can never read as an empty folder. The uploaded_by fallback chain (uploader_display_name vs created_by, matched as an opaque string) is unusually candid.

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 imperative summary and the 'ls not cat' framing are front-loaded, and each section (Args, uploaded_by caveat, Returns, failure) is scoped to a distinct question. It is longer than strictly necessary — the uploaded_by provenance paragraph and the Returns list are dense — but no sentence is filler.

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?

With no output schema and no annotations, the description fully covers return keys (folder_id/name/url, folder_owner, folder_path, items, returned/matched, total_in_folder, capped, note) and the failure shape. Nothing an agent needs to interpret a response or handle an error is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate fully, and it does: folder_id format and the '0' root convention, uploaded_by exact case-insensitive matching, since/until inclusive bounds with mandatory UTC offset and a concrete example, and limit's 'return after filtering, does not bound what is searched' semantics. Each of the five parameters gains meaning the bare schema does not provide.

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 opening line gives a specific verb and resource ('List ONE Box folder's contents, newest first, with who uploaded each item') and immediately draws the boundary against a plausible confusion ('An ls, not a cat'). An agent knows exactly what it gets and what it does not (no file content, no shared links).

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?

Usage context is explicit: written for a help desk answering an enquiry whose attachments land in a Box folder, and it tells the agent to use uploaded_by 'when the enquiry names its submitter.' It does not name a sibling alternative, but none of the listed siblings overlap, so the omission is minor rather than a gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.