Find Any File Someone Sent You on WhatsApp, with Claude (2026)
Someone sent you the contract in WhatsApp three weeks ago. Ask Claude to find it by type, filename, sender and date, across every chat, without sending anything.
Daniel Roth6 min read

On this page
- How does Claude search WhatsApp documents?
- What do you need before you start?
- The prompt: find a PDF across all chats
- Other searches that work the same way
- How do you get the file itself?
- How do you know "not found" is true?
- What can go wrong?
- Is it safe to let Claude search your chats?
- Related guides
- Frequently asked questions
The landlord sent the lease addendum in WhatsApp. Or was it the accountant? It was a PDF, sometime this month, and WhatsApp's own search wants a name to look in before it shows you anything.
Ask Claude to find it instead. With the Blueticks WhatsApp MCP connector, Claude can search every chat at once for documents or images, filtered by type, filename, sender and date. The search only reads, so nothing gets sent.
How does Claude search WhatsApp documents?
Claude calls the chats tool's list_messages action without naming a chat, which searches across all chats. You narrow it with filters: message_types, mime, filename_contains, has_media, sender, and a since date. Keywords go in query_any, which matches the message text, the caption, or the filename.
The tool defines these filters:
| Filter | What it matches |
|---|---|
message_types | Kinds of message, for example ["document"] |
mime | A prefix of the media type: application/pdf for PDFs, image/ for any image |
filename_contains | A case-insensitive piece of the document's filename |
has_media | true keeps only messages with a downloadable attachment |
sender | A case-insensitive piece of the sender's phone number or ID |
query_any | Up to 24 keywords; a message matches if any one hits its text, caption or filename |
since / until | An ISO 8601 date range |
You never type these. You describe the file in plain words and Claude picks the filters. The names help when a search misses and you want to say "try the filename instead."
What do you need before you start?
A linked WhatsApp number in Blueticks and the connector added to Claude. If you have not done that, how to connect WhatsApp to Claude covers it in a few steps. The connector URL is https://api.blueticks.co/mcp and you sign in with OAuth, so no key is pasted into Claude.
Standard accounts see nine tools: audiences, campaigns, chats, contacts, engine, groups, scheduled_messages, utils and webhooks. This search uses two of them, utils for today's date and chats for the search. The full list is in the WhatsApp MCP tools guide.
The prompt: find a PDF across all chats
Paste this into a normal Claude chat and change the keywords:
Using Blueticks, find PDFs people sent me on WhatsApp in the last 30 days that mention "lease" or "addendum" in the message, caption or filename. Get today's date first. Search all chats. For each match give me the chat (name, or its ID if the name is missing), who sent it, the date and the filename. Tell me the date of the oldest message you scanned and whether the search was truncated. Do not send, react or mark anything as read.
Behind it, Claude makes about three calls:
- Date.
utilsreturns the current date and time, so "last 30 days" becomes real timestamps. - Search.
chatsrunslist_messages, typically withmimeset toapplication/pdf, your words inquery_any, andsinceset to the start of the window. - Report. Claude reads the rows and the
coveragenote, then lists what it found.
A sample answer, with invented names and files:
Found 2 PDFs
- Landlord, 14 Oct, from Dana:
lease_addendum_v2.pdf- Accountant, 9 Oct, from Lior:
lease-summary-2026.pdfThe search was not truncated.
Prefer to ignore the keywords and browse by type? Ask for "every PDF in the last 14 days, newest first" and leave query_any out.
Other searches that work the same way
Change one thing in the prompt and you get a different hunt:
- Photos from one person. "All images from the number ending 4412 this week." This uses
mimeset toimage/andsender. - A file by name. "A document whose filename contains 'invoice'." This uses
filename_contains, which matches the filename only. - Anything with an attachment from a group. Name the group, and ask for messages that carry media. This uses
has_media. - Several possible words at once. Give Claude a list ("passport, visa, permit") and it searches them in a single pass instead of one call per word.
When you know the chat, name it. A search inside one chat is narrower than a search across all of them, and it is easier to check.
How do you get the file itself?
Ask Claude to fetch it. The get_media action takes the chat and the message key from a search row. Images up to 5 MiB come back inline. Larger images and all other media, including PDFs, come back as a short-lived signed link, and you open that link to download the file.
So for a PDF, expect a link, not a preview in the chat. Open it soon, because it expires. If you only needed to know which chat the file is in, you can skip this step and open WhatsApp directly.
How do you know "not found" is true?
Ask Claude to read the coverage note that comes back with every search. It reports how many messages were scanned, the date of the oldest message it looked at (oldestScannedIso), and whether the scan was truncated.
truncated: true. The scan hit its cap, so there may be more matches than it returned. Narrow the date range or name the chat and ask again.oldestScannedIsois newer than your date range. The search only saw history that is already loaded on your connected engine. A search across all chats does not pull older history, so a miss says nothing about the older window.- Oldest date reaches your range, not truncated, no results. The scanned messages had no match.
When a search that names one chat and passes since comes back empty, the backend pages older history for that chat (up to 5 pages, about 25 seconds) before it answers. If it hits the bound first, the oldest date in coverage stays newer than your since, and older files may still exist. So if an all-chats search misses a file you are sure exists, name the chat it was in and ask again. The prompt above asks Claude to report all of this.
What can go wrong?
- The engine is offline. A file search needs your connected engine. If it is down, the search returns no matches instead of reading a stored copy, so an empty answer then proves nothing. Ask Claude to check the engine status, bring the connection back, and search again.
- A common keyword. "Invoice" matches every message that says "invoice." Add the sender or a date range.
- A renamed file. Senders often rename files. Search the caption and the message text too, which
query_anydoes. - Similar chat names. If you name a chat, use the exact name.
Is it safe to let Claude search your chats?
Searching reads. But the same chats tool also holds send, react, mark-read and archive actions, so you decide what runs. Approve each tool call yourself, read the action name before you click, and do not choose "Allow always." A list_messages or get_media call reads. A send_message_text call sends.
Run it in a normal chat, not in Research. Anthropic notes that in Research, Claude can call connector tools without asking, and that "Allow always" is for servers you trust to run unsupervised (Anthropic's custom connector guide).
The line "do not send, react or mark anything as read" in the prompt is a request to Claude, not a lock. Your approval is the lock.
Files can be private. What Claude reads in a search is shared with Claude, so keep sensitive searches to chats and documents you are comfortable having in that conversation.
Related guides
If you also want Claude to summarize the groups you never read, see the WhatsApp group digest. To set it up from scratch, start with connecting WhatsApp to Claude. Plans and prices are on the pricing page, and you can start free.
Frequently asked questions
Can Claude find a PDF someone sent me on WhatsApp? Yes. With the Blueticks connector, Claude can search all your chats for PDFs by filename, caption, sender and date, then give you a link to download the file.
Does Claude read the contents of the document?
The search matches the message text, caption and filename. For documents, get_media returns a short-lived download link, not the file's text. Whether Claude can open that file depends on what you do with the link.
Can it search all my chats at once? Yes. A search with no chat named runs across all chats. You can also search up to 25 named chats in one call.
Does it send anything? Not on its own. It acts only when Claude calls a tool, and a search uses read actions. Approve every call and skip "Allow always."
What if it says nothing was found?
Check the coverage note. If the search was truncated, or the oldest message scanned is newer than your date range, the miss is not final. Name the chat and try again.


