Lumethic

Lumethic checks whether a photo is a real, unmodified camera capture.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Get Account Usage: Get the authenticated account's monthly verification quota: plan, used, limit, and remaining. Call this before verify_photo to check the free-tier allowance.
  • Get Upgrade Link: Get a link to upgrade the account's plan on the Lumethic website (for example after a QUOTA_EXCEEDED or NOT_ENTITLED error). The link opens the sign-in page with the user's email pre
  • Create Verification Upload: Get pre-signed S3 PUT URLs to upload a large RAW + JPEG directly (avoids inlining bytes and bypasses request-size limits). PUT each file to its upload_url, then call verify

What data it sees

Do you need an account

No: the server works without sign-in

Lumethic checks whether a photo is a real, unmodified camera capture. Give it the RAW file and the JPEG export from the same shot for a forensic comparison, or a single image to validate its C2PA Content Credentials. You get an authenticity verdict with confidence, per-check findings, and a shareable report.

From your assistant you can verify photos, tag and annotate them, share reports, request layered PSD exports, and publish verified work to a public portfolio page. 32 tools, all annotated as read-only, open-world or destructive so the assistant asks before anything irreversible.

Connect from the assistant: the first connection opens a Lumethic sign-in screen, you enter your email and the six-digit code we send, and you choose what the assistant may do. New addresses get a free account with 5 verifications a month; Content Credentials checks are free and unlimited. Servers and scripts can use an API key as the bearer token instead.

Claude Code: claude mcp add --transport http lumethic https://api.lumethic.com/mcp

Docs and full tool reference: https://www.lumethic.com/en/mcp

How to connect

How to connect Lumethic to Claude

The server address to paste into Claude settings:

https://lumethic.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect Lumethic to ChatGPT

The server address to paste into ChatGPT settings:

https://lumethic.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect Lumethic to Cursor

The server address to paste into Cursor settings:

https://lumethic.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (32)

Raw names from tools/list. Only developers need these.

get_account_usageGet the authenticated account's monthly verification quota: plan, used, limit, and remaining. Call this before verify_photo to check the free-tier allowance.
get_upgrade_linkGet a link to upgrade the account's plan on the Lumethic website (for example after a QUOTA_EXCEEDED or NOT_ENTITLED error). The link opens the sign-in page with the user's email prefilled and then the plan page; it contains no credentials. Show it to the user. Calling it records that an upgrade link was requested.
create_verification_uploadGet pre-signed S3 PUT URLs to upload a large RAW + JPEG directly (avoids inlining bytes and bypasses request-size limits). PUT each file to its upload_url, then call verify_photo with the returned object_key values as raw_object_key / image_object_key.
verify_photoVerify a photo's authenticity from a RAW camera file and its JPEG export. Provide the files either inline as raw_base64 + image_base64 (small files), or — for large files — call create_verification_upload first and pass the returned raw_object_key + image_object_key. Returns a verification id; poll get_verification for the result. With an API key this counts against your monthly quota (free tier: 5/month).
verify_content_credentialsVerify a single image's authenticity — use this when you only have the image and no RAW camera file. Checks its embedded Content Credentials (C2PA) for capture provenance and AI-generation flags, and runs advisory forensic screens (error-level analysis, double-JPEG artifacts, EXIF timestamp consistency, editing-software traces, screen recapture). Free: it does not consume your verification quota. Provide the image inline as image_base64, or — for large files — call create_verification_upload and pass the returned image_object_key. Returns a verification id; poll get_verification, which on completion includes a structured evidence_report (verdict, per-check findings, coverage). For the strongest forensic check, use verify_photo with a RAW + JPEG pair instead.
get_verificationRetrieve a verification by id: processing status and per-algorithm authenticity results. Completed single-image (image_only) verifications also include a verdict and a structured evidence_report with per-check findings and coverage. Scoped to the caller's account.
list_verificationsList the account's verifications, most recent first. Optional filters: status (pending|queued|in_progress|completed|failed), result (true=authentic, false=not), tags (list of tag names, case-insensitive) and tag_match ('all' = every listed tag must be on the verification, the default; 'any' = at least one). Use list_tags to discover names.
list_tagsList the account's tag vocabulary: id, name, colour and how many verifications carry each tag. Tags are assigned in the web app or via PUT /v1/verifications/{id}/tags; pass the names to list_verifications' tags filter.
request_psd_exportRequest a layered flicker-comparison PSD for a completed RAW+JPEG verification you own: the original photo, the pixel-registered RAW rendition, and the SSIM difference heatmap as layers, for A/B toggling in Photoshop. Professional plan only (monthly allowance included, metered beyond it). Generation is asynchronous — poll get_psd_export_status until status is 'completed', then download the file from the verification page in the web app. Idempotent: re-requesting returns the existing export's state, and a failed export is retried at no extra charge.
get_psd_export_statusPoll the state of a verification's PSD export: status (pending|queued|in_progress|completed|failed), file size, canvas dimensions, downloads used, and download expiry.
share_verificationEnable or update sharing for a verification you own. access_type is 'anyone_with_link' (public URL) or 'restricted' (only invited emails). Optionally pass invite_emails to grant access. Returns the share URL and invited emails. Anonymous verifications can't be shared.
get_verification_shareGet the current sharing configuration (access type, share URL, invited emails) for a verification.
unshare_verificationDisable sharing for a verification, making it private and invalidating its share link.
get_listingFetch a marketplace listing by id: title, description, per-license pricing, terms, and sales totals. There is no public directory — you must know the listing UUID.
list_my_listingsList the marketplace listings owned by your account (with pricing and sales totals).
set_verification_tagsReplace the tags on a verification with exactly this list (empty list clears them). Unknown names are created in the account's vocabulary; matching is case-insensitive. Names are 1-40 characters, no commas, at most 20 per verification. Returns the verification's tags after the change.
add_verification_tagsAdd tags to a verification, keeping the ones already on it. Unknown names are created. Returns the verification's full tag list after the change.
remove_verification_tagRemove one tag (by name or tag id) from a verification. The tag stays in the account's vocabulary. Returns the remaining tags.
update_tagRename and/or recolour a tag in the account's vocabulary (by name or tag id). A rename shows on every verification carrying it. color is '#rrggbb'; pass an empty string to clear it. Omit a field to leave it unchanged.
delete_tagDelete a tag (by name or tag id) from the account's vocabulary and detach it from every verification. The verifications themselves are untouched.
list_verification_commentsList the internal comments on a verification you own, oldest first, with author names. Comments are private notes visible to the owning account only.
add_verification_commentPost an internal comment (1-4000 characters) on a verification you own, authored by the connected user. Use it for client feedback, decisions, or context worth keeping with the report.
update_verification_commentReplace the text of a comment the connected user wrote. Marks it as edited; the old text is not kept.
delete_verification_commentDelete a comment. Allowed for its author and for admins of the account.
get_portfolioGet the account's verified portfolio: slug, public URL, published state, and every item with its title, position and whether it is publicly shared. A portfolio is a public page of verified photos (paid plans).
create_portfolioCreate the account's portfolio (one per account, starts unpublished; paid plans only). slug is the public URL path: 3-30 lowercase letters, digits and single hyphens. display_name is 1-80 characters; tagline (max 160) and website_url (https) are optional.
update_portfolioChange the portfolio's display_name, tagline, website_url or slug, or publish/unpublish it with published=true/false. Pass an empty string to clear tagline or website_url; omit fields to leave them. The slug can change at most 3 times per 30 days. Unpublishing always works; other changes need a paid plan.
delete_portfolioDelete the portfolio and all its items. The verifications and their share links are untouched. Confirm with the user first.
add_portfolio_itemAdd one of the account's verifications to the portfolio (max 50), with an optional title (max 80). IMPORTANT: this makes the verification publicly viewable: a public share link is created, or an invite-only share is upgraded to public. Tell the user before calling it. The response's share_effect says what happened (none, created, upgraded).
update_portfolio_itemSet an item's title (max 80 characters) or clear it with an empty string.
reorder_portfolio_itemsSet the display order. verification_ids must contain every current item exactly once, in the desired order (first = shown first).
remove_portfolio_itemRemove a verification from the portfolio. Its public share link stays active; call unshare_verification as well if the user wants it private again.