Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,536Letters: 14Defects: 1,322counted 4 min ago
teppi

Server definition

Hash
sha256:121181515c0582e06958bb29bffd617b405b5b8bc4bf52c922ceb524c51ac4c4
What it is
What a remote MCP server returned when asked what it offers: 14 tools

The blob, as servednamed by its sha256

{ "instructions": "Verify that a photograph is a genuine camera capture and not AI-generated or manipulated. Use this when a user wants to verify photo authenticity, check whether an image is real or AI-generated, demonstrate that their photo was taken with a real camera (for a photography contest, an editor, a client, an insurance claim, or a legal dispute), or read an image's C2PA Content Credentials. Two ways to verify: (1) verify_content_credentials takes a single image, checks its embedded Content Credentials (C2PA), and runs advisory forensic screens (error-level analysis, double-JPEG artifacts, EXIF timestamp consistency, editing-software traces, screen recapture) — no RAW file needed, free (does not consume quota), and the completed verification includes a structured evidence report with a verdict, per-check findings, and coverage; (2) verify_photo takes the camera RAW file (CR2, CR3, NEF, ARW, RAF, ORF, DNG and other formats) plus the exported JPEG and runs independent forensic checks (sensor authenticity, structural similarity, perceptual hashing, metadata consistency, recapture detection) for the strongest evidence. Both return a shareable verification report; poll get_verification for the per-check result. Files are analyzed in memory and deleted immediately after verification. Works without an API key on a rate-limited anonymous tier.", "tools": [ { "description": "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_photo with the returned object_key values as raw_object_key / image_object_key.", "inputSchema": { "properties": {}, "title": "create_verification_uploadArguments", "type": "object" }, "name": "create_verification_upload", "outputSchema": { "additionalProperties": true, "title": "create_verification_uploadDictOutput", "type": "object" } }, { "description": "Get the authenticated account's monthly verification quota: plan, used, limit, and remaining. Call this before verify_photo to check the free-tier allowance.", "inputSchema": { "properties": {}, "title": "get_account_usageArguments", "type": "object" }, "name": "get_account_usage", "outputSchema": { "additionalProperties": true, "title": "get_account_usageDictOutput", "type": "object" } }, { "description": "Fetch 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.", "inputSchema": { "properties": { "listing_id": { "title": "Listing Id", "type": "string" } }, "required": [ "listing_id" ], "title": "get_listingArguments", "type": "object" }, "name": "get_listing", "outputSchema": { "additionalProperties": true, "title": "get_listingDictOutput", "type": "object" } }, { "description": "Poll the state of a verification's PSD export: status (pending|queued|in_progress|completed|failed), file size, canvas dimensions, downloads used, and download expiry.", "inputSchema": { "properties": { "verification_id": { "title": "Verification Id", "type": "string" } }, "required": [ "verification_id" ], "title": "get_psd_export_statusArguments", "type": "object" }, "name": "get_psd_export_status", "outputSchema": { "additionalProperties": true, "title": "get_psd_export_statusDictOutput", "type": "object" } }, { "description": "Retrieve 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. Works for both API-key callers (scoped to their account) and keyless anonymous callers (any anonymous verification, which are public by link).", "inputSchema": { "properties": { "verification_id": { "title": "Verification Id", "type": "string" } }, "required": [ "verification_id" ], "title": "get_verificationArguments", "type": "object" }, "name": "get_verification", "outputSchema": { "additionalProperties": true, "title": "get_verificationDictOutput", "type": "object" } }, { "description": "Get the current sharing configuration (access type, share URL, invited emails) for a verification.", "inputSchema": { "properties": { "verification_id": { "title": "Verification Id", "type": "string" } }, "required": [ "verification_id" ], "title": "get_verification_shareArguments", "type": "object" }, "name": "get_verification_share", "outputSchema": { "additionalProperties": true, "title": "get_verification_shareDictOutput", "type": "object" } }, { "description": "List the marketplace listings owned by your account (with pricing and sales totals).", "inputSchema": { "properties": { "limit": { "default": 50, "title": "Limit", "type": "integer" }, "offset": { "default": 0, "title": "Offset", "type": "integer" } }, "title": "list_my_listingsArguments", "type": "object" }, "name": "list_my_listings", "outputSchema": { "additionalProperties": true, "title": "list_my_listingsDictOutput", "type": "object" } }, { "description": "List 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.", "inputSchema": { "properties": {}, "title": "list_tagsArguments", "type": "object" }, "name": "list_tags", "outputSchema": { "additionalProperties": true, "title": "list_tagsDictOutput", "type": "object" } }, { "description": "List 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.", "inputSchema": { "properties": { "offset": { "default": 0, "title": "Offset", "type": "integer" }, "result": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Result" }, "size": { "default": 20, "title": "Size", "type": "integer" }, "status": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Status" }, "tag_match": { "default": "all", "title": "Tag Match", "type": "string" }, "tags": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Tags" } }, "title": "list_verificationsArguments", "type": "object" }, "name": "list_verifications", "outputSchema": { "additionalProperties": true, "title": "list_verificationsDictOutput", "type": "object" } }, { "description": "Request 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.", "inputSchema": { "properties": { "verification_id": { "title": "Verification Id", "type": "string" } }, "required": [ "verification_id" ], "title": "request_psd_exportArguments", "type": "object" }, "name": "request_psd_export", "outputSchema": { "additionalProperties": true, "title": "request_psd_exportDictOutput", "type": "object" } }, { "description": "Enable 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.", "inputSchema": { "properties": { "access_type": { "title": "Access Type", "type": "string" }, "invite_emails": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Invite Emails" }, "verification_id": { "title": "Verification Id", "type": "string" } }, "required": [ "verification_id", "access_type" ], "title": "share_verificationArguments", "type": "object" }, "name": "share_verification", "outputSchema": { "additionalProperties": true, "title": "share_verificationDictOutput", "type": "object" } }, { "description": "Disable sharing for a verification, making it private and invalidating its share link.", "inputSchema": { "properties": { "verification_id": { "title": "Verification Id", "type": "string" } }, "required": [ "verification_id" ], "title": "unshare_verificationArguments", "type": "object" }, "name": "unshare_verification", "outputSchema": { "additionalProperties": true, "title": "unshare_verificationDictOutput", "type": "object" } }, { "description": "Verify 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). Works without an API key on the keyless anonymous tier (rate-limited; returns an anonymous_user_id to reuse). For the strongest forensic check, use verify_photo with a RAW + JPEG pair instead.", "inputSchema": { "properties": { "anonymous_user_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Anonymous User Id" }, "image_base64": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Image Base64" }, "image_filename": { "default": "upload.jpg", "title": "Image Filename", "type": "string" }, "image_object_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Image Object Key" } }, "title": "verify_content_credentialsArguments", "type": "object" }, "name": "verify_content_credentials", "outputSchema": { "additionalProperties": true, "title": "verify_content_credentialsDictOutput", "type": "object" } }, { "description": "Verify 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). Without a key it runs on the keyless anonymous tier (rate-limited; returns an anonymous_user_id to reuse; anonymous verifications can't be listed or shared until you register).", "inputSchema": { "properties": { "anonymous_user_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Anonymous User Id" }, "image_base64": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Image Base64" }, "image_filename": { "default": "upload.jpg", "title": "Image Filename", "type": "string" }, "image_object_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Image Object Key" }, "raw_base64": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Raw Base64" }, "raw_filename": { "default": "upload.raw", "title": "Raw Filename", "type": "string" }, "raw_object_key": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Raw Object Key" } }, "title": "verify_photoArguments", "type": "object" }, "name": "verify_photo", "outputSchema": { "additionalProperties": true, "title": "verify_photoDictOutput", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:121181515c0582e06958bb29bffd617b405b5b8bc4bf52c922ceb524c51ac4c4 | sha256sum