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

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.