Skip to main content
Glama

Lumethic Photo Verification

Server Details

Verify photos are real camera captures, not AI: C2PA and RAW+JPEG forensics. OAuth or API key.

Ownership verified
Status
Healthy
Uptime
96.0% over 79 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 32 tools

Disambiguation4/5

The two verification entry points are clearly separated by input (verify_photo requires a RAW+JPEG pair, verify_content_credentials a single image), and the tag-mutation trio (add/set/remove) is spelled out as additive vs. replacing vs. single-removal. Remaining risk is mild: add_verification_tags and set_verification_tags both 'add tags' at first glance, and portfolio sharing behaviour overlaps conceptually with share_verification, but the descriptions resolve both.

Naming Consistency5/5

Every tool follows a consistent snake_case verb_noun pattern (get_verification, list_verifications, create_psd_export, remove_portfolio_item, delete_tag), with resource groupings that read predictably. Namespacing prefixes (verification_*, portfolio_*, psd_export_*) make the sub-resource obvious even for the longer names.

Tool Count3/5

32 tools is heavy for a single server and only justifiable because it spans five distinct sub-areas (verifications, tags, comments, portfolio/CMS, marketplace, account). Within each sub-area the tool count is lean, but the total forces an agent to sift through a large surface to reach the handful of tools needed for a typical verification workflow.

Completeness4/5

Verification (upload, run, poll, share, export), tags, comments and portfolio items all have full create/read/update/delete coverage, including edge cases like reordering portfolio items and revoking shares. Gaps are minor: marketplace tools are read-only (no listing creation or update) and there is no tool to delete a verification or to fetch the completed PSD file, which the descriptions push to the web app.

Available Tools

32 tools
add_portfolio_itemA
Destructive
Inspect

Add one of the account's verifications to the portfolio (max 50), with an optional title (max 80). IMPORTANT: this makes the verification publicly viewable: a public share link is created, or an invite-only share is upgraded to public. Tell the user before calling it. The response's share_effect says what happened (none, created, upgraded).

NameRequiredDescriptionDefault
titleNoCaption for the image, max 80 characters. Empty string clears it.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the given annotations by disclosing the actual effect of the write (a public share link is created, or an invite-only share is upgraded to public) and by enumerating the response values (none, created, upgraded). The public-visibility warning is consistent with the destructiveHint=true and openWorldHint=true annotations.

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?

Three tight sentences, front-loaded with the action and its limit, then the safety warning, then the return signal. Nothing is redundant and nothing essential is buried.

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?

Even though an output schema exists, the description helpfully names the decisive return field (share_effect) and its values. With only two parameters, a mutation annotation set, and umambiguous schema coverage, an agent has everything needed to call this correctly.

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 schema already documents both the verification_id source (verify_photo, verify_content_credentials, list_verifications) and the title's 80-character limit; the description only restates the title cap and adds the portfolio-level limit of 50.

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?

