# Veryfi MCP

> Veryfi automates data extraction from physical and digital documents like receipts, invoices, bank statements, and tax forms. Connect your AI agent to pull structured line-by-line details from complex files with human-level accuracy in seconds.

## Overview
- **Category:** document-management
- **Price:** Free
- **Tags:** ocr, document-processing, receipt-parsing, invoice-extraction, data-extraction

## Description

Connect your AI client to Veryfi for document OCR that actually works. Forget manually reading tables or cross-referencing fields; this MCP reads receipts, invoices, bank statements, and tax forms, pulling out structured data you can use immediately. You send a picture, you get clean JSON output. Whether you're processing an expense report using `process_documents`, parsing W-2s with `process_w2s`, or grabbing contact info from business cards via `process_business_cards`, the goal is always instant, accurate data capture. It also lets you manage your records—you can pull a list of all documents with `list_documents` and clean up old files using `delete_any_document`. Because this MCP handles so much sensitive financial information, it runs through Vinkius's zero-trust proxy; that means your keys are only used in transit, never stored on disk. The entire process gives you an auditable trail for every action taken.

## Tools

### delete_bank_statements
Removes a specific bank statement record entirely from the database.

### delete_business_cards
Deletes all data associated with a specific business card entry.

### delete_checks
Removes records of processed checks from the system archive.

### delete_contracts
Deletes records of previously processed contracts by their unique identifier.

### delete_documents
Removes general document files from the system archive based on ID.

### delete_parse_documents
Deletes records of previously parsed documents, cleaning up the data set.

### delete_w2s
Wipes out specific tax forms related to W-2 information from the system.

### delete_w8ben_e
Removes records of Foreign Tax Form W-8BEN-E.

### delete_w9s
Deletes a specific completed IRS W-9 form record.

### get_bank_statements
Fetches a specific bank statement record by providing its unique ID.

### get_business_cards
Retrieves all contact details and metadata from a single business card entry.

### get_checks
Fetches the image and data for a specific check record by ID.

### get_contracts
Retrieves all details of a contract file using its unique identifier.

### get_documents
Gets the metadata for a general document by supplying its ID number.

### get_parse_documents
Fetches the processed data details associated with a specific parse document.

### get_w2s
Retrieves all parsed information from a specific W-2 tax form record by ID.

### get_w8ben_e
Fetches the data for a single Foreign Tax Form W-8BEN-E submission.

### get_w9s
Retrieves all submitted information from a specific IRS W-9 form by ID.

### list_bank_statements
Returns an index listing all available bank statement records.

### list_business_cards
Provides a list of every business card record stored in the system.

### list_checks
Returns an index listing all processed check records.

### list_contracts
Returns an index listing all contracts stored in the system.

### list_documents
Provides a list of general document records that have been processed.

### list_parse_documents
Returns an index listing all parsed documents, showing what was extracted.

### list_w2s
Provides a list of all W-2 tax form records stored in the system.

### list_w8ben_e
Returns an index listing all Foreign Tax Form W-8BEN-E submissions.

### list_w9s
Provides a list of every IRS W-9 form submitted to the system.

### process_bank_statements
Processes an uploaded bank statement file to pull out beginning balances, ending balances, and transactions.

### process_business_cards
Takes a picture of a business card and extracts the name, title, company, and contact information.

### process_checks
Reads data from a check image, extracting key details like the amount, date, and payee.

### process_contracts
Extracts structured clauses, dates, and parties from complex legal contract documents.

### process_documents
Processes a general document image or PDF to extract key data points based on general blueprints.

### process_parse_documents
Extracts structured data from documents that have already been initially processed and parsed.

### process_w2s
Processes a W-2 form image or PDF, extracting employee names, tax codes, and earnings details.

### process_w8ben_e
Extracts data from the Foreign Tax Form W-8BEN-E to verify non-US residency status.

### process_w9s
Processes an IRS W-9 form image, capturing the vendor's legal name and tax ID number.

### update_bank_statements
Modifies the data within an already stored bank statement record.

### update_business_cards
Corrects or adds new information to existing business card records.

### update_checks
Updates specific fields like the date or payee on a previously processed check record.

### update_contracts
Modifies key terms, dates, or parties listed in an existing contract document.

### update_documents
Changes general metadata fields associated with a stored document file.

### update_parse_documents
Makes corrections or additions to data that was originally extracted and parsed from a document.

### update_w2s
Corrects specific fields on an existing W-2 tax form record, like earnings or dates.

### update_w8ben_e
Updates details for a previously submitted Foreign Tax Form W-8BEN-E.

### update_w9s
Makes corrections to the vendor's name or tax ID number on an existing W-9 form.

### add_webhook
Sets up a notification trigger to alert systems when a specific event happens with the document data.

### classify_document
Reads an uploaded file and determines its type, like 'invoice' or 'receipt'.

### confirm_webhook
Validates a webhook endpoint to ensure the system can receive future notifications.

### create_client_key
Generates a new unique API key that grants access to document processing services.

### delete_any_document
Permanently removes any document record from the system archive by ID.

### delete_client_key
Revokes and removes an existing API key, eliminating its access rights.

### get_any_document
Retrieves the metadata for any document file using its ID.

### list_any_documents
Gets a list of general documents that have been successfully processed in the system.

### list_client_keys
Shows a list of every active API key created for the client account.

### list_webhooks
Shows all configured webhooks and their current status.

### process_any_document
Extracts structured data from any type of document image or PDF using a specific blueprint guide.

### reset_client_keys
Invalidates all existing API keys for security reasons, forcing a re-creation of new credentials.

## Prompt Examples

**Prompt:** 
```
Process this receipt URL: https://example.com/receipt.jpg
```

**Response:** 
```
I've processed the receipt. Here are the details:
- **Vendor**: Tech Supplies Inc.
- **Total**: $124.50
- **Tax**: $10.20
- **Date**: 2023-10-25
Would you like me to list the line items?
```

**Prompt:** 
```
Extract data from this bank statement: https://example.com/statement.pdf
```

**Response:** 
```
I've analyzed the bank statement. Here is the summary:
- **Bank**: Chase Bank
- **Account Number**: *******1234
- **Beginning Balance**: $5,430.00
- **Ending Balance**: $6,120.00
- **Statement Period**: Oct 1 - Oct 31, 2023
```

**Prompt:** 
```
Process this driver's license using the 'us_driver_license' blueprint: https://example.com/license.png
```

**Response:** 
```
Using the 'us_driver_license' blueprint, I extracted the following:
- **Name**: Jane Doe
- **License Number**: D1234567
- **State**: CA
- **Expiration Date**: 2028-05-12
- **Date of Birth**: 1990-01-01
```

## Capabilities

### Extract structured line items
Processes financial documents to break down total amounts into specific, usable components like itemized tax and vendor costs.

### Parse complex federal forms
Reads highly regulated tax paperwork, such as W-2s or bank statements, identifying key fields like account numbers and dates automatically.

### Identify contact details
Scans images of business cards to pull out names, company titles, and phone numbers into a clean format.

### Manage document lifecycles
Allows your agent to retrieve specific records, list all stored documents, or securely delete files from the archive.

## Use Cases

### Handling Quarterly Expenses
A finance manager gets 50 receipts from the field team. Instead of opening 50 PDF files and copying dates/vendors, they run the batch through `process_documents`. The agent returns a clean list of expense reports ready for submission.

### Vendor Onboarding Compliance
An operations analyst needs to verify a new vendor's tax status. They upload the W-9, and the MCP runs `process_w9s`, returning the legal name and Tax ID Number immediately for cross-checking.

