Skip to main content
Glama
SightRadar MCP Server

SightRadar MCP Server

Official

There are two ways to connect. Both expose the same tools.

Remote (hosted)

Local (this package)

URL / command

https://mcp.sightradar.com/mcp

npx -y sightradar-mcp

Sign-in

SightRadar account (email + password, Google or email link), or an API key as a Bearer token

SIGHTRADAR_API_KEY

Install

Nothing

Node.js 20+

Images from your computer

No (URLs or base64)

Yes, file_path

Add https://mcp.sightradar.com/mcp as a custom connector. On first use your browser opens sightradar.com, you sign in and choose what the assistant may do. Each connection gets its own revocable key, listed under API keys as MCP: <app name>.

  • Claude (claude.ai, Desktop): Settings → Connectors → Add custom connector → paste the URL.

  • ChatGPT: Settings → Apps & Connectors → Create → paste the URL, authentication OAuth.

  • Claude Code: claude mcp add --transport http sightradar https://mcp.sightradar.com/mcp

  • Cursor (~/.cursor/mcp.json) / VS Code (.vscode/mcp.json, key servers):

    { "mcpServers": { "sightradar": { "url": "https://mcp.sightradar.com/mcp" } } }

Prefer an API key? Send it as a header instead of signing in:

{
  "mcpServers": {
    "sightradar": {
      "url": "https://mcp.sightradar.com/mcp",
      "headers": { "Authorization": "Bearer frs_your_key" }
    }
  }
}

Related MCP server: io.github.Dongwu259/photo-s

Local server

Create an API key at sightradar.com/dashboard/keys, then:

{
  "mcpServers": {
    "sightradar": {
      "command": "npx",
      "args": ["-y", "sightradar-mcp"],
      "env": { "SIGHTRADAR_API_KEY": "frs_your_key" }
    }
  }
}

That block works in Claude Desktop (claude_desktop_config.json), Cursor, Windsurf, Cline and most clients. Claude Code:

claude mcp add sightradar --env SIGHTRADAR_API_KEY=frs_your_key -- npx -y sightradar-mcp

Variable

Default

SIGHTRADAR_API_KEY

(required)

API key

SIGHTRADAR_SCOPES

read,search,write,delete

Which tool groups to expose. all adds account; read gives a read-only server.

SIGHTRADAR_FILE_ROOTS

your home folder

Folders file_path may read (separated by : on macOS/Linux, ; on Windows). none turns file_path off.

SIGHTRADAR_BASE_URL

https://api.sightradar.com

API base URL

SIGHTRADAR_TIMEOUT_MS

120000

Per-request timeout

SIGHTRADAR_DEBUG

unset

Log each tool call (no arguments or results) to stderr

Tools

Credits: 100,000 credits = US$1. Every billable tool states its price in its description, and accepts an idempotency_key so a retry is never charged twice.

read — free

Tool

list_collections

Collections with photo, face and selfie counts; search and paging

get_collection

One collection's status and counts (verify recounts from the vector store)

get_deletion_status

Progress of a collection deletion

list_batches / get_batch / get_batch_photos

Batch jobs, status (one or up to 5000 at once) and per-photo results

list_webhooks / list_webhook_failures

Webhook endpoints and dead-lettered deliveries

get_balance / get_usage

Credit balance; usage summary, daily series or storage

search — spends credits, stores nothing

Tool

Credits

search_faces

93

Find every photo in a collection containing the person in a selfie (or an embedding)

search_by_point_id

62

Repeat a registered selfie's search without re-sending it

detect_faces

93

Faces, bounding boxes and quality in an image

compare_faces

93 per image

Are two faces the same person?

write — spends credits / stores data

Tool

Credits

index_photo

93

Store a photo's faces in a collection

register_selfie

93

Store a person's selfie; returns its point id and embedding

submit_batch

62 per photo

Up to 1000 photo URLs, index or match, processed in the background

requeue_failed_batch_photos

62 per photo

Retry failed batch photos (preview, then execute)

create_collection / recreate_collection

free

create_webhook / replay_webhook_failures

free

Signed deliveries for batch and deletion events

delete — free

Tool

delete_collection

Soft delete with a 7-day restore window by default; immediate or compliance erase permanently

restore_collection

Undo a soft delete

delete_photo / restore_photo

Remove or restore one photo's faces

delete_webhook

Stop deliveries to an endpoint

account — free, off by default on the local server

Tool

list_api_keys / create_api_key / revoke_api_key

API keys

get_profile / update_profile

Name and organization

get_billing_settings / update_auto_recharge / get_invoice

Auto-recharge, orders and invoice PDFs

get_notification_settings / update_notification_settings / manage_notification_recipient

Email alerts and extra recipients

list_team_members

Organization members

Prompts and resources