States a specific verb and resource ('Add one of the account's verifications to the portfolio') plus a capacity constraint (max 50), which lets an agent tell it apart from update_portfolio_item or share_verification without opening either schema.

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?

Gives an explicit pre-call instruction ('Tell the user before calling it'), which is real usage guidance, but it never names an alternative or exclusion (for example, when to use share_verification instead), so the guidance is clear but partial.

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

add_verification_commentAInspect

Post an internal comment (1-4000 characters) on a verification you own, authored by the connected user. Use it for client feedback, decisions, or context worth keeping with the report.

NameRequiredDescriptionDefault
bodyYesComment text, 1-4000 characters.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses the main behavior: posting an internal comment, character limit, ownership, and authorship. It does not mention error conditions or response shape, but annotations (readOnlyHint false, idempotentHint false) are consistent and no contradictions exist.

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 two sentences, front-loads the action and resource, and contains no redundant or filler content.

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 simple two-parameter tool with an output schema, the description provides enough context to call it correctly: what it does, constraints, use cases, and ownership. No additional details are needed.

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 descriptions cover 100% of parameters, and the description reinforces them by explaining that body is the comment text, that verification_id is a UUID returned by specific verification tools, and that the comment is internal and authored by the connected user.

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 uses a specific verb ('Post') and identifies the resource ('internal comment on a verification you own'), which clearly distinguishes it from sibling tools such as add_verification_tags, list_verification_comments, or update_verification_comment.

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?

It explicitly states when to use the tool ('Use it for client feedback, decisions, or context worth keeping with the report') and notes the ownership requirement, but does not explicitly contrast it with alternative comment-management tools.

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

add_verification_tagsA
Idempotent
Inspect

Add tags to a verification, keeping the ones already on it. Unknown names are created. Returns the verification's full tag list after the change.

NameRequiredDescriptionDefault
tagsYesTag names, 1-40 characters each, no commas. Matching is case-insensitive; unknown names are created.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description explicitly states that existing tags are kept, unknown names are created, and the result (full tag list) is returned. The annotations confirm readOnlyHint=false and destructiveHint=false, aligning with the non-destructive additive behavior described. The idempotentHint=true is consistent with adding tags, though not explicitly mentioned in the description.

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 concise (three sentences) and front-loaded with the primary action. It avoids unnecessary details and structure is straightforward, making it easy to parse quickly.

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

Completeness4/5

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

Given the output schema (not shown but exists), the description adequately covers the input behavior and expected outcome. It lacks a mention of potential errors or edge cases (e.g., invalid verification ID), but for a simple add operation, the provided context is sufficient.

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?

Both parameters are required and fully described in the schema (verification_id as UUID, tags as array of strings with length and character constraints). The description reinforces the parameter semantics by repeating the tag constraints, and the schema coverage is 100%.

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 (add tags to a verification), the specific behavior (keeping existing tags), and the side effect (creating unknown tags). It also mentions the return value (full tag list after change), leaving no ambiguity about the tool's purpose.

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?

The description implies usage by specifying tag constraints (1-40 characters, no commas, case-insensitive matching) and the creation of unknown tags. It doesn't mention when to use this over the sibling 'set_verification_tags' or 'remove_verification_tag', but the behavior is clear enough for basic usage.

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

create_portfolioAInspect

Create the account's portfolio (one per account, starts unpublished; paid plans only). slug is the public URL path: 3-30 lowercase letters, digits and single hyphens. display_name is 1-80 characters; tagline (max 160) and website_url (https) are optional.

NameRequiredDescriptionDefault
slugYesPublic URL path of the portfolio: 3-30 lowercase letters, digits and single hyphens.
taglineNoShort line under the name, max 160 characters. Empty string clears it.
website_urlNoPhotographer's website, an https URL of max 200 characters. Empty string clears it.
display_nameYesName shown on the portfolio page, 1-80 characters.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses that the portfolio starts unpublished and implies a paid-plan requirement, adding meaningful behavior beyond the annotations. It does not detail failure modes or post-creation effects, but annotations already indicate a non-readonly, non-destructive, non-idempotent mutation.

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 compact and well-structured: it opens with the core purpose and key constraints, then clearly walks through parameter requirements. No filler or redundant phrasing is present.

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

Completeness4/5

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

Given the output schema exists, the description covers essential context: creation behavior, account-level constraint, initial unpublished state, payment requirement, and all parameter constraints. It does not explain error responses or uniqueness handling, but the provided context is sufficient for correct invocation.

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?

The schema already provides 100% description coverage for all four parameters, including formats and constraints. The description largely restates these details rather than adding new semantic relationships or cross-parameter context, so it stays at the baseline for high schema coverage.

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 ('Create'), the resource ('portfolio'), and key distinguishing constraints: one per account, starts unpublished, and paid plans only. This differentiates it from update/delete/get portfolio tools and from other create tools among siblings.

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?

It provides strong contextual guidance by noting one-per-account and paid-plan requirements, which tells the agent when creation is appropriate. It does not explicitly name alternative sibling tools or contrast with update_portfolio, but the constraints effectively convey usage conditions.

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

create_psd_exportA
Idempotent
Inspect

Request a layered flicker-comparison PSD for a completed RAW+JPEG verification you own: the original photo, the pixel-registered RAW rendition, and the SSIM difference heatmap as layers, for A/B toggling in Photoshop. Professional plan only (monthly allowance included, metered beyond it). Generation is asynchronous — poll get_psd_export_status until status is 'completed', then download the file from the verification page in the web app. Idempotent: re-requesting returns the existing export's state, and a failed export is retried at no extra charge.

NameRequiredDescriptionDefault
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

The description transparently covers asynchronous generation, idempotent re-request behavior, retry of failed exports, and plan/allowance implications. It does not describe error cases for invalid verification IDs, but the disclosed behavior is otherwise thorough.

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 dense but well-structured, covering purpose, constraints, async flow, and idempotency without unnecessary filler. Each clause adds meaningful information.

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

Completeness4/5

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

The description provides enough context for an agent to choose and call the tool, including the polling flow and download location. It does not detail the output schema fields, but the reference to get_psd_export_status and the existence of an output schema reduce the need for that detail here.

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?

The single parameter verification_id is fully described in the schema and enriched by the description, which explains that it must reference a completed RAW+JPEG verification and how it is returned (verify_photo, verify_content_credentials, or list_verifications).

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 tool's purpose: requesting a layered flicker-comparison PSD for a completed RAW+JPEG verification the user owns. It also names the specific layers and distinguishes the tool from the related get_psd_export_status tool.

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?

It explicitly explains when to use the tool, including prerequisites (completed RAW+JPEG verification you own), plan restrictions (Professional plan only), and the asynchronous workflow with the polling step via get_psd_export_status. This leaves little ambiguity about usage.

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

create_verification_uploadAInspect

Get pre-signed S3 PUT URLs to upload a large RAW + JPEG directly (avoids inlining bytes and bypasses request-size limits). PUT each file to its upload_url, then call verify_photo with the returned object_key values as raw_object_key / image_object_key.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses that the tool does not actually upload the files itself but returns pre-signed URLs, and that the agent must PUT to those URLs and then call verify_photo with the returned object keys. This adds meaningful behavioral context beyond the sparse annotations, though it does not mention URL expiration or upload completion details.

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 two compact sentences that front-load the core function and immediately follow with actionable steps. Every sentence contributes essential information with no redundancy or 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?

For a zero-parameter tool with an output schema, the description fully covers the workflow: obtaining URLs, uploading files, and completing verification with the returned keys. Nothing critical is missing for correct invocation and follow-through.

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?

The input schema has zero parameters and schema description coverage is 100%, so there are no parameter semantics to describe. Per the baseline for zero-parameter tools, this is effectively handled; the description focuses on the workflow and response usage instead.

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 tool's purpose: obtaining pre-signed S3 PUT URLs for uploading large RAW and JPEG files. It distinguishes itself from verify_photo by explaining that it handles the upload mechanism rather than inline bytes, making the resource and action unambiguous.

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?

The description explains when to use this tool — for large files where inlining bytes would hit request-size limits — and outlines the next required step of calling verify_photo afterward. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for an agent to follow the intended flow.

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

delete_portfolioA
DestructiveIdempotent
Inspect

Delete the portfolio and all its items. The verifications and their share links are untouched. Confirm with the user first.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

The description goes beyond the annotations by disclosing exact side effects: deleting 'all its items' while leaving 'verifications and their share links untouched.' It also adds an important behavioral safety instruction to 'Confirm with the user first.' This is consistent with the annotations, which mark the operation as destructive.

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 two short sentences with action and scope front-loaded. It covers the main behavior, exceptions, and a safety step without any 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?

For a destructive, zero-parameter tool with an output schema, the description provides the essential operational knowledge: what gets deleted, what remains, and the required user confirmation. Nothing critical is missing for invoking it correctly.

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?

The tool has zero parameters and the input schema correctly reflects that with an empty properties object. With no parameters, the description does not need to explain parameter meaning, and the 100% schema coverage supports a baseline of 4.

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 names a specific verb and resource: 'Delete the portfolio and all its items.' This clearly distinguishes it from siblings like remove_portfolio_item by stating the full scope of deletion. The additional clause about verifications and share links further clarifies precisely which resources are affected.

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

Usage Guidelines3/5

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

The description provides clear context that this tool should be used to delete an entire portfolio and that the user should be confirmed first. However, it does not explicitly mention alternatives such as remove_portfolio_item for deleting only one item, so the guidance is more implied than explicit.

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

delete_tagA
DestructiveIdempotent
Inspect

Delete a tag (by name or tag id) from the account's vocabulary and detach it from every verification. The verifications themselves are untouched.

NameRequiredDescriptionDefault
tagYesTag name (case-insensitive) or tag id.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The description goes beyond the annotations by explicitly stating that the tag is detached from every verification and that the verifications themselves are untouched, providing clear side-effect information.

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 concise and well-structured, using two clear sentences to convey the primary action and the important side effect without unnecessary detail.

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 simple deletion tool with one parameter, the description provides sufficient context about what is deleted, what happens to related entities, and what is not affected, making it complete for an agent to use.

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?

The only parameter 'tag' is fully described with its type (string), accepted formats (name or id), and case-insensitivity, which adds meaningful semantic detail beyond the schema.

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 (delete) and the resource (a tag from the account's vocabulary), and distinguishes it from other tag-related operations like update_tag or remove_verification_tag by specifying it also detaches the tag from every verification.

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?

While it doesn't explicitly compare itself to alternatives, the description implies when to use it (to permanently remove a tag from the account vocabulary) and clarifies side effects on verifications, which helps an agent select it over related tools.

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

delete_verification_commentA
DestructiveIdempotent
Inspect

Delete a comment. Allowed for its author and for admins of the account.

NameRequiredDescriptionDefault
comment_idYesComment id as returned by list_verification_comments or add_verification_comment.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description goes beyond the annotations by disclosing an authorization constraint (author or admin only), which is a behavioral aspect not covered by the readOnlyHint or destructiveHint. It adds useful context without contradicting the annotations.

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 concise and to the point, consisting of two short sentences with no unnecessary words or redundant information. It efficiently conveys the core action and a key constraint.

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

Completeness4/5

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

Given the presence of an output schema and annotations that cover destructive behavior, the description is adequately complete for a delete operation. It adds the important authorization detail, making it sufficient for an agent to understand the tool's purpose and context.

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?

Both parameters (comment_id and verification_id) are described in the schema with references to related tools. The description itself does not add additional semantic information beyond what the schema already provides, so the baseline of 3 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 tool's function: 'Delete a comment.' It is specific and unambiguous, and distinguishes it from sibling tools like add_verification_comment or update_verification_comment by indicating it is for deletion.

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

Usage Guidelines3/5

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

The description provides implicit usage guidance by specifying that deletion is allowed only for the author or admins, but it does not explicitly contrast with alternatives or state when to choose this tool over others. The context is clear from the sibling tools, but explicit guidance is missing.

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

get_account_usageA
Read-onlyIdempotent
Inspect

Get the authenticated account's monthly verification quota: plan, used, limit, and remaining. Call this before verify_photo to check the free-tier allowance.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds useful behavioral context: the quota is monthly, tied to the authenticated account, and includes free-tier allowance semantics. No contradiction with annotations.

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?

Two sentences with no filler. The first sentence states the operation and its key outputs; the second provides a direct, actionable usage guideline. Every word earns its place.

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 parameterless read-only tool with an output schema and full annotation coverage, this description is complete. It states what the tool returns, who it applies to (authenticated account), and when to call it. Nothing essential is missing.

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?

The tool has zero parameters and 100% schema coverage, so the baseline of 4 applies. The description adds no parameter-specific details because there are none to add, and it appropriately focuses on the returned quota information.

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 states a specific verb ('Get') and resource: the authenticated account's monthly verification quota, explicitly listing the returned fields (plan, used, limit, remaining). It also names the exact use case related to verify_photo, making it clearly distinguishable from sibling tools.

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?

The description tells the agent when to call this tool: 'Call this before verify_photo to check the free-tier allowance.' This is clear context and links to a concrete precondition. It doesn't explicitly mention exclusions or alternatives, but none are necessary given the tool's unique role.

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

get_listingA
Read-onlyIdempotent
Inspect

Fetch a marketplace listing by id: title, description, per-license pricing, terms, and sales totals. There is no public directory — you must know the listing UUID.

NameRequiredDescriptionDefault
listing_idYesMarketplace listing id (UUID).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already declare this as read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond annotations by stating the access constraint ('no public directory') and what data the caller can expect. No contradictions with annotations exist.

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?

Two tight sentences with no filler. The core purpose and returned fields are front-loaded, and the access constraint is stated efficiently in the second sentence.

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 one-parameter read-only tool with a rich output schema and clear annotations, the description is fully adequate. It specifies the input requirement, the data returned, and the key constraint, leaving nothing essential unexplained.

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%, with the parameter already documented as a marketplace listing UUID. The description reinforces that the UUID must be known in advance, but adds little new meaning beyond the schema for the single parameter.

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 operation ('Fetch a marketplace listing by id') and names the key returned fields: title, description, per-license pricing, terms, and sales totals. This makes the tool's purpose specific and distinguishable from sibling tools like list_my_listings or get_portfolio.

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?

The description provides clear usage context by explaining that there is no public directory and the caller must know the listing UUID. This tells the agent when it can and cannot use the tool, though it does not explicitly name alternatives for discovering listings.

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

get_portfolioA
Read-onlyIdempotent
Inspect

Get the account's verified portfolio: slug, public URL, published state, and every item with its title, position and whether it is publicly shared. A portfolio is a public page of verified photos (paid plans).

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the read-only and idempotent annotations, the description adds that portfolios are for verified photos on paid plans, implying a potential requirement/failure mode. It also describes the return content. However, it does not mention error conditions or edge cases, but the annotations already cover the core safety traits.

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 concise and well-structured, with two clear sentences: one stating the action and return fields, and one providing contextual detail about the portfolio's nature. No unnecessary verbosity.

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?

The description fully explains what the tool returns (slug, public URL, published state, and item details) and adds context about paid plans and verified photos. Even without an output schema, an agent would understand the expected data shape and purpose.

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?

The tool has no parameters, so schema coverage is effectively 100%. The baseline is 3, and the description adds no parameter-specific details because none exist. This 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 tool retrieves the account's verified portfolio and lists the key fields returned (slug, public URL, published state, and portfolio items with title, position, and shared status). This makes the purpose specific and distinct from generic listing tools.

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 does not explicitly differentiate this tool from siblings like get_verification or list_my_listings. It mentions it's for the account's portfolio, but there is no direct guidance on when to prefer this over alternatives. This is a clear gap given the large sibling set.

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

get_psd_export_statusA
Read-onlyIdempotent
Inspect

Poll the state of a verification's PSD export: status (pending|queued|in_progress|completed|failed), file size, canvas dimensions, downloads used, and download expiry.

NameRequiredDescriptionDefault
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

The readOnlyHint and idempotentHint annotations already indicate no side effects, and the description adds transparency about the returned data (status, file size, canvas dimensions, downloads used, expiry). It does not contradict the annotations and gives a clear picture of the tool's behavior.

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 a single, focused sentence that front-loads the action and resource, then compactly lists the returned fields. There is no redundant or extraneous wording.

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 simple read-only polling tool with one well-documented parameter and an output schema, the description is complete. It specifies what statuses to expect and what data is returned, and the sibling list provides the related create_psd_export context.

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?

The schema fully documents the single verification_id parameter, including its UUID type and origin, so the description does not need to add much. The tool description itself adds no further parameter detail, matching the baseline for high schema coverage.

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 a specific action ('Poll the state') and a specific resource ('a verification's PSD export'), which distinguishes it from sibling tools like create_psd_export and get_verification. It also lists the key output fields, so an agent knows exactly what this tool provides.

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

Usage Guidelines3/5

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

The word 'Poll' implies this should be used after requesting an export, but the description does not explicitly mention create_psd_export or state when to prefer this over get_verification. Usage guidance is implied rather than explicit.

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

get_verificationA
Read-onlyIdempotent
Inspect

Retrieve a verification by id: processing status and per-algorithm authenticity results. Completed single-image (image_only) verifications also include a verdict and a structured evidence_report with per-check findings and coverage. While the analysis is still running (status pending, queued or in_progress) the call waits for it, up to wait_seconds (default and maximum 40; pass 0 to return immediately), and answers as soon as it completes. A non-final response includes waited_seconds, expected_wait and next_step: call again and keep calling until status is completed or failed. Analysis takes from about a minute to 10 minutes or more, so expect several calls. Under heavy load the server may skip the wait and answer at once; the status is still correct, just call again. Scoped to the caller's account.

NameRequiredDescriptionDefault
wait_secondsNoSeconds to wait for a running analysis before answering (0-40, default 40; values above 40 are capped). The call returns early as soon as the verification completes, and immediately when it is already completed or failed. 0 disables waiting.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing wait behavior, wait_seconds semantics, early-return conditions under heavy load, the non-final response fields (waited_seconds, expected_wait, next_step), and the range of possible statuses. This is exactly the behavioral context an agent needs to poll correctly.

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 dense but every sentence earns its place: result scope, completion extras, wait behavior, polling loop, duration expectations, load behavior, and account scoping. It is front-loaded with the core purpose and then expands into operational details.

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 read-only polling tool with an output schema, the description covers the full invocation lifecycle: what to expect initially, how long to wait, what fields indicate non-completion, when to call again, and how to handle server-side wait skipping. Nothing needed for correct usage is missing.

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 useful context on top: it explains what wait_seconds does in practice, how returning early works, and what a non-final response contains. This supplements the schema without repeating it.

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 description names a specific verb and resource ('Retrieve a verification by id') and explains what the response contains (status, per-algorithm results, verdict for completed image_only verifications). It is clearly distinct from list_verifications by requiring a verification_id, but it does not explicitly name or contrast a sibling tool.

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?

Provides explicit polling guidance: call again and keep calling until status is completed or failed, expect several calls because analysis takes 1-10 minutes, and handle early returns under load. It does not explicitly say when to use this tool versus listing or creating verifications, but the polling workflow is well covered.

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

get_verification_shareA
Read-onlyIdempotent
Inspect

Get the current sharing configuration (access type, share URL, invited emails) for a verification.

NameRequiredDescriptionDefault
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

The description states it 'gets' the configuration, indicating no side effects. This aligns with annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false). It adds a bit of context by enumerating the returned data, but does not go beyond the annotations in describing effects.

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 a single, clear sentence that directly states the tool's function without extraneous detail. It is concise and well-structured.

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?

The description specifies exactly what the response will contain (access type, share URL, invited emails), which is sufficient even though the output schema is not shown. It provides all necessary context for the tool's use.

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?

The only parameter verification_id is well-described both in the schema and the description, including its type (UUID) and how it can be obtained (from verify_photo, verify_content_credentials, or list_verifications). This provides complete context for the parameter.

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 tool retrieves the current sharing configuration of a verification, specifying the components (access type, share URL, invited emails). This distinguishes it from sibling tools like share_verification and unshare_verification which modify sharing settings, and get_verification which retrieves verification details.

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?

The description implies a read-only usage for inspecting sharing settings, which contrasts with the modifying siblings. However, it does not explicitly say 'use this instead of share_verification' or provide conditional guidance, so it lacks an explicit when-to-use statement.

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

list_my_listingsA
Read-onlyIdempotent
Inspect

List the marketplace listings owned by your account (with pricing and sales totals).

NameRequiredDescriptionDefault
limitNoPage size, 1-100.
offsetNoNumber of listings to skip, for paging.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

The description accurately reflects the read-only nature of the operation, consistent with the annotations (readOnlyHint, idempotentHint, destructiveHint). It also adds behavioral detail about the response, mentioning pricing and sales totals, which is not fully covered by the annotations alone.

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 a single, concise sentence with no redundant phrasing. It front-loads the primary purpose and includes relevant output detail without wasting words.

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 simple paginated listing operation with an output schema and clear annotations, the description provides sufficient context. It explains the scope (owned listings) and output highlights (pricing, sales totals), making it complete without needing extra prose.

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?

Both parameters (limit and offset) have schema descriptions, achieving 100% coverage. The tool description adds no extra meaning beyond the schema; the parameter descriptions are standard pagination text and the bounds are already expressed in the schema.

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 tool lists marketplace listings owned by the account, using the specific verb 'List' and identifying the resource and scope. It distinguishes itself from sibling tools like get_listing by focusing on owned listings and including pricing and sales totals.

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

Usage Guidelines3/5

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

The description implies usage for retrieving one's own listings, but it does not explicitly reference alternatives or conditions for choosing this tool over others. No direct guidance is given for when to use list_my_listings versus get_listing or other list tools.

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

list_tagsA
Read-onlyIdempotent
Inspect

List the account's tag vocabulary: id, name, colour and how many verifications carry each tag. Tags are assigned in the web app or via PUT /v1/verifications/{id}/tags; pass the names to list_verifications' tags filter.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds useful behavioral context by specifying it returns an account-level vocabulary with per-tag verification counts and noting how tags get assigned, without contradicting the annotations.

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?

Two sentences with no filler; the core purpose and return fields are front-loaded, and the second sentence efficiently provides provenance and downstream usage.

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 zero-parameter read-only tool with an output schema and full annotations, the description supplies everything needed to invoke it correctly, including what the result is and how to use it.

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?

The tool has zero parameters, so the schema leaves nothing to explain; per the rubric the baseline is 4. The description's mention of passing names to list_verifications is related downstream context rather than parameter documentation.

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 states a specific verb ('List') and resource ('the account's tag vocabulary') and enumerates the returned fields (id, name, colour, verification counts). This clearly distinguishes it from sibling tag operations like update_tag and delete_tag.

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?

It gives clear context for when to use the tool: to fetch the tag vocabulary and feed names into list_verifications' tags filter. It does not explicitly state when not to use it or name alternatives, so it falls short of a 5.

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

list_verification_commentsA
Read-onlyIdempotent
Inspect

List the internal comments on a verification you own, oldest first, with author names. Comments are private notes visible to the owning account only.

NameRequiredDescriptionDefault
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds that results are ordered oldest first, include author names, and are private to the owning account, which are meaningful behavioral details beyond the annotations.

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 two concise sentences with no redundancy. It efficiently conveys the action, ordering, author visibility, and privacy scope without unnecessary details.

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

Completeness4/5

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

The description provides sufficient context about ordering, author names, and privacy. Since an output schema exists (though not shown), return format is not required in the description. The tool is simple with one parameter, and the description covers the essential aspects for correct invocation.

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?

The schema fully describes verification_id with examples of where it comes from (verify_photo, verify_content_credentials, or list_verifications). The description adds that the verification must be one you own, an additional semantic constraint not present in the schema.

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 (list), the resource (internal comments on a verification), the ordering (oldest first), and the inclusion of author names. It distinguishes from sibling tools like add_verification_comment, delete_verification_comment, and update_verification_comment by focusing on listing.

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

Usage Guidelines3/5

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

The description specifies the condition 'on a verification you own' and notes that comments are private notes, which implies when to use it. However, it does not explicitly compare with alternative retrieval methods like get_verification, leaving some ambiguity about when to choose this over others.

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

list_verificationsA
Read-onlyIdempotent
Inspect

List the account's verifications, most recent first. Optional filters: status (pending|queued|in_progress|completed|failed), result (true=authentic, false=not), tags (list of tag names, case-insensitive) and tag_match ('all' = every listed tag must be on the verification, the default; 'any' = at least one). Use list_tags to discover names.

NameRequiredDescriptionDefault
sizeNoPage size, 1-100.
tagsNoOnly verifications carrying these tag names (case-insensitive).
offsetNoNumber of verifications to skip, for paging.
resultNotrue: only verifications judged authentic; false: only those that were not.
statusNoOnly verifications in this processing status.
tag_matchNo'all': every listed tag must be present; 'any': at least one.all

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description need not repeat those. It adds behavioral context beyond the schema: ordering ('most recent first'), filter semantics (result true/false, tag_match all/any), and case-insensitive tags. No contradictions with annotations.

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 two sentences, with the primary purpose and ordering front-loaded. Every sentence earns its place: the first states what it does, the second covers filters and a prerequisite pointer. No filler or repetition.

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?

Given the output schema exists and annotations cover safety, the description covers all essential aspects: purpose, filters, ordering, and a pointer to a sibling tool for tag discovery. Pagination is handled by schema parameters, and the read-only/idempotent nature is in annotations. Nothing critical is missing.

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 description coverage is 100%, so parameters are documented there, but the description adds semantic depth: it clarifies 'result' (true=authentic, false=not), explains 'tag_match' defaults and meanings, and notes case-insensitivity for tags. This goes beyond the schema's basic descriptions.

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 states a specific verb ('List'), resource ('verifications'), and scope ('the account's'), with ordering ('most recent first'). This clearly differentiates it from siblings like get_verification (single) and list_verification_comments (comments), leaving no ambiguity about what the tool does.

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?

It provides a clear usage context (listing with filters) and a specific pointer: 'Use list_tags to discover names.' While it does not explicitly name alternatives like get_verification, the purpose and filters make the intended use evident, and the tag discovery hint is a concrete usage guideline.

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

remove_portfolio_itemA
DestructiveIdempotent
Inspect

Remove a verification from the portfolio. Its public share link stays active; call unshare_verification as well if the user wants it private again.

NameRequiredDescriptionDefault
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds critical behavioral context beyond annotations: the public share link remains active after removal, and unshare_verification is needed to revoke it. It doesn't describe auth or rate limits, but for a simple mutation the side-effect disclosure is valuable.

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?

Two sentences with zero waste. The primary action is front-loaded, and the important caveat about the share link follows immediately. Every sentence earns its place.

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

Completeness4/5

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

Given a simple removal tool with an output schema, full parameter documentation, and annotations covering safety, the description supplies the key missing side-effect information (share link persistence). It could be slightly more complete by noting what happens to the verification itself or portfolio ordering, but it covers the essential behavioral surprise.

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?

There is one parameter, verification_id, with 100% schema description coverage. The schema already explains that it is a UUID returned by verify_photo, verify_content_credentials, or list_verifications. The description adds no further parameter semantics, which is acceptable given the high coverage – baseline 3 applies.

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 description states a specific verb and resource: 'Remove a verification from the portfolio.' It distinguishes the action from portfolio-level deletion and hints at a related sibling (unshare_verification), though it doesn't explicitly contrast with all siblings like update_portfolio_item or delete_portfolio.

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?

It gives clear guidance on when to use this tool and a conditional follow-up: call unshare_verification if the share link should be made private. However, it does not explicitly state when not to use this tool or name alternatives beyond unshare_verification.

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

remove_verification_tagA
DestructiveIdempotent
Inspect

Remove one tag (by name or tag id) from a verification. The tag stays in the account's vocabulary. Returns the remaining tags.

NameRequiredDescriptionDefault
tagYesTag name (case-insensitive) or tag id.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds the crucial blast-radius detail that the tag itself survives in the account vocabulary — resolving the main fear a destructive-hinted tool raises. It also discloses the response shape ('Returns the remaining tags'), though it omits what happens when the tag is not attached.

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?

Three short sentences, front-loaded with the action, then the key side-effect caveat, then the return. Nothing is redundant or padded.

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

Completeness4/5

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

For a two-parameter, well-annotated tool with an output schema, the description covers action, side effect, and return adequately. The remaining gap is how it relates to sibling tag tools (add/set/delete_tag) and behavior on a missing tag, which is minor given idempotentHint.

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 both parameters are fully documented in the schema, including the name-or-id flexibility and the UUID source. The description's 'by name or tag id' merely echoes that, adding no new format or resolution detail — baseline 3.

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?

States a specific verb and resource ('Remove one tag ... from a verification') with explicit scope ('one tag', 'by name or tag id'). The clause 'The tag stays in the account's vocabulary' implicitly separates it from delete_tag, though no sibling is named outright.

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

Usage Guidelines3/5

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

Usage is only implied by the singular scope: this removes a single association, as opposed to add_verification_tags or set_verification_tags which are not mentioned. No explicit when-to-use/when-not guidance or prerequisites are given.

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

reorder_portfolio_itemsA
Idempotent
Inspect

Set the display order. verification_ids must contain every current item exactly once, in the desired order (first = shown first).

NameRequiredDescriptionDefault
verification_idsYesEvery current item's verification id, in the desired display order.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description adds that verification_ids must contain every current item exactly once, which is a key behavioral constraint not fully captured by the readOnly/idempotent annotations. It does not describe error handling or side effects beyond the order specification.

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 concise, with no unnecessary words. It clearly states the action and the required input format in two short sentences.

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

Completeness4/5

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

For a simple reorder operation, the description is sufficient. It explains the requirement and order interpretation. It does not need details like permissions or return formats given the tool's simplicity and existing annotations.

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?

The parameter description in the schema already fully explains that it expects every current verification id in desired order. The tool description repeats this information without adding extra insight, so no additional value beyond schema coverage.

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?

Clearly states it sets the display order for portfolio items, which is a specific action distinct from siblings like add or remove. The verb 'Set' and resource 'display order' are explicit.

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

Usage Guidelines3/5

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

Does not explicitly mention when to use this tool over alternatives like add_portfolio_item or update_portfolio_item. It provides the requirement that all items must be included, which implies a full reorder, but lacks explicit when-not guidance.

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

set_verification_tagsA
DestructiveIdempotent
Inspect

Replace the tags on a verification with exactly this list (empty list clears them). Unknown names are created in the account's vocabulary; matching is case-insensitive. Names are 1-40 characters, no commas, at most 20 per verification. Returns the verification's tags after the change.

NameRequiredDescriptionDefault
tagsYesTag names, 1-40 characters each, no commas. Matching is case-insensitive; unknown names are created.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true and idempotentHint=true; the description adds genuinely new context: unknown names are auto-created in the account vocabulary, matching is case-insensitive, and there is a 20-tag cap. It does not mention permissions or what happens to concurrently-edited tags, but the extra behavioral detail is substantial.

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?

Four tight sentences, front-loaded with the core replace semantics, then constraints, then return value. No filler and every clause carries operational information.

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?

A destructive, idempotent mutation tool with an output schema is fully covered: replace behavior, side effects (tag creation), limits, and the return value are all stated. Nothing an agent needs to invoke it safely is missing.

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 baseline is 3, but the description restates the constraint envelope (1-40 chars, no commas, max 20 per verification) in one place, giving the agent validation rules it might otherwise have to reconstruct. It does not explain the verification_id source (the schema does).

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?

States a specific verb (replace) and resource (tags on a verification) with exact-replacement semantics, which cleanly separates it from add_verification_tags and remove_verification_tag in the sibling list. An agent can pick it without comparing schemas.

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?

The parenthetical '(empty list clears them)' makes the replace-vs-append distinction explicit, which is the key decision when choosing between this and the add/remove siblings. It never names those alternatives directly, so it stops short of a 5.

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

share_verificationA
DestructiveIdempotent
Inspect

Enable or update sharing for a verification you own. access_type is 'anyone_with_link' (public URL) or 'restricted' (only invited emails). Optionally pass invite_emails to grant access. Returns the share URL and invited emails. Anonymous verifications can't be shared.

NameRequiredDescriptionDefault
access_typeYes'anyone_with_link' for a public link, 'restricted' for invited email addresses only.
invite_emailsNoEmail addresses to grant access; used with 'restricted'.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, and the description adds real context on top: the ownership requirement, the anonymity restriction, and that 'anyone_with_link' produces a public URL (the actual exposure risk). It doesn't spell out revocation or permission requirements, but the privacy implication of the public mode is disclosed.

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?

Four short sentences, no filler, with the core action and the access modes front-loaded ahead of the optional parameter and the constraint.

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

Completeness4/5

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

An output schema exists and the description notes the return values (share URL and invited emails), so return detail isn't required. Ownership and anonymity constraints are covered; only revocation/undo behavior is unstated.

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%, so both access_type values and the restricted-only use of invite_emails are already documented in the schema; the description largely restates the enum meanings. It adds only marginal framing ('optionally pass invite_emails to grant access'), making the baseline 3 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?

States a specific verb+resource (enable/update sharing for a verification) plus a scope constraint (verification you own). It is clearly distinguishable from siblings like unshare_verification and get_verification_share.

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?

Explains the two access modes and that invite_emails is optional for granting access, and gives an explicit exclusion (anonymous verifications can't be shared). It doesn't explicitly name unshare_verification/get_verification_share as alternatives for related tasks, so it falls short of a full routing statement.

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

unshare_verificationA
DestructiveIdempotent
Inspect

Disable sharing for a verification, making it private and invalidating its share link.

NameRequiredDescriptionDefault
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description explicitly discloses that sharing is disabled, privacy is restored, and the share link becomes invalid, which aligns with and enriches the destructiveHint annotation. It does not mention potential edge cases (e.g., whether already-fetched data remains accessible), but for a single-parameter unshare operation the stated side effects are sufficiently transparent.

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 a single, compact sentence that directly states the action and its consequences without any filler or redundant phrasing. It is well-structured and immediately scannable for an agent selecting a tool.

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?

Given the tool's simplicity—one required parameter, a clear action, and an output schema that does not need explanation—the description provides all necessary context for correct invocation. An agent can confidently call this tool based on the stated behavior alone.

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?

The schema provides complete coverage for the single parameter, including its type, title, and a description that explains the expected UUID format and lists example source tools. The tool description adds no extra semantic detail beyond what is already in the schema, so the parameter semantics meet the baseline without enhancement.

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 uses a specific verb ('Disable sharing') and clearly states the resource ('a verification') and the two resulting effects: making it private and invalidating its share link. This directly distinguishes the tool from its sibling 'share_verification' and leaves no ambiguity about its primary function.

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?

The description clearly implies when to use the tool—whenever a previously shared verification needs to be unshared and its link invalidated. It lacks an explicit 'Use this tool when...' or a direct contrast with alternatives, but the action and consequence are so unambiguous that an agent can reliably infer the appropriate usage context.

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

update_portfolioA
DestructiveIdempotent
Inspect

Change the portfolio's display_name, tagline, website_url or slug, or publish/unpublish it with published=true/false. Pass an empty string to clear tagline or website_url; omit fields to leave them. The slug can change at most 3 times per 30 days. Unpublishing always works; other changes need a paid plan.

NameRequiredDescriptionDefault
slugNoNew public URL path; see create_portfolio for the rules.
taglineNoShort line under the name, max 160 characters. Empty string clears it.
publishedNotrue publishes the page, false takes it offline.
website_urlNoPhotographer's website, an https URL of max 200 characters. Empty string clears it.
display_nameNoNew name, 1-80 characters.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: a rate limit on slug changes (3 per 30 days), a paid-plan requirement for most changes, and the exception that unpublishing always works. Clearing behavior via empty string partially covers the destructiveHint=true risk, though it doesn't warn about slug-change breaking existing links.

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?

Four tight sentences, each carrying a distinct rule (what's editable, clearing, rate limit, plan/exception). Front-loaded with the action and fields, trailing sentences add constraints and nothing is repeated.

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

Completeness4/5

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

Output schema and rich annotations cover return shape and safety profile, and the description supplies the operational constraints an agent needs (limits, plan gate). Minor gap: no note on what happens to an existing slug's links when it changes.

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 already 100%, so baseline is 3, but the description adds the cross-cutting semantic that omitted fields are left unchanged and that slug is governed by create_portfolio's rules. That is meaning the schema does not state.

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?

Names the resource (portfolio) and the exact mutable surface: display_name, tagline, website_url, slug, and publish state. An agent can distinguish this from create_portfolio, update_portfolio_item, and delete_portfolio without opening any schema.

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?

Explains the mutation semantics clearly ('omit fields to leave them', empty string clears) and flags the paid-plan gate and the unpublish exception, which is real routing guidance. It stops short of naming a sibling alternative (e.g. use delete_portfolio to remove, or update_portfolio_item for items), so it is not a 5.

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

update_portfolio_itemB
DestructiveIdempotent
Inspect

Set an item's title (max 80 characters) or clear it with an empty string.

NameRequiredDescriptionDefault
titleYesCaption for the image, max 80 characters. Empty string clears it.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already flag destructiveHint=true, idempotentHint=true and readOnly=false, so the safety profile is covered. The description adds the useful detail that passing an empty string wipes the title, which explains the destructive hint, but it says nothing about permissions, ownership, or what happens with an invalid/expired verification_id.

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?

A single front-loaded sentence with no filler; the constraint and the edge case are packed into the one sentence that earns its place.

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?

An output schema and annotations exist, so the description needn't explain returns or safety. However, for a mutation tool whose only identifying parameter is a verification_id, the description never explains how a portfolio item maps to a verification or what authorization is needed, leaving a real conceptual gap.

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% and both parameters document themselves, including the 80-character limit and empty-string clearing. The description merely restates the schema's title semantics and adds no new meaning for verification_id, so the baseline of 3 applies.

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?

States a specific verb ('Set') and field ('title'), including a constraint (max 80 chars) and the clearing behavior. The resource is only implicitly the portfolio item's title, and the description never connects 'item' to the required verification_id, but an agent can still tell what the tool does and distinguish it from update_portfolio.

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?

No guidance on when to use this instead of update_portfolio, add_portfolio_item, or remove_portfolio_item, and no prerequisites or exclusions are stated. Usage must be inferred entirely from the tool name.

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

update_tagA
DestructiveIdempotent
Inspect

Rename and/or recolour a tag in the account's vocabulary (by name or tag id). A rename shows on every verification carrying it. color is '#rrggbb'; pass an empty string to clear it. Omit a field to leave it unchanged.

NameRequiredDescriptionDefault
tagYesTag name (case-insensitive) or tag id.
nameNoNew tag name, 1-40 characters, no commas.
colorNo'#rrggbb' colour. Empty string clears it.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the description need not restate safety. It adds useful context beyond annotations: a rename propagates to every verification carrying the tag, color format and empty-string clearing, and omission of a field leaves it unchanged. It does not address permissions or error behavior.

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 compact and front-loaded, moving from purpose to impact to parameter details in a single efficient paragraph. Every clause adds operational meaning without 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?

For a simple three-parameter update tool with rich annotations and an output schema, the description covers the key behavioral aspects: rename propagation, color clearing, and partial update semantics. Missing edge cases like tag-not-found or name conflicts are minor and not required to call the tool correctly.

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 schema already documents tag name/id, name constraints, and color format. The description repeats the color format and adds partial-update semantics ('omit a field to leave it unchanged'), but that is largely aligned with the schema's nullable/default fields.

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?

States a specific verb and resource: renaming/recolouring a tag in the account's vocabulary, with lookup by name or tag id. Sibling differentiation is only implicit through the phrase 'account's vocabulary'; no sibling tool is named.

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

Usage Guidelines3/5

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

The description implies the tool is used when renaming or recolouring an existing tag, but it gives no explicit when-to-use/when-not guidance or alternatives such as delete_tag, list_tags, or set_verification_tags. The agent must infer usage from the purpose statement.

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

update_verification_commentA
DestructiveIdempotent
Inspect

Replace the text of a comment the connected user wrote. Marks it as edited; the old text is not kept.

NameRequiredDescriptionDefault
bodyYesComment text, 1-4000 characters.
comment_idYesComment id as returned by list_verification_comments or add_verification_comment.
verification_idYesVerification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Beyond the destructiveHint annotation, the description discloses that the old text is not kept and the comment is marked edited. It also notes the ownership constraint ('connected user wrote'), adding behavioral context.

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?

Two compact sentences with the main verb and object first, followed by relevant constraints and effects. No filler or redundancy.

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

Completeness4/5

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

The description covers the action, ownership constraint, and outcome. With an output schema present and no nested objects, it is sufficiently complete, though it could mention failure cases if the comment isn't owned.

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% and each parameter has a clear description, including how to obtain IDs. The description adds no further parameter-specific meaning, so baseline 3 applies.

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 specifies the action ('Replace the text of a comment'), the resource ('a comment the connected user wrote'), and the effect ('Marks it as edited; the old text is not kept'), which distinguishes it from add/delete comment siblings.

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

Usage Guidelines3/5

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

The usage is implied by 'the connected user wrote' and 'Replace', but it does not explicitly state when to use this over add_verification_comment or delete_verification_comment, nor does it mention exclusions.

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

verify_content_credentialsAInspect

Verify a single image's authenticity when the user asks whether it is genuine, AI-generated, manipulated, or carries Content Credentials, and only the image is available (no RAW camera file). Not for feedback on a photo (composition, editing, colour) or for anything that is not a still image. Checks its embedded Content Credentials (C2PA) for capture provenance and AI-generation flags, and runs advisory forensic screens (error-level analysis, double-JPEG artifacts, EXIF timestamp consistency, editing-software traces, screen recapture). Free: it does not consume your verification quota. Provide the image as an attachment (image_file), inline as image_base64, or — for large files without attachments — call create_verification_upload and pass the returned image_object_key. Returns a verification id at once; the analysis runs in the background and takes from about a minute to 10 minutes or more, so call get_verification with the id repeatedly until status is completed; the completed result includes a structured evidence_report (verdict, per-check findings, coverage). For the strongest forensic check, use verify_photo with a RAW + JPEG pair instead.

NameRequiredDescriptionDefault
image_fileNoThe image (JPEG or PNG) the user attached.
image_base64NoThe image as base64, for files up to a few MB. For larger files call create_verification_upload and pass image_object_key instead.
image_filenameNoOriginal image filename with extension. Defaults to the attachment's own name.upload.jpg
image_object_keyNoObject key returned by create_verification_upload for the image.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

The annotations (all false hints) carry almost no behavioral information, so the description rightly carries the full burden. It discloses the async nature ('analysis runs in the background and takes from about a minute to 10 minutes or more'), the immediate id return, the required polling pattern via get_verification, the free/quota trait, and the structured evidence_report shape. These are rich behavioral traits beyond what annotations provide.

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 long (roughly 8 sentences) but every sentence earns its place for a tool with async behavior and multiple input modes: purpose, exclusions, checks performed, quota, parameter routing, polling, and alternative. It is front-loaded with purpose and scope. Minor redundancy exists ('carries Content Credentials' and later 'embedded Content Credentials (C2PA)'), but overall density is justified.

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?

Given the complexity (4 parameters, 3 input modes, background execution, output schema present), the description is complete: it covers triggering conditions, exclusions, the forensic checks performed, quota impact, polling instructions, and the verified alternative. Since an output schema exists, detailed return-value documentation is not needed. No significant operational gap remains.

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 genuine cross-parameter meaning by consolidating the three input paths ('attachment (image_file), inline as image_base64, or — for large files without attachments — call create_verification_upload and pass the returned image_object_key'), which helps an agent choose among the four parameters correctly. This exceeds the baseline without duplicating the schema.

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 states a specific verb and resource: 'Verify a single image's authenticity when the user asks whether it is genuine, AI-generated, manipulated, or carries Content Credentials'. It explicitly scopes to single still images with no RAW file, and names the exclusion ('Not for feedback on a photo... or for anything that is not a still image'), clearly distinguishing it from the sibling verify_photo.

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, when-not-to-use, and alternative routing. It specifies the triggering condition (authenticity question, only image available), the exclusion (photo feedback, non-still images), the stronger alternative ('use verify_photo with a RAW + JPEG pair instead'), and the upload alternative (create_verification_upload for large files). Nothing is left to inference.

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

verify_photoAInspect

Verify a photo's authenticity from a RAW camera file and its JPEG export, when the user asks for proof or a check that the photo is a genuine camera capture (not for feedback on the photo itself). Provide the files as attachments (raw_file = the camera RAW such as .CR2/.CR3/.NEF/.ARW/.RAF/.ORF/.DNG, image_file = the exported .jpg/.png), inline as raw_base64 + image_base64 (small files), or — for large files without attachments — call create_verification_upload first and pass the returned raw_object_key + image_object_key. Returns a verification id at once; the analysis runs in the background and takes from about a minute to 10 minutes or more, so call get_verification with the id repeatedly until status is completed. Counts against the monthly quota (free tier: 5/month).

NameRequiredDescriptionDefault
raw_fileNoThe camera RAW file the user attached (.CR2/.CR3/.NEF/.ARW/.RAF/.ORF/.DNG ...); its file_name selects the decoder.
image_fileNoThe JPEG/PNG export of the same shot the user attached; pairs with raw_file.
raw_base64NoThe camera RAW file as base64, for files up to a few MB. For larger files call create_verification_upload and pass raw_object_key instead.
image_base64NoThe JPEG export of the same shot as base64; pairs with raw_base64.
raw_filenameNoOriginal RAW filename with extension, e.g. IMG_1234.CR3; the extension selects the decoder. Defaults to the attachment's own name.upload.raw
image_filenameNoOriginal JPEG filename with extension. Defaults to the attachment's own name.upload.jpg
raw_object_keyNoObject key returned by create_verification_upload for the RAW file.
image_object_keyNoObject key returned by create_verification_upload for the JPEG.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations, it discloses key behavioral traits: the tool returns a verification id immediately, runs analysis in the background for about a minute to 10+ minutes, and requires polling get_verification until completion. It also transparently states that calls count against a monthly quota, with free tier at 5/month. No contradiction with the annotations.

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 dense but efficient: purpose and exclusions first, then input routing, then async behavior and quota impact. Every sentence carries operational value, with no filler or repetition of schema details.

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 an 8-parameter asynchronous tool, the description covers all essential operational aspects: when to use, what inputs to provide, how to route large files, how to retrieve the result, and cost/quota implications. An output schema exists, so the description does not need to explain return values.

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?

Although schema coverage is 100%, the description adds strategic meaning by grouping parameters into three clear input modes: attachments (raw_file/image_file), inline base64 for small files, and object keys from create_verification_upload for large files. It also clarifies pairing requirements and size thresholds that the raw schema alone does not convey at a decision level.

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 opens with a specific verb and resource: 'Verify a photo's authenticity from a RAW camera file and its JPEG export.' It also scopes the tool to requests for proof or genuineness checks and explicitly excludes feedback on the photo itself, making its role unmistakable.

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?

The description clearly states when to use the tool ('when the user asks for proof or a check that the photo is a genuine camera capture') and when not to use it ('not for feedback on the photo itself'). It also gives concrete input-mode guidance, including when to call create_verification_upload for large files. It does not explicitly contrast sibling verify_content_credentials, though the RAW+JPEG pairing makes the intended use clear.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedget_verification1 field changed
      • addedInput schema / properties / wait_seconds
        Added value: +{
        +  "default": 40,
        +  "description": "Seconds to wait for a running analysis before answering (0-40, default 40; values above 40 are capped). The call returns early as soon as the verification completes, and immediately when it is already completed or failed. 0 disables waiting.",
        +  "title": "Wait Seconds",
        +  "type": "integer"
        +}
  2. 2 tool updates
    • Changedverify_content_credentials2 fields changed
      • addedInput schema / properties / image_file
        Added value: +{
        +  "default": null,
        +  "description": "The image (JPEG or PNG) the user attached.",
        +  "properties": {
        +    "download_url": {
        +      "description": "URL the file can be downloaded from.",
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "description": "The client's identifier for the file.",
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "description": "Original file name, when known.",
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "description": "MIME type, when known.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / image_filename / description
        Previous value: -"Original image filename with extension."New value: +"Original image filename with extension. Defaults to the attachment's own name."
    • Changedverify_photo4 fields changed
      • addedInput schema / properties / image_file
        Added value: +{
        +  "default": null,
        +  "description": "The JPEG/PNG export of the same shot the user attached; pairs with raw_file.",
        +  "properties": {
        +    "download_url": {
        +      "description": "URL the file can be downloaded from.",
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "description": "The client's identifier for the file.",
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "description": "Original file name, when known.",
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "description": "MIME type, when known.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / image_filename / description
        Previous value: -"Original JPEG filename with extension."New value: +"Original JPEG filename with extension. Defaults to the attachment's own name."
      • addedInput schema / properties / raw_file
        Added value: +{
        +  "default": null,
        +  "description": "The camera RAW file the user attached (.CR2/.CR3/.NEF/.ARW/.RAF/.ORF/.DNG ...); its file_name selects the decoder.",
        +  "properties": {
        +    "download_url": {
        +      "description": "URL the file can be downloaded from.",
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "description": "The client's identifier for the file.",
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "description": "Original file name, when known.",
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "description": "MIME type, when known.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / raw_filename / description
        Previous value: -"Original RAW filename with extension, e.g. IMG_1234.CR3; the extension selects the decoder."New value: +"Original RAW filename with extension, e.g. IMG_1234.CR3; the extension selects the decoder. Defaults to the attachment's own name."
  3. 27 tool updates
    • Changedadd_portfolio_item2 fields changed
      • addedInput schema / properties / title / description
        Added value: +"Caption for the image, max 80 characters. Empty string clears it."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedadd_verification_comment2 fields changed
      • addedInput schema / properties / body / description
        Added value: +"Comment text, 1-4000 characters."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedadd_verification_tags2 fields changed
      • addedInput schema / properties / tags / description
        Added value: +"Tag names, 1-40 characters each, no commas. Matching is case-insensitive; unknown names are created."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedcreate_portfolio4 fields changed
      • addedInput schema / properties / display_name / description
        Added value: +"Name shown on the portfolio page, 1-80 characters."
      • addedInput schema / properties / slug / description
        Added value: +"Public URL path of the portfolio: 3-30 lowercase letters, digits and single hyphens."
      • addedInput schema / properties / tagline / description
        Added value: +"Short line under the name, max 160 characters. Empty string clears it."
      • addedInput schema / properties / website_url / description
        Added value: +"Photographer's website, an https URL of max 200 characters. Empty string clears it."
    • Addedcreate_psd_export
    • Changeddelete_tag1 field changed
      • addedInput schema / properties / tag / description
        Added value: +"Tag name (case-insensitive) or tag id."
    • Changeddelete_verification_comment2 fields changed
      • addedInput schema / properties / comment_id / description
        Added value: +"Comment id as returned by list_verification_comments or add_verification_comment."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedget_listing1 field changed
      • addedInput schema / properties / listing_id / description
        Added value: +"Marketplace listing id (UUID)."
    • Changedget_psd_export_status1 field changed
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedget_verification1 field changed
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedget_verification_share1 field changed
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedlist_my_listings5 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Page size, 1-100."
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / offset / description
        Added value: +"Number of listings to skip, for paging."
      • addedInput schema / properties / offset / minimum
        Added value: +0
    • Changedlist_verification_comments1 field changed
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedlist_verifications11 fields changed
      • addedInput schema / properties / offset / description
        Added value: +"Number of verifications to skip, for paging."
      • addedInput schema / properties / offset / minimum
        Added value: +0
      • addedInput schema / properties / result / description
        Added value: +"true: only verifications judged authentic; false: only those that were not."
      • addedInput schema / properties / size / description
        Added value: +"Page size, 1-100."
      • addedInput schema / properties / size / maximum
        Added value: +100
      • addedInput schema / properties / size / minimum
        Added value: +1
      • changedInput schema / properties / status / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "pending",
        +      "queued",
        +      "in_progress",
        +      "completed",
        +      "failed"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / status / description
        Added value: +"Only verifications in this processing status."
      • addedInput schema / properties / tag_match / description
        Added value: +"'all': every listed tag must be present; 'any': at least one."
      • addedInput schema / properties / tag_match / enum
        Added value: +[
        +  "all",
        +  "any"
        +]
      • addedInput schema / properties / tags / description
        Added value: +"Only verifications carrying these tag names (case-insensitive)."
    • Changedremove_portfolio_item1 field changed
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedremove_verification_tag2 fields changed
      • addedInput schema / properties / tag / description
        Added value: +"Tag name (case-insensitive) or tag id."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedreorder_portfolio_items1 field changed
      • addedInput schema / properties / verification_ids / description
        Added value: +"Every current item's verification id, in the desired display order."
    • Removedrequest_psd_export
    • Changedset_verification_tags2 fields changed
      • addedInput schema / properties / tags / description
        Added value: +"Tag names, 1-40 characters each, no commas. Matching is case-insensitive; unknown names are created."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedshare_verification4 fields changed
      • addedInput schema / properties / access_type / description
        Added value: +"'anyone_with_link' for a public link, 'restricted' for invited email addresses only."
      • addedInput schema / properties / access_type / enum
        Added value: +[
        +  "anyone_with_link",
        +  "restricted"
        +]
      • addedInput schema / properties / invite_emails / description
        Added value: +"Email addresses to grant access; used with 'restricted'."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedunshare_verification1 field changed
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedupdate_portfolio5 fields changed
      • addedInput schema / properties / display_name / description
        Added value: +"New name, 1-80 characters."
      • addedInput schema / properties / published / description
        Added value: +"true publishes the page, false takes it offline."
      • addedInput schema / properties / slug / description
        Added value: +"New public URL path; see create_portfolio for the rules."
      • addedInput schema / properties / tagline / description
        Added value: +"Short line under the name, max 160 characters. Empty string clears it."
      • addedInput schema / properties / website_url / description
        Added value: +"Photographer's website, an https URL of max 200 characters. Empty string clears it."
    • Changedupdate_portfolio_item2 fields changed
      • addedInput schema / properties / title / description
        Added value: +"Caption for the image, max 80 characters. Empty string clears it."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedupdate_tag3 fields changed
      • addedInput schema / properties / color / description
        Added value: +"'#rrggbb' colour. Empty string clears it."
      • addedInput schema / properties / name / description
        Added value: +"New tag name, 1-40 characters, no commas."
      • addedInput schema / properties / tag / description
        Added value: +"Tag name (case-insensitive) or tag id."
    • Changedupdate_verification_comment3 fields changed
      • addedInput schema / properties / body / description
        Added value: +"Comment text, 1-4000 characters."
      • addedInput schema / properties / comment_id / description
        Added value: +"Comment id as returned by list_verification_comments or add_verification_comment."
      • addedInput schema / properties / verification_id / description
        Added value: +"Verification id (UUID) as returned by verify_photo, verify_content_credentials or list_verifications."
    • Changedverify_content_credentials3 fields changed
      • addedInput schema / properties / image_base64 / description
        Added value: +"The image as base64, for files up to a few MB. For larger files call create_verification_upload and pass image_object_key instead."
      • addedInput schema / properties / image_filename / description
        Added value: +"Original image filename with extension."
      • addedInput schema / properties / image_object_key / description
        Added value: +"Object key returned by create_verification_upload for the image."
    • Changedverify_photo6 fields changed
      • addedInput schema / properties / image_base64 / description
        Added value: +"The JPEG export of the same shot as base64; pairs with raw_base64."
      • addedInput schema / properties / image_filename / description
        Added value: +"Original JPEG filename with extension."
      • addedInput schema / properties / image_object_key / description
        Added value: +"Object key returned by create_verification_upload for the JPEG."
      • addedInput schema / properties / raw_base64 / description
        Added value: +"The camera RAW file as base64, for files up to a few MB. For larger files call create_verification_upload and pass raw_object_key instead."
      • addedInput schema / properties / raw_filename / description
        Added value: +"Original RAW filename with extension, e.g. IMG_1234.CR3; the extension selects the decoder."
      • addedInput schema / properties / raw_object_key / description
        Added value: +"Object key returned by create_verification_upload for the RAW file."
  4. 20 tool updates
    • Addedadd_portfolio_item
    • Addedadd_verification_comment
    • Addedadd_verification_tags
    • Addedcreate_portfolio
    • Addeddelete_portfolio
    • Addeddelete_tag
    • Addeddelete_verification_comment
    • Addedget_portfolio
    • Addedget_upgrade_link
    • Addedlist_verification_comments
    • Addedremove_portfolio_item
    • Addedremove_verification_tag
    • Addedreorder_portfolio_items
    • Addedset_verification_tags
    • Addedupdate_portfolio
    • Addedupdate_portfolio_item
    • Addedupdate_tag
    • Addedupdate_verification_comment
    • Changedverify_content_credentials1 field changed
      • removedInput schema / properties / anonymous_user_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Anonymous User Id"
        -}
    • Changedverify_photo1 field changed
      • removedInput schema / properties / anonymous_user_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Anonymous User Id"
        -}
  5. 2 tool updates
    • Addedlist_tags
    • Changedlist_verifications2 fields changed
      • addedInput schema / properties / tag_match
        Added value: +{
        +  "default": "all",
        +  "title": "Tag Match",
        +  "type": "string"
        +}
      • addedInput schema / properties / tags
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Tags"
        +}
  6. 2 tool updates
    • Addedget_psd_export_status
    • Addedrequest_psd_export
  7. 11 tool updates
    • First observedcreate_verification_upload
    • First observedget_account_usage
    • First observedget_listing
    • First observedget_verification
    • First observedget_verification_share
    • First observedlist_my_listings
    • First observedlist_verifications
    • First observedshare_verification
    • First observedunshare_verification
    • First observedverify_content_credentials
    • First observedverify_photo

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables an agent to determine whether an image is AI-generated, edited, or captured by reading signed C2PA Content Credentials first and falling back to labelled pixel-level forensic heuristics (noise, ELA, spectral, colour, EXIF) only when no manifest exists. Runs fully offline with no API keys or cloud calls, and can report tampering when pixels no longer match a signed hash.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables reading and verifying C2PA Content Credentials from images and videos through both embedded manifests and invisible watermarks. Supports direct filesystem access, URL checking, and provides structured provenance data including creator identity, AI generation info, and content authenticity.
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to analyze images from a URL, local path, or Base64 string and determine whether they are AI-generated, including detection of signatures from Flux, Midjourney, DALL·E, and Stable Diffusion. Also inspects cryptographic C2PA provenance manifests, signing certificate authorities, and camera EXIF metadata without requiring API keys or accounts.
    2
    71 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources