From zero to a verdict in three steps
There is no password, no sales call, and no going-live step. The key you get below is your production key — sign up with GitHub and it starts with 20 free pages, so it works at once. After that a cent buys a page. Every step works from this page or from a terminal, whichever you prefer.
Access via an extension or API call. The extension lets your AI assistant check documents before it reads them. The API does the same from inside your own code. The same key opens both, billed from the same balance.
1 · Sign up, get your key
One GitHub account is one HiddenContent account, and signing in again gets you a new key if you lose yours. We ask GitHub for your email address and nothing else — no repository access.
Open github.com/login/deviceand enter this code. This page will pick up from there.
curl -X POST https://api.hiddencontent.ai/v1/signup \ -H 'content-type: application/json' \ -d '{"email": "[email protected]", "name": "Your Company", "source": "curl", "acceptTerms": "I have read and agree to the Terms of Service at https://hiddencontent.ai/terms"}' # → { "customerId": "cus_…", "token": "hcs_live_…", "livemode": true, … }# Store the token now — only its hash is kept, so it is shown exactly once.Or POST /v1/signup/github runs a device flow and lands on the same kind of account — and signing in again later recovers it. Details in the API documentation.
Only its hash is stored, so this is the one time it can be shown. If you lose it you will need a new one.
A cent buys a page, and the key starts working the moment credit lands. Buy some now:
Opens Stripe. $10 is the minimum and buys 1,000 pages.
Would you like a few free credits to try it out first? Email [email protected] and we will put some on your account.
2 · Buy credit
If you have just signed up above, the Buy credit button is beside your key — that is this step, and it opens Stripe directly.
Opens Stripe, and the credit lands on the account the key belongs to. The key is sent to our API to start the purchase and is not kept by this page.
Lost your key? If you signed up with GitHub, sign in with GitHub again in step 1 and a new one is issued for the same account. Otherwise email [email protected].
Would you like a few free credits to try it out first? Email [email protected] and we will put some on your account.
curl -X POST https://api.hiddencontent.ai/v1/billing/checkout \ -H "authorization: Bearer $HCS_KEY" \ -H 'content-type: application/json' \ -d '{"amountCents": 1000}' # → { "url": "https://checkout.stripe.com/…", "pages": 1000, … }# Open the url, pay $10, and 1,000 pages land on your balance.Minimum $10, maximum $5,000 per purchase. Purchased credit never expires, and unused balance is refundable on request. Card details go to Stripe's hosted page — they never touch this API.
3 · Use it
Protect every document you hand to your AI assistant, or run the check inside your own code where untrusted files arrive.
Share a document with your agent as you normally would. It checks the file before acting on it and shows you anything that was hidden — so a concealed instruction gets reported to you rather than followed.
The steps depend on which app you use. Find yours in the table, then open its section below. Nothing else on this page changes.
| Your app | Full check on attachments | Runs on its own |
|---|---|---|
| Claude web or mobile | Yes, with two settings on | Yes, as is |
| Claude Desktop | Yes, on your machine | With the skill |
| ChatGPT web or desktop | Yes, in Developer mode | With one instruction |
| Claude Code, Cursor, other | Yes, on your machine | Ask for it |
Claude on the web or mobile — one click to add, two switches to check, every plan including Free
- Add it to Claude in one click. That opens Claude’s add-connector dialog with our address already filled in. If you would rather add it by hand, the address is
https://api.hiddencontent.ai/v1/mcp. - Claude sends you to a page of ours asking for your key from step 1. That tells us which account to bill. It is entered on our page, over TLS, and is not stored.
- Approve it. You are back in Claude. The first time it checks something, Claude asks whether to allow the tool — choose Always allow.
- Turn on two switches in Claude. Go to Settings → Capabilities and make sure both Code execution and file creation and Allow network egress are on. Claude needs both to send us an attached file. Leave either off and the check still runs, but it sees far less — see below.
What you get. Attach a document and Claude checks it before acting on it, with no skill to install. Claude sends the file to us from its own environment, so the real file is analysed: white text, tiny text, text behind images, tracked changes. A link to a document works the same way.
Why those two switches decide how much gets checked. Concealment is a property of the file, not of its words. White text, tiny fonts and text behind an image do not survive being flattened into plain text, so a check handed only text cannot see them — it catches invisible characters and nothing else. Sending the file itself is the only way to catch the rest, and Claude can only do that with code execution and network egress both on. A result that says the check was partial is telling you it received text rather than the file; those two switches are what to look at.
Connecting creates a key on your account called Claude connector, so its usage is itemised beside everything else. Revoke that key to disconnect it.
Claude Desktop — reads files in place, nothing leaves your machine
- Download hiddencontent.mcpb and open it — Claude Desktop installs it.
- Paste the key from step 1 when it asks.
- Switch it on in Settings → Extensions. A new extension stays off until it has a key, so it can look installed and do nothing.
- Install the skill, or it will not run on its own. Ask Claude: “install the skill at hiddencontent.ai/skill.md”, or open skill.md and paste it in.
- Confirm the extension is activated: ask Claude “do you have a check_document tool?” If it says no, go back to step 3 and ensure the extension is turned on.
- Then share a document and ask about it as you normally would. Claude will screen it for hidden content before it processes it.
The skill makes the document check automatic. The extension gives your agent the ability to check a document. The skill makes Claude check the document as soon as you share it. With just the extension and without the skill you have to ask Claude to check the document every time.
ChatGPT, web or desktop — set up once on the web; the desktop app picks it up
Set-up happens on the web, through Developer mode — the same way Vercel, Zapier and Drata ship theirs. The desktop app then has it too, with nothing extra to install. Needs Plus, Pro, Business or Enterprise; not available on Free or on the phone app. Ours is a read-only tool, which every eligible plan allows.
Know what Developer mode costs before you turn it on. OpenAI labels it elevated risk and describes it as “powerful but dangerous… intended for developers who understand how to safely configure and test apps”, because it gives ChatGPT full MCP support for all tools, read and write — not just ours. It has to stay on for the connector to keep working, so it is a standing setting, not a one-off. Our tool is read-only and cannot change anything; the risk you are accepting is from any OTHER server you add while it is on. If that is not a trade you want, the Claude connector needs no such setting, and a published listing would remove the requirement here too — that is on our list.
- Settings → Security and login → Developer mode, on.
- Go to Plugins, choose +, and give it the server address
https://api.hiddencontent.ai/v1/mcp. Authentication is OAuth; leave the client ID blank and ChatGPT registers one itself. - You land on a page of ours asking for your key from step 1. It is entered on our page, over TLS, and identifies the account this bills.
- Back in ChatGPT, open the plugin and press Refresh if it says no actions are available yet — it scanned before it had signed in.
- Make it automatic. Without this, ChatGPT reads the document first and checks only when asked. Settings → Personalization → Custom instructions, and paste this — it made the check fire unprompted on the first try, and it applies on the desktop app as well:
Whenever I attach or share a document, run check_document from Hidden Content on it before you summarise, quote, extract from, or act on anything in it. If the result is not a full check (scope is not "file"), say so rather than proceeding as if it passed.What you get. Attach a file and it is checked in full: ChatGPT hands a connector a download link for the attachment, so the real file is analysed. Verified in both the web and the desktop app.
For a whole company. A Business or Enterprise admin turns on Developer mode under Workspace Settings → Permissions & Roles, creates a custom MCP app from the address above, and publishes it to the workspace. Everyone in it then gets the connector without touching Developer mode themselves.
Desktop only: keep files on your machine instead
Optional, and the connector above already works. Choose this if you would rather documents never left your computer: the desktop app can run our local server instead. Settings → MCP servers → Add server, then:
- Name:
hiddencontent - Type: STDIO
- Command:
npx - Arguments:
-y @hiddencontent/mcp - Environment:
HCS_API_TOKEN= your key from step 1
Claude Code, Cursor, or another MCP client — one config snippet
{ "mcpServers": { "hiddencontent": { "command": "npx", "args": ["-y", "@hiddencontent/mcp"], "env": { "HCS_API_TOKEN": "hcs_live_…" } } }} // The same snippet works in Claude Code and Cursor.One endpoint, seven formats, a verdict, and a signed certificate — or the named reason there is none. This is the path if you are putting documents through a pipeline. Every route, field and error is in the API documentation.
curl -X POST https://api.hiddencontent.ai/v1/analyze \ -H "authorization: Bearer $HCS_KEY" \ -F '[email protected]' # → { "verdict": "clean", "findings": [], "certificate": { … }, … }# …or, when something is hidden in the file:# → { "verdict": "suspicious",# "findings": [{ "technique": "docx.vanish", "excerpt": "…", … }], … }Either way it is the same account and the same balance. See a real analysis end to end, certificate included, before you run your own. GET /v1/usage shows your balance; 402 tells you the exact shortfall before anything is charged. Optional: auto-refill — below X pages, charge $Y — is one consented call away, and one call to turn off. See the docs.
Not ready to integrate?
Leave your email and a line — a human reads these and replies. Or write to [email protected] directly.