Clients that show MCP prompts (Claude's "+" menu, / commands) get three ready-made workflows:

Prompt

What it does

find_person_in_event

Checks the balance, searches a collection with a selfie and lists the matching photos

index_event_photos

Picks index_photo or submit_batch by photo count and states the cost before starting

account_health

Balance, recent usage, failed batch photos and failed webhook deliveries

Resources: sightradar://docs/pricing-and-limits (credits per operation, rate limits, image and deletion limits) and sightradar://collections/{collection_id} (one collection's counts, needs the read scope).

Images

Image tools take exactly one of:

  • image_url: a public http(s) URL. SightRadar downloads it, so it must be reachable from the internet.

  • gcs_key: an object key on the CDN configured for your account.

  • image_base64: the bytes as base64 or a data: URL. The remote server accepts up to 10 MB; the local server up to 30 MB.

  • file_path (local server only): a JPEG, PNG, WebP, GIF, BMP, TIFF or HEIC file inside SIGHTRADAR_FILE_ROOTS.

Files and base64 data are checked to be real images before anything is uploaded.

Example prompts

  • "Create a collection called wedding-2026-10 and index every photo in ~/Pictures/wedding."

  • "Here is a selfie of Priya: which photos in wedding-2026-10 is she in?"

  • "Submit these 600 photo URLs as a batch into marathon-7 and tell me when it's done."

  • "How many credits did I spend this week, and on what?"

  • "Delete the test-event collection." (The assistant confirms first, and the delete can be undone for 7 days.)

Safety

  • Tools carry MCP annotations (readOnlyHint, destructiveHint), so clients can ask before destructive calls.

  • Deletes are soft by default. Permanent erasure needs immediate or compliance to be set explicitly.

  • Scopes limit what a connection can do. A read-only connection cannot spend credits or change data.

  • The local server reads files only inside SIGHTRADAR_FILE_ROOTS, after resolving symlinks, and only image files.

  • API errors come back as tool results with the error code, a hint and the request id, never as stack traces.

Troubleshooting

You see

Meaning

401 / unauthorized

The API key was revoked or mistyped. Create a new one at sightradar.com/dashboard/keys; remote connections: reconnect.

402 / insufficient_credits

Top up at sightradar.com/dashboard/billing.

409 / duplicate_request_already_processed

That idempotency_key was already used and charged; the earlier call succeeded.

file_path ... is outside the folders this server may read

Add the folder to SIGHTRADAR_FILE_ROOTS (:-separated on macOS/Linux, ; on Windows).

429

Over the per-key request rate (50 per second) or the account's in-flight cap. Wait and retry.

Development

npm install
npm test          # unit tests against a mocked API
npm run build
SIGHTRADAR_API_KEY=frs_... node scripts/smoke.mjs   # free live calls over stdio

createSightRadarServer({ api, scopes }) and TOOLS are exported for embedding the same tools in another host.

MIT licensed.

Available Tools

27 tools
compare_facesCompare two facesA
Idempotent
Inspect

Check whether two images (or embeddings) show the same person. Uses the best face on each side. Returns face_found, similarity (0-1, null when a side has no face), match and the threshold used. Each side is a public URL, a CDN key or a 512-number embedding. Costs 93 credits per image processed: 186 for two images, 93 for one image and one embedding, 93 for two embeddings.

NameRequiredDescriptionDefault
source_urlNoPublic URL of the first image.
target_urlNoPublic URL of the second image.
source_gcs_keyNoCDN key of the first image.
target_gcs_keyNoCDN key of the second image.
idempotency_keyNoOptional. A retry that reuses the key is never charged twice: if the first call finished, the retry gets 409 duplicate_request_already_processed; if it is still running, 409 duplicate_request_in_flight. Use a new key for each different request.
source_embeddingNoEmbedding of the first face.
target_embeddingNoEmbedding of the second face.

TDQS

A3.8/5.0
Behavior4/5

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

With annotations covering only safety hints (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds real behavioral context the annotations cannot: exact credit pricing per input combination (186/93/93), the best-face selection rule, and null similarity when a side has no face. It omits auth/permission requirements and error conditions, which keeps it from a 5.

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?

Front-loaded with the operation and its return contract, then inputs, then cost. Every sentence carries information; the three-case credit sentence is slightly verbose but the pricing per combination is genuinely decision-relevant.

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?

There is no output schema, and the description compensates by naming the returned fields (face_found, similarity, match, threshold) and their null semantics. It leaves the threshold's origin and default unexplained, and says nothing about failure modes beyond a missing face, which is the main remaining gap for a paid comparison call.

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, but the description adds meaning the schema does not: each side is one of three mutually exclusive forms (public URL, CDN key, or 512-number embedding). That explains why all seven parameters are optional — the caller picks one form per side — which the schema alone leaves ambiguous.

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: 'Check whether two images (or embeddings) show the same person', plus the key qualifier that it uses the best face on each side. An agent can distinguish this from search_faces, but the description never names or contrasts that sibling explicitly, so differentiation is inferred rather than stated.

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 context is implied by the operation itself (verify a 1:1 identity match) and the credit cost breakdown gives an economic reason to prefer embeddings, but there is no explicit when-to-use / when-not-to-use guidance and no mention of search_faces as the alternative for one-to-many lookups.

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

create_collectionCreate a collectionA
Idempotent
Inspect

Create a face collection (for example one per event). Creating one that already exists and is active succeeds without change; one that is being deleted or was deleted returns 409 (use restore_collection or recreate_collection). Indexing into a missing collection also creates it, so this is optional. Free.

NameRequiredDescriptionDefault
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.

TDQS

A4.4/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: an existing active collection succeeds with no change, a deleting/deleted one returns 409, and the operation is free (no billing impact). The idempotency point partly overlaps idempotentHint and destructiveHint=false is not elaborated (what is destroyed on a 409 path), but the error semantics and cost disclosure are genuine value-adds.

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 compact sentences, front-loaded with the definition, then the idempotency/error behavior, then the optionality note and cost. Nothing is repeated and the 'Free.' fragment still carries actionable 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?

For a one-parameter create tool with annotations covering readOnly/destructive/idempotent hints, the description covers purpose, optionality, error behavior, and alternatives. The only gap is what a successful response contains, which is a minor omission given there is no output schema.

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 the single parameter is fully documented in the schema, including naming constraints. The description's 'for example one per event' echoes the schema's own example, so it adds little new meaning; baseline 3 applies when the schema already does the work.

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 ('Create a face collection'), gives a concrete use case ('for example one per event'), and implicitly distinguishes itself from restore_collection and recreate_collection by naming them as the alternatives in the conflict path. An agent can tell what this tool produces without opening the schema.

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?

Goes well beyond a plain when-to-use: it says the call is optional because indexing into a missing collection also creates it, and it names restore_collection and recreate_collection for the 409/deleted case. Both the 'you may not need this' and 'here is the alternative when it fails' conditions are explicit.

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

create_webhookAdd a webhookAInspect

Register a public HTTPS URL to receive batch-completion and deletion events. Each delivery is signed: X-SightRadar-Signature = hex HMAC-SHA256(secret, '.'). If you omit secret one is generated and returned ONCE in this answer: tell the user to store it. Free.

NameRequiredDescriptionDefault
urlYesPublic https:// URL that will receive POSTs.
secretNoSigning secret to use. Omit to have one generated.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true, idempotentHint=false), and the description adds real substance: the exact HMAC-SHA256 signature header formula, the timestamp component, which events are delivered, and the one-time secret disclosure that must be surfaced to the user. It does not cover delivery retry/failure behavior despite sibling tools like list_webhook_failures and replay_webhook_failures implying failures exist.

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?

Three tight sentences that front-load the purpose, then the signature contract, then the secret caveat. The signature formula is dense but earns its space; the trailing 'Free.' is a one-word pricing note that is mildly out of place but harmless.

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 2-parameter mutation tool with no output schema, the description supplies what the response actually yields (a one-time secret) and the verification contract the caller needs. The main remaining gap is behavior on duplicate registration and how failures are surfaced, given non-idempotent semantics.

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 params are already documented, but the description adds operational meaning beyond the schema: the generated secret is returned exactly once in this response and the user must store it, which materially changes how the agent handles the result. It also clarifies the URL must be public HTTPS, reinforcing the format constraint.

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 ('Register a public HTTPS URL to receive batch-completion and deletion events'), naming exactly which event classes trigger delivery. Combined with siblings list_webhooks and delete_webhook, an agent can immediately distinguish creating a hook from listing or removing one.

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 context is implied by the event types (subscribe to batch completion/deletion), but there is no explicit when-to-use or when-not guidance, and no reference to siblings such as list_webhooks to check for an existing registration before creating a duplicate. The agent must infer placement from the name and event list.

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

delete_collectionDelete a collectionA
DestructiveIdempotent
Inspect

Delete a collection and every face, selfie and photo record in it. By default this is a SOFT delete: the collection is hidden at once and purged after a 7-day grace period, and restore_collection undoes it until then. immediate=true starts the purge now and cannot be undone. compliance=true records an audited erasure (GDPR/BIPA) and cannot be restored. An immediate or compliance erase of a collection that still holds faces or selfies is refused with confirmation_required until confirm_erase=true. Confirm with the user before calling this. Free.

NameRequiredDescriptionDefault
immediateNoPurge now instead of after the grace period. Irreversible.
complianceNoAudited legal erasure. Irreversible and never restorable.
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.
confirm_eraseNoSet true once the user has confirmed they want to erase a collection that still holds faces. When the answer is confirmation_required, tell the user what will be erased, ask, and retry with this.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare destructive/idempotent/open-world; the description adds the soft-delete default, the 7-day grace period, when purging becomes irreversible, the GDPR/BIPA audit mode, and the confirmation refusal path. It also discloses that the operation costs no credits.

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?

Four tightly packed sentences, front-loaded with the destructive default and ending with the confirmation duty. Dense but nearly every clause carries decision-relevant information; the trailing 'Free.' is terse to the point of ambiguity.

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 four-parameter tool with no output schema, the definition covers irreversibility, recoverability, refusal behaviour, and cost, leaving nothing an agent needs to call it safely.

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, but the description goes beyond the schema by explaining how immediate and compliance interact with the refusal behaviour and by framing confirm_erase as a retry token rather than a plain flag.

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 ('Delete a collection') and immediately scopes it to everything contained in it ('every face, selfie and photo record'), which distinguishes it from the sibling delete_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?

Explicitly names the alternative restore path (restore_collection) and the window in which it works, contrasts three modes of deletion, and instructs the agent to confirm with the user before calling. It also tells the agent exactly how to recover from a confirmation_required response.

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

delete_photoDelete a photo's facesA
DestructiveIdempotent
Inspect

Remove every face indexed from one photo. Soft by default (restore_photo undoes it); immediate=true or compliance=true is permanent. Deleting a photo that is already gone, or a photo_id that was never indexed, still answers deleted=true, so check the photo_id before telling the user something was removed. Free.

NameRequiredDescriptionDefault
photo_idYesThe photo_id used when the photo was indexed.
immediateNoRemove permanently now.
complianceNoAudited legal erasure. Permanent.
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.

TDQS

A4.5/5.0
Behavior4/5

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

Goes well beyond the destructive/idempotent annotations by disclosing that deletion is soft by default, that immediate/compliance make it permanent, and that a nonexistent photo_id still returns deleted=true — a real behavioral trap the agent must guard against. The "Free" cost note is a bonus. Not quite a 5 only because it doesn't cover what data is retained in the soft-delete window.

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?

Front-loads the action, then the default-vs-permanent distinction, then the idempotency caveat, then cost. Three dense sentences with no wasted 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 4-param destructive tool with no output schema, the description covers the action, reversibility, permanence modes, the false-positive return behavior, and cost — everything an agent needs to call it safely and report accurately.

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, but the description adds meaning the schema lacks: it explains the default soft behavior and what immediate=true and compliance=true each do (permanent vs audited legal erasure). This genuinely extends the terse schema 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?

States a specific verb and resource ("Remove every face indexed from one photo"), scoping it to a single photo and clarifying it removes faces rather than the photo itself. This clearly separates it from siblings like restore_photo and delete_collection.

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?

Explicitly frames the soft-vs-permanent choice, naming restore_photo as the undo path for the default and identifying immediate=true/compliance=true as the permanent route. It doesn't compare against other deletion tools like delete_collection, but the within-tool guidance is clear.

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

delete_webhookDisable a webhookA
DestructiveIdempotent
Inspect

Stop deliveries to a webhook endpoint. Already-disabled endpoints succeed again. Free.

NameRequiredDescriptionDefault
webhook_endpoint_idYesId from list_webhooks.

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 explicitly stating the cost ('Free') and providing a detailed operational behavior (endpoints succeeding again after being disabled), which is more specific than the 'idempotentHint: true' annotation.

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 definition is extremely concise and efficient. Every phrase adds value—identifying the result, handling idempotency, and stating the cost—making it highly structured despite its brevity.

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 single-parameter mutation tool, the definition is highly complete. It covers the action, the mechanism of failure/idempotency, and operational constraints like cost.

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?

Given the schema description coverage is 100%, the description adds little semantic value to the input parameter itself. It serves more as a behavioral context setter, justifying the baseline score of 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?

The description clearly states the primary action: 'Stop deliveries to a webhook endpoint.' While similar to general 'disable' commands, the focus on deliveries anchors its purpose well within the webhook context.

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 definition provides a crucial usage guideline by mentioning that 'Already-disabled endpoints succeed again.' This informs the agent how to handle idempotency without needing to check the full idempotency hint or tool output.

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

detect_facesDetect facesA
Idempotent
Inspect

Find the faces in an image without storing anything. Returns detected_face_count, gated_face_count (faces that pass the quality gate) and per face: bounding box (ratios), det_score, min_px and quality_passed. Useful to check a photo or selfie before indexing. Costs 93 credits.

NameRequiredDescriptionDefault
gcs_keyNoObject key of the image on the CDN configured for your account (instead of a URL).
file_pathNoPath to the image on this computer (JPEG, PNG, WebP, GIF, BMP, TIFF or HEIC).
image_urlNoPublic http(s) URL of the image. SightRadar downloads it; it must be reachable from the internet.
image_base64NoThe image as base64 (a data: URL is fine). Up to 30 MB decoded. Prefer image_url for large files.
idempotency_keyNoOptional. A retry that reuses the key is never charged twice: if the first call finished, the retry gets 409 duplicate_request_already_processed; if it is still running, 409 duplicate_request_in_flight. Use a new key for each different request.

TDQS

A4.2/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: nothing is persisted, each call costs 93 credits, and a quality gate can suppress faces from the count. The credit cost and non-storage guarantee are exactly the details an agent needs before deciding to call. The idempotency/409 semantics live in the schema, so nothing material is lost there.

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: capability, return shape, then use case plus cost. No repetition of the name or title and no filler; every clause carries information the agent would otherwise have to guess.

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?

With no output schema, describing detected_face_count, gated_face_count and the per-face fields is genuinely necessary and is done well, and the credit cost is disclosed. The only gap is that the meaning of the quality gate (what min_px or quality_passed thresholds are) is unexplained, which matters for interpreting gated_face_count.

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 of the five optional image-source parameters is fully documented in the schema, including size limits and source trade-offs. The description adds only the '(ratios)' note about bounding boxes, which is a return-value detail, not parameter guidance, 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?

States a specific verb and resource ('Find the faces in an image') plus the crucial distinction from its closest sibling: it does not store anything, unlike index_photo. The return payload and credit cost are named up front, so an agent knows exactly what this call produces.

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 a clear use case ('check a photo or selfie before indexing'), which implicitly routes the agent away from index_photo and toward this tool for a dry run. It stops short of naming index_photo or compare_faces as explicit alternatives, so the routing is inferred rather than stated.

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

get_balanceGet credit balanceA
Read-onlyIdempotent
Inspect

Current credit balance of the account. 100,000 credits = US$1. Real-time index, search, selfie, detect = 93 credits; compare = 93 per image; batch photo and search_by_point_id = 62. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior, so the description's added value is the freshness claim ("real-time") plus the credit-to-USD conversion rate and per-operation costs. That is genuine context an agent cannot get from annotations or schema. It stops short of saying whether the balance is account-wide or per-key.

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?

Front-loaded with the core purpose, then dense pricing facts, with no filler sentences. The trailing fragment "Free." lacks a clear antecedent (which operation is free?), which slightly hurts precision.

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 zero-parameter read tool with no output schema, the description supplies what is needed to interpret the response: units and the 100,000-credits-per-dollar conversion. It does not state the returned field names or whether plan/quota info accompanies the number, but that is a minor gap for a tool this simple.

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 takes zero parameters, so the schema-coverage baseline is 4 and there is nothing for the description to compensate for. The pricing details are interpretive context for the result, not parameter meaning.

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 resource ("current credit balance of the account") and implicitly the read verb, which is unambiguous. It does not explicitly distinguish itself from the sibling get_usage, which likely returns consumption detail, so the sibling differentiation is left to inference.

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?

There is no explicit when-to-use statement or named alternative. However, the embedded per-operation pricing table implies the intended use case: checking affordability before costly operations like index, detect, or compare. Usage is implied rather than stated.

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

get_batchGet batch statusA
Read-onlyIdempotent
Inspect

Status of one or many batch jobs: status, total_photos, succeeded, failed, pending. Pass batch_id for one, or batch_ids (up to 5000) for many at once; ids you don't own are left out. Free.

NameRequiredDescriptionDefault
batch_idNoBatch id returned by submit_batch.
batch_idsNoSeveral batch ids at once.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety bar is covered. The description adds genuinely new behavioral context: a hard cap of 5000 ids per call, and the important silent-filtering rule that ids you don't own are omitted rather than erroring. 'Free' also discloses that calls are not billed, which is not derivable from any structured field.

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 zero filler: return fields first, then the invocation modes and limits. Every clause carries information, and nothing is buried.

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?

With no output schema, listing the returned fields in the description is exactly the right compensation, and the 5000-id cap plus ownership omission rule cover the main edge cases. Minor gaps remain around what is returned for ids that don't exist versus ids not owned, but the definition is sufficient to call the tool 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?

Schema coverage is 100% and the maxItems=5000 constraint is already in the schema, so baseline would be 3. The description earns an extra point by documenting the one-vs-many mutual exclusivity and the ownership-filtering semantics, neither of which is expressed in the schema itself.

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 resource (batch jobs) and enumerates the returned fields (status, total_photos, succeeded, failed, pending), and explicitly covers both the single and bulk retrieval modes. It stops short of naming how it differs from siblings like list_batches or get_batch_photos, which is left to inference.

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?

'Pass batch_id for one, or batch_ids ... for many at once' gives clear parameter-selection guidance for the two modes. However, it offers no when-to-use framing against list_batches or get_batch_photos, and no prerequisites, so the routing decision between status-checking tools is only implied.

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

get_batch_photosGet per-photo batch resultsA
Read-onlyIdempotent
Inspect

Per-photo results of a batch: external_id, status, face_count and reason_code for failures. Page with after_index = next_after_index. Free.

NameRequiredDescriptionDefault
limitNoPage size (default 500, max 1000).
batch_idYesBatch id returned by submit_batch.
after_indexNoPaging cursor: next_after_index from the last page.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the bar is lower. The description still adds genuine context: the exact payload fields including a failure reason_code, the paging mechanism, and that the call is free (no billing impact), which an agent cannot get from 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 short sentences with zero filler; the payload contents come first and the paging rule and cost note follow. Every clause carries 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?

With no output schema, the description usefully compensates by naming the returned fields and explaining pagination. It does not enumerate possible status values or say what happens for photos still in flight, which is a modest remaining gap for a results-reading tool.

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 every parameter is already documented, so the baseline applies. The description does reinforce the paging contract by tying after_index to next_after_index, but that is largely a restatement of the schema's own parameter description.

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 ('Per-photo results of a batch') and enumerates the returned fields (external_id, status, face_count, reason_code), which lets an agent tell it apart from the batch-level get_batch and the mutation siblings. It stops short of naming those siblings explicitly.

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: an agent can infer this is the drill-down after submit_batch or get_batch, but the description never says when to call this versus get_batch or requeue_failed_batch_photos, and gives no prerequisites or exclusions.

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

get_collectionGet a collectionA
Read-onlyIdempotent
Inspect

Show one collection: status, photo_count, face_count, selfie_count, created_at and purge_after when a deletion is pending. Set verify=true to recount from the vector store instead of the cached counters. Free.

NameRequiredDescriptionDefault
verifyNoRecount from the vector store (slower).
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered; the description adds non-obvious behavior on top: counters are cached by default, verify triggers a slower authoritative recount, purge_after appears only when a deletion is pending, and the call is free. These are exactly the traits an agent could not infer from the schema or 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 short sentences, zero filler: what it returns first, the caching/verify trade-off second, cost last. Every clause carries information an agent needs, and the most important detail (default is cached) is positioned early.

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?

With no output schema, the description correctly compensates by listing the returned fields, and it covers the caching caveat and cost. Remaining gaps are minor — the possible values of status and the behavior for a nonexistent or purged collection_id are not described.

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 parameters are already documented and the baseline is 3. The description adds modest meaning for verify by contrasting it with the cached-counter default, but says nothing extra about collection_id beyond what the schema's format constraints already state.

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?

"Show one collection" pairs a specific verb with a specific resource and immediately enumerates the fields returned (status, photo_count, face_count, selfie_count, created_at, purge_after), so an agent knows exactly what it gets back. It is distinguishable from list_collections by the singular scope, though it never names that sibling explicitly.

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?

It gives one concrete decision rule — set verify=true to recount from the vector store instead of trusting cached counters — which is genuine when-to-use guidance for that parameter. It offers nothing on when to call this versus list_collections, get_deletion_status, or restore_collection, so the broader routing decision 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.

get_deletion_statusCheck a collection deletionA
Read-onlyIdempotent
Inspect

Track a collection deletion: phase (not_deleting, deletion_pending, deleting, completed, blocked), whether the data is verified gone (verified_zero), purge_after, attempts and the last error. Free.

NameRequiredDescriptionDefault
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive behavior, and the description adds genuinely new context beyond them: the full state machine (not_deleting through blocked), verified_zero, purge_after, retry attempts, last error, and that calls are free. The main gap is what happens when collection_id is unknown or never existed.

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?

One dense sentence, front-loaded with the verb and resource, then the returned fields in priority order. The trailing word 'Free' is slightly abrupt but is a useful cost signal and costs almost nothing.

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?

There is no output schema, so the description properly serves as the return-value documentation by listing phases and fields such as verified_zero, purge_after, attempts and last error. It is nearly complete for this complexity; only the unknown-collection outcome 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?

There is a single parameter at 100% schema coverage, including a description and character restrictions, so the schema carries the load. The description adds no parameter-level meaning beyond that baseline.

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 opens with a specific verb and resource, 'Track a collection deletion', and enumerates the phase values, which makes it distinguishable from sibling delete_collection (which initiates) and restore_collection. It does not explicitly say 'read-only status polling', but the phase list makes the monitoring role clear.

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 monitoring role is implied by the phase enumeration, but there is no explicit when-to-use statement such as 'call after delete_collection to poll progress' and no mention of alternatives or when this is unnecessary. An agent must infer the workflow from context.

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

get_usageGet usageA
Read-onlyIdempotent
Inspect

Calls and credits spent, per operation. granularity=summary (default) gives totals per op; daily gives a day-by-day series including storage charges; storage gives the daily stored-vector count and storage credits. Use days (1-365) or a from/to date range (YYYY-MM-DD). Free.

NameRequiredDescriptionDefault
toNoEnd date YYYY-MM-DD (with from; not for storage).
daysNoLook-back window in days (default 30; storage 90).
fromNoStart date YYYY-MM-DD (with to; not for storage).
granularityNoDefault summary.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish this as a read-only, idempotent, non-destructive, closed-world call, so the bar is lower. The description adds meaningful context beyond that: the call is free, and each granularity returns different content, including storage charges and stored-vector counts in the daily and storage modes.

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 dense sentences with the core resource statement front-loaded, followed by mode behavior and date-window syntax. Nothing is redundant and every sentence carries distinct 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?

There is no output schema, so the description carries the burden of describing returns, and it does so per granularity (per-op totals, day-by-day series, vector counts and storage credits). It stops short of specifying response field names or pagination, but the essential shape is conveyed.

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%, with formats, min/max, and default notes already documented, so the baseline is 3. The description does add meaning for the enum, explaining what each granularity value actually returns, which goes modestly beyond the schema's terser 'Default summary.'

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 resource and measure: 'Calls and credits spent, per operation,' making clear this is a consumption-reporting tool. It does not explicitly name the closest sibling (get_balance) or distinguish itself from it, which keeps it short of a 5.

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 modes of use are implied through the granularity explanations, and the 'Free' note signals it costs nothing to call. However, there is no explicit when-to-use guidance or routing advice such as 'use get_balance for credit balance, get_usage for consumption breakdown,' so the agent must infer the division of labor.

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

index_photoIndex a photoAInspect

Detect every face in a photo and store them in a collection so they can be found later by search_faces. Returns each face's point_id, bounding box (ratios of image width/height), detection score and pixel size. Faces below the quality gate (det_score < 0.6 or under 24 px) are counted as rejected. Indexing the same photo_id twice fails with already_indexed unless override=true. Use a photo_id that is unique across all your collections: on some older accounts photo ids are shared between collections, so reusing one moves its faces out of the other collection (or is refused with photo_id_in_other_collection). The collection is created if missing. Costs 93 credits.

NameRequiredDescriptionDefault
gcs_keyNoObject key of the photo on the CDN configured for your account (instead of a URL).
overrideNoRe-index and replace the faces of a photo_id indexed before.
photo_idNoYour id for the photo; search results return it. Defaults to a content hash.
file_pathNoPath to the photo on this computer (JPEG, PNG, WebP, GIF, BMP, TIFF or HEIC).
image_urlNoPublic http(s) URL of the photo. SightRadar downloads it; it must be reachable from the internet.
image_base64NoThe photo as base64 (a data: URL is fine). Up to 30 MB decoded. Prefer image_url for large files.
collection_idYesCollection id.
idempotency_keyNoOptional. A retry that reuses the key is never charged twice: if the first call finished, the retry gets 409 duplicate_request_already_processed; if it is still running, 409 duplicate_request_in_flight. Use a new key for each different request.

TDQS

A4.5/5.0
Behavior4/5

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

Rich disclosure beyond annotations: exact credit cost (93), the quality gate thresholds (det_score < 0.6 or <24 px), auto-creation of the missing collection, and the two named error codes already_indexed and photo_id_in_other_collection. It doesn't disclose rate limits or concurrency behavior, and the destructiveHint=false annotation is not directly addressed even though reuse of a shared photo_id can move faces out of another collection.

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?

Front-loads the core action, then return values, quality gate, error semantics, id uniqueness, and cost in a tight sequence. Every sentence carries operational information an agent needs before calling.

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

Completeness5/5

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

With 8 parameters, no output schema, and a write operation, this description covers what it returns (point_id, bounding box ratios, detection score, pixel size), failure modes, side effects, and billing. Nothing material is missing for a correct call.

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 still adds genuine meaning by explaining that photo_id must be unique across all collections and that reuse can relocate faces or trigger photo_id_in_other_collection. The override and idempotency parameters are covered by the schema, so no further credit is warranted.

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 — 'Detect every face in a photo and store them in a collection' — plus the downstream payoff (findable via search_faces). This clearly separates it from siblings like detect_faces (no storage) and search_faces (lookup only).

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 clear when-to-use context (index now so faces can be searched later) and when re-indexing is appropriate (override=true). It doesn't explicitly name detect_faces as the no-persist alternative, so the routing between the two detection tools is left partly to inference.

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

list_batchesList batch jobsA
Read-onlyIdempotent
Inspect

List recent batch jobs newest first with status and succeeded/failed/pending counts. For the next page pass next_before_created and next_before_id from the previous answer. Free.

NameRequiredDescriptionDefault
limitNoPage size (default 25, max 100).
before_idNoPaging cursor: next_before_id from the last page.
before_createdNoPaging cursor: next_before_created from the last page.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral detail beyond that: result ordering (newest first), the exact summary fields returned, and the cursor-based forward pagination contract, plus the 'Free' cost signal. It does not say how far back 'recent' reaches or the retention window.

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 short sentences, front-loaded with purpose and payload, followed by the paging rule; the fragment 'Free.' earns its place as a cost signal. No redundant wording.

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?

With no output schema, the description carries return-value duty and does so by naming the status and count fields as well as the next_* cursors. It is nearly complete for a simple paginated list tool; only the meaning of 'recent' and any page-size default are left to the schema.

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%, including the cursor fields referencing next_before_id/next_before_created, so the baseline is 3. The description restates the same cursor contract rather than adding new meaning such as cursor expiry or interaction between the two cursor values.

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 (list batch jobs), plus the ordering (newest first) and the payload (status and succeeded/failed/pending counts). This clearly separates it from the singular get_batch sibling, though it never names siblings explicitly.

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?

It explains the paging follow-up ('for the next page pass next_before_created and next_before_id from the previous answer') and notes the call is free, which is useful selection context. It gives no when-to-use versus get_batch/get_batch_photos guidance and no exclusions.

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

list_collectionsList collectionsA
Read-onlyIdempotent
Inspect

List the face collections on this SightRadar account, with photo, face and selfie counts. Supports substring search and paging. Free.

NameRequiredDescriptionDefault
limitNoPage size (default 50, max 200).
queryNoOnly collections whose id contains this text.
offsetNoRows to skip, for paging.
statusNoFilter by status. Omit for everything except fully deleted collections.

TDQS

A3.8/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 genuinely new context by noting the call is free (no credits consumed) and that results include photo/face/selfie counts. It still says nothing about result ordering or total-count/paging metadata, which is the remaining gap.

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 with no waste: scope first, return contents second, capabilities and cost last. Nothing to trim.

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, zero-required-parameter read tool with no output schema, the description covers scope, payload contents, filtering and cost adequately. Only result ordering and whether a total count is returned are left 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 description coverage is 100%, so every parameter (limit, query, offset, status) is already documented, and the description only echoes "substring search and paging." It notably does not say which field the query matches (the schema says collection id), leaving a mild ambiguity rather than adding meaning.

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 ("List the face collections on this SightRadar account") and even names what each row carries (photo, face and selfie counts). It does not explicitly distinguish itself from the sibling get_collection, so an agent must infer the plural/singular split, but the purpose itself is unambiguous.

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?

"Supports substring search and paging" implies this is the browse/enumerate entry point versus get_collection for a single record, but that alternative is never named and no when-not-to-use condition is given. Usage is deducible rather than stated.

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

list_webhook_failuresList failed webhook deliveriesA
Read-onlyIdempotent
Inspect

Deliveries that gave up after all retries (9 attempts): delivery_id, endpoint, url, attempts, last status code and error. Free.

NameRequiredDescriptionDefault
limitNoMax rows (default 50, max 200).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds meaningful behavior beyond that: the failure set is defined as retry-exhausted after exactly 9 attempts (not merely recent errors), the response fields are previewed, and 'Free' signals no credit cost. Pagination/ordering behavior is the only notable omission.

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 tight sentence, front-loaded with the scope-defining clause ('gave up after all retries') followed by the return fields and the cost note. Every clause carries information; nothing is redundant.

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?

With no output schema, the description compensates by listing the returned fields, and it defines the failure semantics and cost model. For a one-parameter read-only list tool this is close to sufficient; only result ordering and pagination beyond the limit cap are unaddressed.

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 the sole limit parameter is fully documented there (default 50, max 200). The description adds nothing about limit and does not say whether results are ordered or capped in a particular way, so it sits at the baseline where the schema carries the parameter burden.

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 precisely which resource is listed: webhook deliveries that exhausted all retries, and enumerates the returned fields (delivery_id, endpoint, url, attempts, status code, error). 'Gave up after all retries (9 attempts)' sharply defines the failure set, implicitly distinguishing it from list_webhooks. It does not name sibling tools such as replay_webhook_failures, so differentiation is inferred rather than 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?

Usage is only implied through the definition of 'failed' as terminal retry exhaustion, which usefully rules out in-flight or transiently failing deliveries. There is no explicit when-to-use statement, no mention of pairing with replay_webhook_failures to act on results, and no mention of list_webhooks as the broader alternative.

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

list_webhooksList webhooksA
Read-onlyIdempotent
Inspect

List webhook endpoints (id, url, status, created_at). Optionally filter by status. Free.

NameRequiredDescriptionDefault
statusNoOnly endpoints in this state.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the returned field set and the 'Free' cost note, which is genuinely useful context not present in structured fields, but says nothing about ordering or pagination of the listing.

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 clauses, front-loaded with the verb and resource, then the return fields, then the filter and cost. No filler and nothing redundant.

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 single-optional-parameter read tool with no output schema, the inline field list effectively documents the return shape and the 'Free' note clarifies billing impact. The only gap is whether the listing is complete or paged, which is not addressed.

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 the status enum is documented in the schema itself, so the baseline is 3. The description confirms the filter is optional but adds no format or behavioral detail (e.g., default behavior when omitted) beyond what the schema already states.

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 gives a specific verb and resource ('List webhook endpoints') and enumerates the returned fields (id, url, status, created_at), so the agent knows exactly what it gets. It does not explicitly distinguish itself from the related sibling list_webhook_failures or create_webhook/delete_webhook, which keeps it out of the top band.

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?

'Optionally filter by status' tells the agent the filter is opt-in, which is implied usage guidance for the single parameter. There is no explicit when-to-use versus list_webhook_failures or when-not guidance, so selection still requires inference from the sibling names.

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

recreate_collectionRecreate a purged collectionA
Idempotent
Inspect

Bring back an empty collection under the same id after it has been fully deleted (status deleted). The old faces are not recovered. Free.

NameRequiredDescriptionDefault
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the agent knows the safety profile. The description adds two genuinely new facts — 'the old faces are not recovered' (so this is not a true undo) and 'Free' (no quota/credits consumed) — but says nothing about error behavior if the collection is not in deleted status, which is the main failure mode. The 'old faces are not recovered' line is not a contradiction of destructiveHint=false since the deletion already happened, though it does qualify the expectation.

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 and its precondition, followed by the two non-obvious caveats. Nothing is redundant and nothing could be cut without losing 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?

For a single-parameter, non-read-only tool with full schema coverage and rich annotations, the description covers the essentials: what state is required, what is and is not recovered, and the cost. Only the failure behavior when the precondition is unmet is missing.

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 the schema already documents collection_id with examples and allowed characters. The description only adds that the id must be the same one the purged collection had, which is mild reinforcement rather than new semantics. 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?

States a specific verb and resource — bring back an empty collection under the same id after full deletion. The parenthetical '(status deleted)' carves out a precise scope that implicitly separates it from restore_collection, but the sibling is never named, so the agent must infer the distinction.

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 precondition (only after the collection is fully deleted / status deleted), which is the key usage gate for a 1-param tool. It stops short of naming restore_collection or create_collection as the alternatives for other states, leaving that routing to inference.

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

register_selfieRegister a selfieAInspect

Store a user's selfie in a collection so they can be matched against its photos. Returns face_found, the selfie's point_id (use with search_by_point_id) and its 512-number embedding. face_found=false with reason=no_face means no face was found; a face that fails the quality gate (det_score < 0.6 or under 24 px) is refused with HTTP 422 and not stored. Retrying with the same idempotency_key returns the original point_id without a second charge. Costs 93 credits.

NameRequiredDescriptionDefault
gcs_keyNoObject key of the selfie on the CDN configured for your account (instead of a URL).
user_idYesYour id for the person (required).
file_pathNoPath to the selfie on this computer (JPEG, PNG, WebP, GIF, BMP, TIFF or HEIC).
image_urlNoPublic http(s) URL of the selfie. SightRadar downloads it; it must be reachable from the internet.
selfie_idNoYour id for this selfie. Defaults to a content hash.
image_base64NoThe selfie as base64 (a data: URL is fine). Up to 30 MB decoded. Prefer image_url for large files.
collection_idYesCollection id.
idempotency_keyNoOptional. A retry that reuses the key is never charged twice: if the first call finished, the retry gets 409 duplicate_request_already_processed; if it is still running, 409 duplicate_request_in_flight. Use a new key for each different request.

TDQS

A3.9/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing cost (93 credits), the quality gate thresholds (det_score < 0.6, under 24 px) that cause an HTTP 422 and non-storage, and the no-face outcome. One wrinkle: the description says a retry with the same idempotency_key 'returns the original point_id', while the schema says such retries get a 409 duplicate_request_already_processed — a minor internal inconsistency about what actually comes back.

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?

Four tight sentences, front-loaded with purpose then return values then failure modes then cost. The idempotency sentence partially duplicates the idempotency_key schema description, which is the only real 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?

With no output schema, the description carries the return-value burden and does so for the main fields (face_found, point_id, embedding, reason=no_face) as well as the 422 quality-gate path. It omits other error shapes and any limits on collection size or per-user selfie counts, leaving modest gaps.

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 every parameter is already documented in the schema, including the idempotency_key retry semantics. The description adds essentially no new per-parameter meaning beyond restating the retry behavior, 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 and resource ('Store a user's selfie in a collection') plus the downstream purpose (matching against collection photos), so an agent knows exactly what it achieves. It does not explicitly contrast itself with the similar sibling index_photo, so it stops short of full sibling differentiation.

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 clear usage context (enrolling a selfie so it can later be matched) and routes the agent forward to search_by_point_id using the returned point_id. It also covers the retry case via idempotency_key. It never states when NOT to use it or why one would pick index_photo instead.

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

replay_webhook_failuresReplay failed webhook deliveriesA
Idempotent
Inspect

Send failed deliveries again. Pass delivery_ids to replay specific ones, or omit to replay all of them. Returns how many were requeued. Free.

NameRequiredDescriptionDefault
delivery_idsNoSpecific deliveries; omit for all.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context — that it returns a requeued count and that the call is free — but says nothing about what actually happens on replay (retry of original payload, whether replayed deliveries can fail again, or any rate limits).

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, front-loaded with the action, then parameter behavior, then return value, then cost. Nothing is padded and each sentence carries 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?

With one optional parameter and no output schema, the description covers the essentials: what it does, how to scope it, and roughly what comes back. It is only missing post-replay expectations (do failures re-enter the failure list, are partial failures reported), which for a simple replay tool is a minor 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 coverage is 100% and the schema's own description already says "omit for all", so the description largely restates the parameter. It does emphasize the bulk consequence of omitting the field, which is a small value-add over the schema, but no format details (ID provenance, ordering, limits) are added.

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 ("Send failed deliveries again" / replay of failed webhook deliveries), which is concrete enough to distinguish it from the adjacent listing tool. It stops short of naming list_webhook_failures as the sibling that produces the IDs, so differentiation relies partly on the tool name.

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?

It explains the two modes of invocation (specific IDs vs. omit for all), which is practical usage guidance. However, it never states when to use this at all — no prerequisite such as "after list_webhook_failures", no caution about bulk replaying everything, and no alternatives named.

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

requeue_failed_batch_photosRetry failed batch photosAInspect

Retry batch photos that failed for a given reason, in two steps. First call with execute=false to get a preview: how many photos match, the estimated credit cost and a preview_id (valid 10 minutes, usable once). Show that to the user, then call again with execute=true and the preview_id. Requeued photos are charged when processed, usually 62 credits each; the preview's credits_per_photo and estimated_credits give the exact price.

NameRequiredDescriptionDefault
limitNoPreview step: max photos (default 500).
executeYesfalse = preview only; true = run a preview (needs preview_id).
preview_idNoFrom the preview step; required when execute=true.
reason_codeNoPreview step: which failures to retry.
created_afterNoPreview step: only batches created after this RFC 3339 time.
created_beforeNoPreview step: only batches created before this RFC 3339 time.
stagger_secondsNoPreview step: spread the retries out.

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond annotations: preview_id expires after 10 minutes and is usable once, requeued photos are charged when processed, and the preview exposes exact per-photo and estimated credit costs. This gives the agent the safety and cost context needed before committing a 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 front-loaded with the core action and then explains the two-step flow, user confirmation, and cost in a compact sequence. Every sentence supports correct invocation, with no wasted filler.

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?

Covers the critical preview workflow, preview_id constraints, and pricing well enough for a two-step mutation tool. Because there is no output schema, it could be more complete about what execute=true returns after requeueing, but the essential invocation details are present.

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 schema already documents all seven parameters. The description still adds meaningful workflow semantics for execute and preview_id, including preview validity and one-time use, though it does not elaborate on limit, date filters, or stagger_seconds 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?

States a specific verb and resource: retry failed batch photos for a given reason. The two-step preview/execute framing makes its purpose distinct from sibling tools like submit_batch or get_batch_photos.

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?

Explicitly instructs the agent to call first with execute=false, show the preview to the user, then call again with execute=true and the preview_id. It does not compare against alternative remediation tools, but the workflow guidance is clear enough to select and invoke it correctly.

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

restore_collectionRestore a deleted collectionA
Idempotent
Inspect

Undo a soft delete while the collection is still in its grace period (status deletion_pending). Fails once the purge has started or for a compliance erasure. Free.

NameRequiredDescriptionDefault
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent, non-read-only behavior, and the description adds context annotations cannot express: the exact failure modes (purge started, compliance erasure) and the cost note ('Free'). It does not say what state the collection is returned in or whether membership/photos are preserved, which is the one meaningful gap.

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 with zero filler: the operation and its window come first, then the failure conditions, then the cost note. Every clause carries information an agent would otherwise have to guess.

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 one-parameter mutation with no output schema, the description covers preconditions, failure modes, and cost, which is most of what an agent needs. A brief note on the resulting state of the restored collection would close the remaining 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?

There is a single parameter and the schema documents it fully (100% coverage, with format constraints and examples), so the schema carries the burden. The description adds no meaning about collection_id beyond what is already structured, which is the baseline case.

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 ('Undo a soft delete' on a collection) plus the precondition that defines the operation, which separates it from delete_collection and get_collection. It does not explicitly distinguish itself from the sibling recreate_collection, which is the closest alternative, so it stops short of a 5.

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 both a positive condition (collection still in its grace period, status deletion_pending) and negative conditions (purge has started, compliance erasure), which is real when-to-use guidance. It never names an alternative tool such as recreate_collection for the post-purge case, so the routing advice is incomplete.

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

restore_photoRestore a deleted photoA
Idempotent
Inspect

Undo a soft photo deletion made with delete_photo. Free.

NameRequiredDescriptionDefault
photo_idYesThe photo_id that was deleted.
collection_idYesCollection id, e.g. an event or album id. Any text except '/', '\', '.' and '..'.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds two pieces of context not in the annotations: that the deletion was 'soft' (implying recoverability rather than permanent loss) and that the call is 'Free', a meaningful cost signal given the presence of get_balance and get_usage siblings. It omits failure behavior, such as what happens if the photo is no longer restorable.

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 short sentences with zero filler; the purpose is front-loaded and the cost note is appended where it does not interrupt the main statement. Every clause 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?

For a two-parameter restore tool with full schema coverage and complete annotations, the description supplies purpose, the originating sibling, and cost. The only meaningful gap is the absence of any note about restore eligibility or time limits, which an agent might need when a restore fails.

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 (photo_id, collection_id) are documented in the schema, including the collection id format constraints. The description adds no meaning beyond that, so the baseline of 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 states a specific verb ('Undo') and resource ('a soft photo deletion'), and names the sibling operation that created the state to be undone ('made with delete_photo'). An agent can distinguish this from restore_collection and recreate_collection without inspecting 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?

It gives clear when-to-use context by tying the tool to a prior delete_photo call, which is exactly the precondition an agent needs. It stops short of explicit exclusions or edge conditions (e.g. deletion window expiry, what to do if the photo was hard-deleted), so it is strong but not complete routing guidance.

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

search_by_point_idSearch by a stored faceA
Idempotent
Inspect

Find a registered person's photos again without re-sending their selfie: pass the point_id returned by register_selfie for this collection. Cheaper than search_faces. Only selfie point ids (a UUID or an unsigned integer) work here; face point ids from index_photo return reason=point_not_found. Returns matches [{photo_id, score}]. Costs 62 credits.

NameRequiredDescriptionDefault
limitNoMaximum number of matches to return.
point_idYespoint_id from register_selfie.
thresholdNoMinimum cosine similarity for a match (0-1). Omit to use the calibrated default.
collection_idYesCollection id.
idempotency_keyNoOptional. A retry that reuses the key is never charged twice: if the first call finished, the retry gets 409 duplicate_request_already_processed; if it is still running, 409 duplicate_request_in_flight. Use a new key for each different request.

TDQS

A4.9/5.0
Behavior5/5

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

Adds important behavior beyond annotations: cost of 62 credits, return shape [{photo_id, score}], accepted point_id forms, and the point_not_found error for face point ids. Annotations already cover idempotency, openness, and non-destructiveness; the description adds the operational details an agent needs.

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 compact sentences, front-loaded with the core purpose, then the cost comparison, ID constraints, return format, and price. Every sentence carries useful information and there is no 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 five-parameter search tool with full schema coverage and annotations, the description covers the essential gaps: cost, return format, accepted ID types, and the specific error case. No output schema exists, but the return shape is stated, so an agent has enough to call and interpret the result.

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 schema documents all parameters. The description still adds meaning for point_id by specifying it must come from register_selfie for this collection and by explaining the UUID/unsigned-integer forms and the failure mode for face point ids. It does not add further meaning for limit or threshold, but those are already documented 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?

States a specific verb and resource: find a registered person's photos using a stored point_id. It clearly distinguishes this from search_faces by being cheaper and from index_photo by rejecting face point ids. An agent can identify the exact operation without opening the schema.

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?

Explicitly says when to use it: when you have the point_id returned by register_selfie and want to avoid resending the selfie. It also says when not to use it: face point ids from index_photo return reason=point_not_found. The alternative search_faces is named with a cost comparison.

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

search_facesSearch a collection by faceA
Idempotent
Inspect

Find the photos in a collection that contain the person in a query image (typically a selfie) or a 512-number embedding. Returns matches [{photo_id, score}] best first, plus photo_ids. When nothing matches, reason says why: no_face (no face found in the query) or low_quality_selfie. Costs 93 credits.

NameRequiredDescriptionDefault
limitNoMaximum number of matches to return.
gcs_keyNoObject key of the query face image on the CDN configured for your account (instead of a URL).
embeddingNoA 512-number face embedding (from register_selfie) instead of an image.
file_pathNoPath to the query face image on this computer (JPEG, PNG, WebP, GIF, BMP, TIFF or HEIC).
image_urlNoPublic http(s) URL of the query face image. SightRadar downloads it; it must be reachable from the internet.
thresholdNoMinimum cosine similarity for a match (0-1). Omit to use the calibrated default.
image_base64NoThe query face image as base64 (a data: URL is fine). Up to 30 MB decoded. Prefer image_url for large files.
collection_idYesCollection id.
idempotency_keyNoOptional. A retry that reuses the key is never charged twice: if the first call finished, the retry gets 409 duplicate_request_already_processed; if it is still running, 409 duplicate_request_in_flight. Use a new key for each different request.

TDQS

A3.9/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the cost (93 credits), the return shape ({photo_id, score} best first, plus photo_ids), and the named failure reasons (no_face, low_quality_selfie). The annotations already flag openWorldHint and idempotentHint, and the description's cost disclosure usefully explains why readOnlyHint is false; only rate limits and the semantics of 'score' are left implicit.

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 dense sentences: what it does, what it returns, what failures mean, and what it costs — front-loaded with the core purpose and free of filler. Every clause carries distinct information an agent needs before calling.

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

Completeness5/5

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

With no output schema, the description carries the return contract itself and does so: match list shape, ordering, parallel photo_ids, and reason codes for empty results. Combined with the 100%-covered schema and the cost disclosure, nothing material is missing 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?

Schema description coverage is 100%, so every parameter is already documented in the schema, including the embedding origin and the calibrated default for threshold. The description adds no syntax, format, or precedence guidance beyond what the schema already provides, 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 and resource with scope: find photos in a collection matching the person in a query image or a 512-number embedding. The 'in a collection' scoping separates it from a standalone face comparison, but it never names the neighboring tools (compare_faces, detect_faces, search_by_point_id) it should be distinguished from.

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 implied rather than stated: 'typically a selfie' hints at the common input, and the embedding path is described, but there is no explicit when-to-use vs. when-to-use-a-sibling guidance and no note on choosing among the five query modalities (file_path, image_url, gcs_key, image_base64, embedding).

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

submit_batchSubmit a batch jobAInspect

Queue up to 1000 photo URLs for background processing. op=index stores their faces in the collection; op=match matches them against the collection. Submitting is free; each photo costs 62 credits when it is processed (some accounts pay the real-time 93 for a batch of one photo). The collection is created if missing; one that is being deleted is refused with 409 collection_not_writable. Only URLs are accepted, not base64. Returns batch_id; poll get_batch or register a webhook to hear when it finishes. op=index results are readable with get_batch_photos. op=match results (the matched photo ids per photo) are delivered only to a webhook today: without webhook_endpoint_id the matches are charged but cannot be read back, so prefer search_faces for a few photos. URLs are not checked at submit time: unreachable ones fail individually later.

NameRequiredDescriptionDefault
opYesindex = store faces; match = search with each photo.
photosYesPhotos to process (1-1000).
overrideNoop=index only: replace faces of photos indexed before.
collection_idYesCollection to index into or match against.
idempotency_keyNoReusing a key returns the original batch instead of creating a duplicate. Use a new key for each different batch.
webhook_endpoint_idNoWebhook to notify when the batch completes.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations cover safety (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds substantial context beyond them: cost model (free submit, 62 credits per photo, 93 for real-time singles), the 409 collection_not_writable refusal, the no-base64 constraint, and that unreachable URLs fail individually after submission. It does not explain the idempotency_key behavior, which the schema carries instead, and says nothing about batch size limits on concurrency or duplicate URL handling.

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?

Front-loaded with purpose and the two ops, then cost, then error and result-access semantics. Dense but nearly every clause carries operational information; the parenthetical about the real-time 93 rate for a one-photo batch is a minor digression but relevant to cost decisions.

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 asynchronous batch-submission tool with no output schema, the description covers the full lifecycle: submit, pay, poll or webhook, and read results per op. It also warns of the costly failure mode where op=match results are charged but unreadable without a webhook, which is exactly the information an agent needs before invoking.

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 earns an extra point by explaining the consequence of the op enum choice (faces stored vs matched photo ids delivered only via webhook) and by clarifying that photos must be URLs, not base64. It adds little for override or webhook_endpoint_id specifically, but the op semantics it supplies are genuinely load-bearing.

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?

Opens with a specific verb and resource ('Queue up to 1000 photo URLs for background processing') and immediately disambiguates the two modes, op=index vs op=match. It also differentiates itself from siblings by naming search_faces as the alternative for small jobs, so an agent can place it precisely in the toolset.

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?

Explicit routing guidance: use search_faces for a few photos, poll get_batch or register a webhook for completion, read index results via get_batch_photos, and only use op=match when a webhook_endpoint_id is supplied. It states both when to use this tool and when to prefer another.

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. 27 tool updatesv0.1.1
    • First observedcompare_faces
    • First observedcreate_collection
    • First observedcreate_webhook
    • First observeddelete_collection
    • First observeddelete_photo
    • First observeddelete_webhook
    • First observeddetect_faces
    • First observedget_balance
    • First observedget_batch
    • First observedget_batch_photos
    • First observedget_collection
    • First observedget_deletion_status
    • First observedget_usage
    • First observedindex_photo
    • First observedlist_batches
    • First observedlist_collections
    • First observedlist_webhook_failures
    • First observedlist_webhooks
    • First observedrecreate_collection
    • First observedregister_selfie
    • First observedreplay_webhook_failures
    • First observedrequeue_failed_batch_photos
    • First observedrestore_collection
    • First observedrestore_photo
    • First observedsearch_by_point_id
    • First observedsearch_faces
    • First observedsubmit_batch

TDQS

A3.9/5.0

Scored across 27 tools

Disambiguation4/5

Most tools have sharply distinct roles, and the descriptions explicitly disambiguate the tricky pairs (search_faces vs search_by_point_id vs compare_faces; index_photo vs submit_batch; detect_faces vs register_selfie). The main friction points are clusters like create_collection/restore_collection/recreate_collection and get_batch/get_batch_photos/list_batches, which require reading the descriptions to pick correctly but are at least well documented.

Naming Consistency5/5

Every tool follows a consistent snake_case verb_noun pattern (list_collections, index_photo, delete_webhook, get_balance), including the longer requeue_failed_batch_photos and search_by_point_id. No camelCase or bare-noun outliers, so the pattern is fully predictable.

Tool Count3/5

27 tools is on the heavy side for a face-recognition API; the surface spans six sub-domains (collections, indexing, search, batches, webhooks, billing) and each is reasonably staffed, but there is consolidation headroom (e.g. get_batch vs get_batch_photos, three separate collection-creation tools). It is defensible but borderline bloated rather than tightly scoped.

Completeness4/5

Collection lifecycle is fully covered (create/get/list/delete/restore/recreate/status), and indexing, search, batch, webhook and billing workflows all have entry points. Minor gaps remain: there is no list_photos or get_photo to browse what is indexed in a collection (only counts and search), no face-level delete, and no update_webhook.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables MCP clients to manage AI voice assistants, place calls, run campaigns, handle contacts and knowledge bases, and read call transcripts. It also provides account, phone number, dialer, and analytics tools through a hosted or local MCP connection.
    25
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to run cross-platform batch photo-processing workflows—including RAW decoding, adjustments, noise reduction, white balance, LOG restoration, EXIF tagging, deduplication, selection, HTML galleries, folder watching, and presets—through a unified versioned JSON contract. It also exposes MCP tools for processing, suggestions, autopilot, indexing, search, selection, HDR, face blurring, and more.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI clients to discover, inspect, and run over 2,000 AI models and APIs through local MCP tools, with free data API calls and browser-based authorization. It supports workflows such as search, social media, scraping, e-commerce, finance, image/video/audio generation, and run/account management.
    556,724 npm
    MIT