SightRadar

io.github.sightradar-hqPublished by GitHub account sightradar-hqv0.1.0Updated Nov 7, 2026

Face recognition: index photos, find a person's photos from a selfie, batches, webhooks, billing.

VerifiedStreamable HTTPWeb executable

Overview

SightRadar's hosted MCP server (mcp.sightradar.com); OAuth sign-in required; Streamable HTTP; 27 tools.

No AI overview yet: these facts come from the registry entry and the server itself.

Endpoint
mcp.sightradar.com
Last checked

Installation

In SourceWeft

  1. Open SightRadar in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.sightradar-hq%2Fsightradar-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

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

README

[SightRadar — Face Recognition API]

SightRadar MCP Server

Face recognition for AI assistants. Index event photos, find every photo a person appears in from one selfie, run batches, manage webhooks and billing, all from Claude, ChatGPT, Cursor, VS Code or any MCP client.

[npm version] [License: MIT] [Documentation]


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

Remote (hosted)Local (this package)
URL / commandhttps://mcp.sightradar.com/mcpnpx -y sightradar-mcp
Sign-inSightRadar account (email + password, Google or email link), or an API key as a Bearer tokenSIGHTRADAR_API_KEY
InstallNothingNode.js 20+
Images from your computerNo (URLs or base64)Yes, file_path

Remote server (recommended)

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):
    json
    { "mcpServers": { "sightradar": { "url": "https://mcp.sightradar.com/mcp" } } }

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

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

Local server

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

