Skip to main content
Glama

twprojects-create_upload_url

Reserve an upload for a file and get back a short-lived URL to send its bytes to, plus a single-use reference. Use this for any file that already exists — a PDF, an image, a signed document — because the bytes go straight from you to storage and are never read into the conversation. Send the file with the returned method and URL, setting exactly the headers returned and no authorization of your own. Then pass the reference in attachment_refs on twprojects-create_task, twprojects-update_task, twprojects-create_comment or twprojects-create_message. Prefer twprojects-create_file only for short text you are generating yourself.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe file name, including its extension, for example "contract.pdf". Teamwork.com works out how to display the file from the extension, so a name without one is harder to open. Any directory part is removed.
sizeYesThe exact size of the file in bytes. The reservation is signed against this number, so an upload of any other length is rejected.

TDQS

A4.9/5.0
Behavior5/5

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

With no meaningful annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false), the description carries the full burden. It discloses the upload flow: bytes go straight to storage, never read into conversation, URL is short-lived, reference is single-use, and no custom authorization is needed. These are key behavioral traits beyond what annotations convey, and there is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tight, with every sentence earning its place. The core purpose is front-loaded, followed by a clear usage sequence, and ends with the alternative-tool routing. No filler, no redundancy. It reads naturally and is easy to scan.

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?

For a two-step upload tool with no output schema, the description covers the entire workflow: what the tool returns, how to use it, and where to pass the reference. It also addresses authorization and the alternative for generated text. An agent has everything needed to call this tool correctly in context.

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%, so the baseline is 3. The description adds value by explaining that size is signed and any other length is rejected, and that directory parts are stripped from the name. This goes beyond the schema's basic descriptions, helping the agent understand constraints. It does not cover every edge case, so 4 is appropriate.

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 verb ('reserve an upload') and the resource (a file upload URL). It explicitly distinguishes from the sibling twprojects-create_file by specifying when to use each. The examples ('a PDF, an image, a signed document') ground the purpose, making it unambiguous.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use (any file that already exists) and when-not-to-use ('Prefer twprojects-create_file only for short text you are generating yourself'). It names the alternative tool directly, and outlines the follow-up steps (send bytes, pass reference to other tools). No inference required.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3/5.0
Disambiguation4/5

Tools are organized into clear namespaced subdomains (twchat, twdesk, twprojects, twspaces) with distinct actions per resource. However, the twprojects domain has many tools for custom items that share repetitive descriptions, and a few tools like `twprojects-search` could overlap with list tools, but overall boundaries are clear.

Naming Consistency4/5

Naming follows a consistent `{prefix}-{verb}_{noun}` pattern across all tools, with prefixes indicating the subdomain. The only minor inconsistency is the use of singular and plural in nouns (e.g., `get_company` vs `list_companies`) and some verbs like `link_project_to_workflow` vs `move_tasks`, but the pattern is predictable.

Tool Count3/5

With 200 tools, this server is extremely large, covering multiple Teamwork products (Chat, Desk, Projects, Spaces). While each subdomain is well-scoped individually, the sheer number makes it unwieldy for an agent to navigate, and many tools could be pruned or combined (e.g., many custom item variants). It's on the high end of acceptable.

Completeness4/5

The surface is comprehensive, covering CRUD operations for most entities, specialized queries (search, count, summarize), and cross-entity linking (link_task_to_ticket). Minor gaps include lack of delete tools for most entities and some missing lifecycle operations (e.g., archiving), but core workflows are well-covered.