### Reconciling Bank Statements
Instead of downloading PDF bank statements monthly, they feed them to the agent which calls `process_bank_statements`. The resulting structured data is loaded directly into the accounting system's ledger.

### CRM Data Enrichment
A sales rep gets a business card at a networking event. They take a picture, and the agent calls `process_business_cards`, instantly getting the person's title and company details to update their CRM record.

## Benefits

- Process invoices and receipts with `process_documents` to instantly break down total amounts into line items, eliminating manual spreadsheet entry.
- Handle complex tax forms like W-2s or bank statements using specialized tools (`process_w2s`, `process_bank_statements`) that know exactly where the critical data lives.
- Maintain a full audit trail for every document processed. Because this MCP runs through Vinkius, you get cryptographically signed records of what happened and when.
- You can manage your whole archive using tools like `list_documents` and `get_any_document`, ensuring nothing is lost and everything is searchable by ID.
- Need to correct data? Use update functions like `update_checks` or `update_w9s` instead of re-uploading the entire file, saving time and preventing version mismatch issues.
- The whole system scales with Vinkius. You connect once from your AI agent, and you can use this MCP alongside a messaging service or billing platform for total workflow automation.

## How It Works

The bottom line is: instead of writing complex parsing code, you just point your AI client at a document and let it extract everything it needs.

1. First, you connect your API credentials and approve access within Vinkius.
2. Next, you send an image file or document URL to the MCP, telling it which kind of data you need extracted (e.g., 'process this invoice').
3. Finally, the MCP returns a structured data object containing the specific fields—like total amounts, dates, and names—ready for your agent to use.

## Frequently Asked Questions

**How do I process multiple different document types with Veryfi?**
You can run a sequence of specialized tools like `process_documents` (for invoices) followed by `process_w2s` (for tax forms). The agent handles the transition between data types automatically.

**Is there a way to update records after processing them with process_bank_statements?**
Yes, you can use specialized update functions. After running `process_bank_statements`, if a number needs changing, you call `update_bank_statements` instead of reprocessing the whole file.

**What is the difference between get_documents and list_documents?**
`list_documents` gives you an index—a view of all existing documents. You must use `get_documents` and provide a specific ID to pull the actual metadata for one document.

**Can I delete data from multiple sources using Veryfi?**
Yes, if you process an invoice using `process_documents`, you can later remove that record by calling `delete_documents` and providing the necessary ID.

**If I need to manage or check my credentials, how do I use the `list_client_keys` tool?**
It lists all existing API keys for your account. This is essential for security audits and verifying that no old, unused keys remain active. You should routinely cross-reference these keys against who currently needs access.

**What steps do I need to take regarding webhooks using the `add_webhook` tool?**
Adding a webhook involves two parts: first, you use `add_webhook` to create it; second, you must call `confirm_webhook` afterward. The confirmation step validates your endpoint and ensures data transfer works correctly before going live.

**Does the MCP have rate limits when I try to retrieve a large number of files using `list_any_documents`?**
Yes, there are built-in rate limits designed to prevent service overloads. For bulk retrieval operations, it's best practice to implement pagination logic in your agent calls rather than attempting one massive request.

**When I use `get_documents`, what specific metadata can my AI client expect to retrieve?**
The tool provides key metadata about the document, including its unique ID, creation timestamp, and a status flag. This allows your agent to check if the data has already been processed or needs an update before calling other tools.

**Can I process unstructured documents that are not standard receipts or invoices?**
Yes! You can use the `process_any_document` tool with a specific blueprint name (such as a driver's license or insurance card) to extract structured data from almost any unstructured document type.

**How do I extract data from a tax form like a W-2 or W-9?**
Simply use the dedicated tools `process_w2s` or `process_w9s` and provide the file URL or base64 data. The agent will return structured fields specific to those tax forms.

**Can I update fields on a document after it has been processed?**
Yes, you can use the `update_documents` tool by passing the document ID and a JSON string of the fields you want to update.