json
{  "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:

sh
claude mcp add sightradar --env SIGHTRADAR_API_KEY=frs_your_key -- npx -y sightradar-mcp
VariableDefault
SIGHTRADAR_API_KEY(required)API key
SIGHTRADAR_SCOPESread,search,write,deleteWhich tool groups to expose. all adds account; read gives a read-only server.
SIGHTRADAR_FILE_ROOTSyour home folderFolders file_path may read (separated by : on macOS/Linux, ; on Windows). none turns file_path off.
SIGHTRADAR_BASE_URLhttps://api.sightradar.comAPI base URL
SIGHTRADAR_TIMEOUT_MS120000Per-request timeout
SIGHTRADAR_DEBUGunsetLog 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_collectionsCollections with photo, face and selfie counts; search and paging
get_collectionOne collection's status and counts (verify recounts from the vector store)
get_deletion_statusProgress of a collection deletion
list_batches / get_batch / get_batch_photosBatch jobs, status (one or up to 5000 at once) and per-photo results
list_webhooks / list_webhook_failuresWebhook endpoints and dead-lettered deliveries
get_balance / get_usageCredit balance; usage summary, daily series or storage

search — spends credits, stores nothing

ToolCredits
search_faces93Find every photo in a collection containing the person in a selfie (or an embedding)
search_by_point_id62Repeat a registered selfie's search without re-sending it
detect_faces93Faces, bounding boxes and quality in an image
compare_faces93 per imageAre two faces the same person?

write — spends credits / stores data

ToolCredits
index_photo93Store a photo's faces in a collection
register_selfie93Store a person's selfie; returns its point id and embedding
submit_batch62 per photoUp to 1000 photo URLs, index or match, processed in the background
requeue_failed_batch_photos62 per photoRetry failed batch photos (preview, then execute)
create_collection / recreate_collectionfree
create_webhook / replay_webhook_failuresfreeSigned deliveries for batch and deletion events

delete — free

Tool
delete_collectionSoft delete with a 7-day restore window by default; immediate or compliance erase permanently
restore_collectionUndo a soft delete
delete_photo / restore_photoRemove or restore one photo's faces
delete_webhookStop deliveries to an endpoint

account — free, off by default on the local server

Tool
list_api_keys / create_api_key / revoke_api_keyAPI keys
get_profile / update_profileName and organization
get_billing_settings / update_auto_recharge / get_invoiceAuto-recharge, orders and invoice PDFs
get_notification_settings / update_notification_settings / manage_notification_recipientEmail alerts and extra recipients
list_team_membersOrganization members

Prompts and resources

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

PromptWhat it does
find_person_in_eventChecks the balance, searches a collection with a selfie and lists the matching photos
index_event_photosPicks index_photo or submit_batch by photo count and states the cost before starting
account_healthBalance, 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 seeMeaning
401 / unauthorizedThe API key was revoked or mistyped. Create a new one at sightradar.com/dashboard/keys; remote connections: reconnect.
402 / insufficient_creditsTop up at sightradar.com/dashboard/billing.
409 / duplicate_request_already_processedThat idempotency_key was already used and charged; the earlier call succeeded.
file_path ... is outside the folders this server may readAdd the folder to SIGHTRADAR_FILE_ROOTS (:-separated on macOS/Linux, ; on Windows).
429Over 50 requests/s per key or 10 in flight per account. Wait and retry.

Development

sh
npm installnpm test          # unit tests against a mocked APInpm run buildSIGHTRADAR_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.

Links

MIT licensed.

Source: README.md at commit bffca2c

Tools

27

list_collections

List collections

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

Parameterslimitqueryoffsetstatus

get_collection

Get a collection

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.

Parametersverifycollection_idrequired

create_collection

Create a collection

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.

Parameterscollection_idrequired

delete_collection

Delete a collection

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. Confirm with the user before calling this. Free.

Parametersimmediatecompliancecollection_idrequiredconfirm_erase

get_deletion_status

Check a collection deletion

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.

Parameterscollection_idrequired

restore_collection

Restore a deleted collection

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.

Parameterscollection_idrequired

recreate_collection

Recreate a purged collection

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

Parameterscollection_idrequired

delete_photo

Delete a photo's faces

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 still succeeds. Free.

Parametersphoto_idrequiredimmediatecompliancecollection_idrequired

restore_photo

Restore a deleted photo

Undo a soft photo deletion made with delete_photo. Free.

Parametersphoto_idrequiredcollection_idrequired

index_photo

Index a photo

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. The collection is created if missing. Costs 93 credits.

Parametersgcs_keyoverridephoto_idfile_pathimage_urlimage_base64collection_idrequiredidempotency_key

search_faces

Search a collection by face

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.

Parameterslimitgcs_keyembeddingfile_pathimage_urlthresholdimage_base64collection_idrequiredidempotency_key

search_by_point_id

Search by a stored face

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.

Parameterslimitpoint_idrequiredthresholdcollection_idrequiredidempotency_key

register_selfie

Register a selfie

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.

Parametersgcs_keyuser_idrequiredfile_pathimage_urlselfie_idimage_base64collection_idrequiredidempotency_key

detect_faces

Detect faces

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.

Parametersgcs_keyfile_pathimage_urlimage_base64idempotency_key

compare_faces

Compare two faces

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.

Parameterssource_urltarget_urlsource_gcs_keytarget_gcs_keyidempotency_keysource_embeddingtarget_embedding

submit_batch

Submit a batch job

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. URLs are not checked at submit time: unreachable ones fail individually later.

Parametersoprequiredphotosrequiredoverridecollection_idrequiredidempotency_keywebhook_endpoint_id

list_batches

List batch jobs

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.

Parameterslimitbefore_idbefore_created

get_batch

Get batch status

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.

Parametersbatch_idbatch_ids

get_batch_photos

Get per-photo batch results

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

Parameterslimitbatch_idrequiredafter_index

requeue_failed_batch_photos

Retry failed batch photos

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.

Parameterslimitexecuterequiredpreview_idreason_codecreated_aftercreated_beforestagger_seconds

list_webhooks

List webhooks

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

Parametersstatus

create_webhook

Add a webhook

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

Parametersurlrequiredsecret

delete_webhook

Disable a webhook

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

Parameterswebhook_endpoint_idrequired

list_webhook_failures

List failed webhook deliveries

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

Parameterslimit

replay_webhook_failures

Replay failed webhook deliveries

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

Parametersdelivery_ids

get_balance

Get credit balance

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.

Takes no parameters.

get_usage

Get usage

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.

Parameterstodaysfromgranularity

Version history

1
  1. v0.1.0LatestNov 3, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts