PDFCheck MCP

PDF मेटाडेटा देखें, AI-जनित सामग्री का पता लगाएं, संपादन इतिहास जांचें और प्रामाणिकता सत्यापित करें।

दस्तावेज़

Connect over HTTP

Add this URL to a client that supports remote HTTP MCP servers. For account access, configure a bearer Authorization header.

https://pdfcheck.online/api/mcp

Copy failed. Select the code and copy it manually.

Anonymous metadata analysis: 10 checks per day per IP. Free account: 100 checks per day. Individual tools can have different limits.

Without token (10 free checks/day)

To analyze a PDF, your assistant needs a file-reading tool that can send its base64 contents. Connecting MCP alone does not provide access to your files.

{
    "mcpServers": {
        "pdfcheck": {
            "url": "https://pdfcheck.online/api/mcp"
        }
    }
}

Copy failed. Select the code and copy it manually.

Client configuration

Connect your app

Replace YOUR_API_TOKEN in your client configuration. Remove the Authorization header to use anonymous access.

Cursor

{
    "mcpServers": {
        "pdfcheck": {
            "url": "https://pdfcheck.online/api/mcp",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}

Copy failed. Select the code and copy it manually.

Official setup docs

VS Code

{
    "servers": {
        "pdfcheck": {
            "type": "http",
            "url": "https://pdfcheck.online/api/mcp",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}

Copy failed. Select the code and copy it manually.

VS Code uses a servers object and an explicit HTTP transport. Store your token through your client’s supported secret settings.

Official setup docs

Windsurf / Cascade

{
    "mcpServers": {
        "pdfcheck": {
            "serverUrl": "https://pdfcheck.online/api/mcp",
            "headers": {
                "Authorization": "Bearer YOUR_API_TOKEN"
            }
        }
    }
}

Copy failed. Select the code and copy it manually.

These steps apply to the legacy Cascade client, now documented under Devin Desktop. Devin Local uses a different configuration; follow its current client documentation.

Official setup docs

Check the connection

Ask your assistant to call check_usage first. Then analyze a PDF using a client that can read and base64-encode the file. A local file path alone does not work with remote HTTP.

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "check_usage",
        "arguments": {}
    }
}

Copy failed. Select the code and copy it manually.

Available MCP Tools

These MCP tools cover metadata analysis and account history. Compression, structural validation, signing, and other browser tools are not exposed by these methods.

ToolParametersAccess
analyze_pdffile_base64, filenameNo token required
get_analysistokenPublic result or account token
list_analyses{}Account token
check_usage{}No token required

analyze_pdf

Inspect metadata, dates, software fields, and page count. The remote tool takes file_base64 and filename; the local bridge takes filePath. Metadata does not prove authenticity or AI authorship.

get_analysis

Use the returned data.id as token to retrieve your account analysis or a public result. The remote server allows public-result retrieval anonymously; the local bridge requires a token. New anonymous analyses are private and cannot be retrieved later.

list_analyses

Requires an API token. The remote server returns up to 50 recent account analyses; the local bridge returns the first REST page. Entries include file names, dates, and analysis IDs.

check_usage

Check the remaining daily metadata allowance. Remote HTTP supports anonymous usage; account details and the local bridge require an API token.

Send the PDF contents

The analyze_pdf tool accepts file_base64 and filename. Your client must read the PDF and encode it as base64; a local file path alone will not work.

{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "analyze_pdf",
        "arguments": {
            "file_base64": "BASE64_PDF_CONTENT",
            "filename": "document.pdf"
        }
    }
}

Copy failed. Select the code and copy it manually.

Read the response

Tool results contain JSON text in result.content[0].text. Parse that text to read success, data and remaining_checks; failures may also return isError.

if (response.error) throw new Error(response.error.message);
const payload = JSON.parse(response.result.content[0].text);
if (response.result.isError || payload.success === false) {
  throw new Error(payload.message || payload.error);
}
console.log(payload.data, payload.remaining_checks);

Copy failed. Select the code and copy it manually.

Use the local bridge

Save the following file as pdfcheck-mcp-server.mjs anywhere on your machine. This lightweight script bridges your AI tool and the PDFCheck API.

The optional local script needs Node.js 18 or later. Remote HTTP connections do not require Node.js or a downloaded script.

Save the script in a dedicated directory, install its dependencies there, and use the full script path in your client configuration.

mkdir pdfcheck-mcp
cd pdfcheck-mcp
npm init -y
npm install @modelcontextprotocol/sdk@1 zod

Copy failed. Select the code and copy it manually.

MCP Server Script

#!/usr/bin/env node
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { readFileSync } from "node:fs";
import { basename } from "node:path";

const API_BASE = "https://pdfcheck.online/api/v1";
const TOKEN = process.env.PDFCHECK_API_TOKEN || null;
const headers = TOKEN
  ? { Authorization: \`Bearer ${TOKEN}\`, Accept: "application/json" }
  : { Accept: "application/json" };

const server = new McpServer({ name: "pdfcheck", version: "1.0.0" });
const result = (data) => ({
  content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
});

server.tool(
  "analyze_pdf",
  "Inspect PDF metadata, dates, software fields, and page count.",
  { filePath: z.string().describe("Absolute path to the PDF file") },
  async ({ filePath }) => {
    const file = new Blob([readFileSync(filePath)], { type: "application/pdf" });
    const body = new FormData();
    body.append("file", file, basename(filePath));
    const response = await fetch(\`${API_BASE}/pdf/analyze\`, {
      method: "POST", headers, body,
    });
    return result(await response.json());
  }
);

server.tool(
  "get_analysis",
  "Retrieve an accessible analysis by its share token.",
  { token: z.string().describe("Analysis share token") },
  async ({ token }) => {
    const response = await fetch(\`${API_BASE}/pdf/${encodeURIComponent(token)}\`, { headers });
    return result(await response.json());
  }
);

server.tool("list_analyses", "List your account analyses.", {}, async () => {
  const response = await fetch(\`${API_BASE}/pdf\`, { headers });
  return result(await response.json());
});

server.tool("check_usage", "Check your account allowance.", {}, async () => {
  const response = await fetch(\`${API_BASE}/user\`, { headers });
  return result(await response.json());
});

await server.connect(new StdioServerTransport());

Copy failed. Select the code and copy it manually.

Claude / Cursor

Replace the script path with its absolute location. Set PDFCHECK_API_TOKEN to your account token, or omit env for anonymous analysis.

{
    "mcpServers": {
        "pdfcheck": {
            "command": "node",
            "args": [
                "/absolute/path/pdfcheck-mcp-server.mjs"
            ],
            "env": {
                "PDFCHECK_API_TOKEN": "YOUR_API_TOKEN"
            }
        }
    }
}

Copy failed. Select the code and copy it manually.

After connecting, use these prompts with a client that can read the requested files. Remote analyze_pdf needs file_base64 and filename; a local path alone is not enough. The local bridge accepts filePath.

{
    "name": "analyze_pdf",
    "arguments": {
        "filePath": "/absolute/path/document.pdf"
    }
}

Copy failed. Select the code and copy it manually.

Usage Examples

After connecting, use these prompts with a client that can read the requested files. Remote analyze_pdf needs file_base64 and filename; a local path alone is not enough. The local bridge accepts filePath.

Analyze a PDF

Analyze the file /Users/me/Documents/contract.pdf and tell me when it was created and what software was used.

Inspect software indicators

Inspect the creator and producer fields in /Users/me/Downloads/report.pdf. Explain the software indicators without treating them as proof of AI authorship.

Batch analysis

Analyze the PDFs I select from my Downloads folder one at a time. Compare their reported creation and modification dates, and explain missing or inconsistent metadata.

Check quota

How many PDF checks do I have left today on PDFCheck?

Usage and limits

Anonymous metadata analysis: 10 checks per day per IP. Free account: 100 checks per day. Individual tools can have different limits.

For metadata analysis: anonymous and Free uploads are limited to 50 MB. Pro and AI uploads are limited to 100 MB.

API metadata analysis uses a bounded, lightweight mode. Detailed font, image and color analysis is skipped; metadata.basic.partial_analysis is true.

Metadata and software indicators do not prove authorship, authenticity or standards compliance.

Generate an API token Optional

Treat tokens as secrets. Use an environment variable and revoke unused tokens in your account.

Anonymous access allows 10 metadata analyses per day per IP. A free account with an API token has 100 checks per day. Use the token when analyzing if you want to retrieve the result through your account later.

What is the Model Context Protocol?

The Model Context Protocol (MCP) lets an AI assistant discover and call external tools. PDFCheck uses it to expose PDF metadata analysis and account history to supported clients.

The remote HTTP server receives base64-encoded PDF contents from your client. The optional local bridge reads a PDF from your machine and uploads it to the REST API. Both return metadata analysis as JSON inside content[0].text.

Choose your transport

Use a client that supports remote HTTP MCP with bearer headers, or a client that can run the local stdio bridge. OAuth-only connections are not supported by this setup.

The PDF is sent to PDFCheck over HTTPS. Your MCP client or AI provider may also handle the file or tool arguments, depending on its design. Review its data policy and the PDFCheck Privacy Policy before sending sensitive documents.

Privacy Policy

Frequently Asked Questions

Do I need an API token?

Anonymous access allows 10 metadata analyses per day per IP. A free account with an API token has 100 checks per day. Use the token when analyzing if you want to retrieve the result through your account later.

Are my PDF files stored on your servers?

The API does not retain the original checker upload after the request. Extracted metadata and result records are retained according to your account status and our Privacy Policy.

Does the MCP server send my files to a third party?

The PDF is sent to PDFCheck over HTTPS. Your MCP client or AI provider may also handle the file or tool arguments, depending on its design. Review its data policy and the PDFCheck Privacy Policy before sending sensitive documents.

What if my AI tool is not listed here?

Check whether your client supports remote HTTP MCP with bearer headers or can run a local stdio server using command and args. Configuration formats vary. OAuth-only remote connections are not supported by this setup.

Can I use this with my own self-hosted PDFCheck instance?

Yes. Change the API_BASE constant in the server script to point to your own instance URL.