Tag
Vendor, date, total, type, document number — extracted as structured fields, not free text.
Turn any PDF or image into structured metadata, smart filenames, and an enriched copy you can download. Call it via MCP or REST.
1,500 free tags every month — no credit card.
One tool in Gemina's harness for document AI.
Vendor, date, total, type, document number — extracted as structured fields, not free text.
Returns six filename patterns. Your agent picks the one that fits your filing convention.
2026-02-15_Acme-Corp_Invoice.pdfEmbeds metadata into PDF or EXIF. Download via a short-lived URL.
Wherever a document needs structured metadata — agent, pipeline, or product.
Your agent files user uploads to consistent folders — no custom parsers per document type.
Tag documents on ingestion so you can filter your vector search by vendor, date, or type.
Send receipts to accounting, contracts to legal, invoices to AP — by structured tag, not regex.
Enrich user uploads in your product backend — cheaper than per-document LLM calls.
# 1. Reserve an upload slot
upload = mcp.call("files_create_upload", filename="invoice.pdf")
# 2. PUT the file to the signed URL
upload_to(upload.url, file_bytes)
# 3. Tag it
result = mcp.call("tag_file", file_id=upload.file_id)
# → metadata, six filename patterns, enriched-file URL
# Then: pull back the enriched copy whenever you need it
enriched = download(result.enriched_file_url)Or use tag_url if your file already lives at a public URL.
{
"document_id": "abc-123",
"suggested_filename": "2026-02-15_Acme-Corp_Invoice_12345.pdf",
"metadata": {
"document_type": "invoice",
"vendor": "Acme Corp",
"date": "2026-02-15",
"amount": 7200,
"currency": "ILS",
"document_number": "12345",
"title": "Invoice",
"tags": ["vendor", "invoice"]
},
"filename_patterns": {
"date_first": "2026-02-15_Invoice_12345.pdf",
"type_first": "Invoice_12345_2026-02-15.pdf",
"vendor_first": "Acme-Corp_Invoice_2026-02-15.pdf",
"date_vendor": "2026-02-15_Acme-Corp.pdf",
"vendor_date": "Acme-Corp_2026-02-15.pdf",
"compact": "Acme-Corp_Invoice.pdf"
},
"enriched_file_url": "https://api.gemina.co/files/tmp_abc123.pdf",
"enriched_file_expires_at": "2026-02-15T12:15:00Z"
}FileTag is the free tier of the Gemina MCP server. Sign in with OAuth from almost any MCP host, or paste an API key into your client config — the snippets for every host are on the MCP page.
Connect your agentimport requests
def gemina_tag(file_path: str) -> dict:
"""Tag a document via Gemina's FileTag REST API."""
with open(file_path, "rb") as f:
response = requests.post(
"https://api.gemina.co/api/v1/filetag",
headers={"X-API-Key": "<paste-your-key-here>"},
files={"file": f},
)
response.raise_for_status()
return response.json()
# Use the returned metadata to enrich your vector store entries.
# Example: attach vendor + date + type to each chunk for RAG filtering.Resets on account anniversary. 1 credit per page. ~10 tags/sec burst.
Need more? Every paid plan includes a larger FileTag allowance plus the full Gemina harness. See paid plans
Three uses out of one response — pick the one your code needs, ignore the rest.
{
"document_id": "abc-123",
"suggested_filename": "2026-02-15_Acme-Corp_Invoice_12345.pdf",
"metadata": {
"document_type": "invoice",
"vendor": "Acme Corp",
"date": "2026-02-15",
"amount": 7200,
"currency": "ILS",
"document_number": "12345",
"title": "Invoice",
"tags": ["vendor", "invoice"]
},
"filename_patterns": {
"date_first": "2026-02-15_Invoice_12345.pdf",
"type_first": "Invoice_12345_2026-02-15.pdf",
"vendor_first": "Acme-Corp_Invoice_2026-02-15.pdf",
"date_vendor": "2026-02-15_Acme-Corp.pdf",
"vendor_date": "Acme-Corp_2026-02-15.pdf",
"compact": "Acme-Corp_Invoice.pdf"
},
"enriched_file_url": "https://api.gemina.co/files/tmp_abc123.pdf",
"enriched_file_expires_at": "2026-02-15T12:15:00Z"
}Vendor, date, type, total. Use for filtering, routing, and RAG metadata enrichment.
Your code picks the one that suits your filing system.
Short-lived signed URL. The file already has metadata embedded into PDF properties or image EXIF.
Files are deleted within 7 days of upload (configurable per plan).
Your documents are never used to train AI models — Gemina's or anyone else's.
AES-256 at rest, TLS 1.2 or higher in transit. Configurable data residency on paid plans.
FileTag reads the outside of a document — who it's from, when, what type, what it totals. That's one call away from everything inside it.
The document's identity.
Vendor, date, type, total, a suggested filename, and an enriched copy with the metadata embedded.
Everything the document says.
Every header field and every line item as typed JSON, with per-field confidence and your own custom schemas.
Then search it, total it, and chat with it.
Model Context Protocol — an open standard for AI agents to call external tools. Claude Desktop, Cursor, OpenClaw, Hermes-Agent and many others support it natively.
Both work. Same endpoints under the hood. MCP is convenient if you're inside an agent client; REST is convenient if you're building from scratch.
Yes. Call POST /v1/filetag per document during ingestion, attach the metadata to your vector store entries, and filter retrieval at query time. Cheaper and more consistent than per-document LLM calls.
PDF, PNG, JPEG, GIF, WebP, HEIC, AVIF. Up to 50 MB.
50 MB. Files larger than 256 KB use a pre-signed upload flow (your MCP client handles this automatically).
You'll get a clear error. Upgrade to a paid plan for more, or wait until your monthly reset.
Yes. One key, both surfaces. The same key also works for Data Extraction and other Gemina REST endpoints — one Gemina account, all surfaces. Or sign in with OAuth from almost any MCP host — that mints a key for you.
~10 tags/second per API key, on top of the monthly credit cap.
Indexing across documents and natural-language queries. Sign up now — your existing API key will work for those when they ship.