List Job Photos Tool
list-job-photosLists authorized private photos attached to one job with protected download URLs, filenames, captions, and media types.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | Job ID returned by search-jobs. |
list-job-photosLists authorized private photos attached to one job with protected download URLs, filenames, captions, and media types.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | Job ID returned by search-jobs. |
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as read-only and non-destructive. The description adds meaningful behavioral context by stating the photos are 'authorized private' and that the URLs are 'protected,' signaling access-control requirements and that the URLs are not general public links. This goes beyond the annotation metadata without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-constructed sentence that front-loads the core action and scope ('Lists authorized private photos attached to one job') before listing the returned fields. Every word contributes meaning, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only listing tool with no output schema, the description is complete enough: it states the scope, the kinds of data returned, and the protected nature of the URLs. No missing information is needed for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, job_id, already has a complete schema description ('Job ID returned by search-jobs'), so schema coverage is 100%. The description adds little parameter-level detail beyond reinforcing the 'one job' scope, which is appropriate at the baseline for fully documented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Lists' and names the resource: 'authorized private photos attached to one job.' It further enumerates the kinds of data returned (protected download URLs, filenames, captions, media types), making the tool's purpose unambiguous and distinct from broader job or search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'attached to one job' provides clear context for when to use this tool: when the agent needs the photos belonging to a specific job. It does not explicitly name alternative tools or state exclusions, but no sibling tool appears to offer this same photo-listing capability, so the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.
Tool families are organized by resource and action (get/search/preview/reports), so most tools have a distinct purpose. A few near-overlaps exist—customer-service-requests vs search-service-requests and the many campaign preview/search tools—but descriptions generally clarify boundaries.
The set consistently uses kebab-case with recognizable prefixes like get-, search-, preview-, and reports-, making intent predictable. A few noun-phrase tools (complaint-recall-risk, customer-service-requests, operations-parts, jobs-today) break the verb-first pattern, but they remain readable and grouped.
45 tools is well beyond the 25+ threshold and creates a large surface for agents to navigate, even though the domain is broad. Many tools are narrow read-only variations (e.g., five preview-campaign tools, three reports-* tools), which inflates the count without adding fundamentally new capabilities.
As a read-only/insights server, the surface covers customers, jobs, quotes, invoices, leads, locations, service requests, reviews, campaigns, operations, and reporting with both search and detail access. Minor gaps exist—no get-* for campaign types or social drafts—but these align with the intentionally bounded, safe-read model.