Skip to main content
Glama

Remove things from a photo

remove_objects
Destructive

Takes what description names out of one of the user's photos, paid from their credits, and fills where it was from what is around it; nothing else in the photo changes. Describe it as the user did, in any language (the people behind me, the bin on the left, the sign and the cables): Luala finds every match and removes the ones the words mean. 4 credits for one or two kinds of thing, 5 for three or four; when nothing matches, nothing is charged and the answer says so. Not on a cutout. Pass the price the user agreed to as max_credits: the photo's prices from get_shoot or list_photos name it. If a call to this tool got no answer, it may already have started: check list_photos before calling it again.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "photo_id": "<photo_id>",
      "description": "<description>",
      "max_credits": "<max_credits>"
    },
    "name": "remove_objects"
  }
}

Input Schema

NameRequiredDescriptionDefault
photo_idYes
descriptionYes
max_creditsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructive=true and idempotent=false; the description adds the actual consequences: inpainting-style fill, no other pixels changing, tiered credit costs (4 for one or two kinds, 5 for three or four), and no charge when nothing matches. The retry warning ('it may already have started: check list_photos before calling it again') is exactly the operational context a non-idempotent, destructive tool needs, and it is consistent 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.

Conciseness4/5

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

Purpose and consequence are front-loaded, and every clause carries information (language freedom, credit tiers, no-match charging, cutout exclusion, retry safety). It is a single semicolon-chained block, though, so the pricing and failure-recovery guidance would scan faster as separated 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 destructive, non-idempotent tool with no output schema, the definition covers cost, no-match behavior, eligibility, and retry safe practice. The remaining gap is what a successful call actually returns (a new photo id? an in-place edit? an async job?), which the agent must discover elsewhere.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden and does so for all three parameters: description is framed as free-form, any-language phrasing of what to remove with worked examples; max_credits is tied to the user-agreed price sourced from get_shoot or list_photos; and photo_id is scoped to 'one of the user's photos' with the cutout restriction. This is meaning well beyond the bare integer/string types 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 states a concrete verb and resource ('takes what description names out of one of the user's photos') plus the resulting behavior ('fills where it was from what is around it; nothing else in the photo changes'). That distinguishes it clearly from siblings such as remove_background, blur_faces, or edit, which act on different regions or with different mechanisms.

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 gives an explicit exclusion ('Not on a cutout'), an explicit instruction for the pricing prerequisite (take the price from get_shoot or list_photos and pass it as max_credits), and a recovery path for a call with no answer (check list_photos before retrying). These name siblings and the conditions under which to consult them, not just the tool itself.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources