Databar MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Databar MCP ServerGet me David Abaev's LinkedIn profile"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Databar MCP Server
A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with Databar.ai's data enrichment API. Discover, configure, and run data enrichments across hundreds of data providers using natural language.
Features
Smart Enrichment Discovery — Search and filter enrichments by keyword or category
Natural Language Interface — Ask "get David's LinkedIn profile" and the right enrichment runs automatically
Bulk Operations — Enrich many records in a single call with bulk enrichment and bulk waterfall support
Table Management — Create tables, manage columns, insert/update/upsert rows
Waterfall Support — Try multiple data providers sequentially until one succeeds
Async Handling — Automatic polling for results with no manual intervention
Intelligent Caching — 24-hour result cache reduces API calls and costs
Error Handling — Retries with exponential backoff and clear error messages
Related MCP server: Prospeo MCP Server
Quick Start
Prerequisites
Node.js 18+
A Databar.ai API key (get one here)
Install & Build
git clone https://github.com/databar-ai/databar-mcp-server.git
cd databar-mcp-server
npm install
npm run buildConfigure Claude Desktop
Edit your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"databar": {
"command": "node",
"args": ["/absolute/path/to/databar-mcp-server/dist/index.js"],
"env": {
"DATABAR_API_KEY": "your-api-key-here"
}
}
}
}Restart Claude Desktop. Verify by asking: "What Databar tools do you have access to?"
Usage Examples
Find someone's LinkedIn profile
"Get me David Abaev's LinkedIn profile"
Claude searches for LinkedIn enrichments, picks the right one, runs it, and returns the profile data.
Verify an email address
"Verify the email david@databar.ai"
Find an email using waterfall
"Find the email for John Smith at Google"
Runs a waterfall that tries multiple providers until one returns a result.
Bulk enrich a list
"Enrich these 10 emails with company data: [list]"
Uses bulk enrichment to process all records in a single API call.
Manage table data
"List my tables"
"Create 5 rows in table abc-123 with columns name and email"
"Get the columns for table abc-123"
Available Tools
Enrichments
Tool | Description |
| Search enrichments by keyword or category |
| Get parameters, pricing, and response fields for an enrichment |
| Run a single enrichment (with auto-polling and caching) |
| Run an enrichment on multiple inputs at once |
Waterfalls
Tool | Description |
| Search available waterfall enrichments |
| Run a waterfall (tries providers sequentially) |
| Run a waterfall on multiple inputs at once |
Tables
Tool | Description |
| Create a new empty table |
| List all tables in your workspace |
| Get column schema for a table |
| Get rows with pagination |
| List enrichments configured on a table |
| Add an enrichment to a table with column mapping |
| Trigger an enrichment on all rows in a table |
Row Operations
Tool | Description |
| Insert up to 50 rows with deduplication options |
| Update fields on existing rows by ID |
| Insert or update rows based on a matching key |
Account
Tool | Description |
| Get credit balance and account info |
Configuration
All settings are configurable via environment variables:
Variable | Default | Description |
| (required) | Your Databar API key |
|
| API base URL |
|
| Result cache TTL in hours |
|
| Max polling attempts for async tasks |
|
| Polling interval in ms |
How It Works
Async Task Handling
Server sends a run request to the Databar API
API returns a
task_idServer automatically polls
/v1/tasks/{task_id}every 2 secondsWhen status is
completed, results are returnedIf data has expired (1-hour retention),
gonestatus is handled gracefully
Caching
Results are cached for 24 hours by default
Cache key: enrichment ID + serialized params
Cached results don't consume credits
Use
skip_cache: trueto force fresh data
Smart Categorization
Enrichments are automatically categorized (People, Company, Email, Phone, Social, Financial, Verification) to help the AI assistant pick the right tool.
Development
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm start # Run compiled outputProject Structure
databar-mcp-server/
├── src/
│ ├── index.ts # MCP server entry point & tool handlers
│ ├── databar-client.ts # Databar API client with polling
│ ├── cache.ts # In-memory cache with TTL
│ ├── types.ts # TypeScript type definitions
│ └── utils.ts # Helpers & categorization
├── dist/ # Compiled output (generated)
├── package.json
├── tsconfig.json
└── .gitignoreTroubleshooting
Problem | Solution |
Server not connecting | Verify API key, rebuild ( |
"No enrichments found" | Try a broader search query; list cache refreshes every 5 minutes |
"Task timed out" | Some enrichments take longer; increase |
"Task data has expired" | Data is stored for 1 hour only; re-run the enrichment |
"Invalid API key" | Check |
Resources
License
MIT
Available Tools
37 toolsadd_table_enrichmentA
Add an enrichment to a table with a parameter-to-column mapping.
IMPORTANT — mapping format: Each key is an enrichment parameter name. Each value is one of: • { "type": "mapping", "value": "" } — read value from a table column per row. Use the human-readable column name (e.g. "email"). The server accepts column names directly. • { "type": "simple", "value": "" } — pass the same hardcoded value for every row. IMPORTANT: simple values can embed column references using {column_internal_name} syntax (e.g. "Find the industry of {column1}"). The internal_name for each column is shown by get_table_columns. At runtime, these placeholders are replaced with actual column values per row. You can also use human-readable column names (e.g. {Company Website}) — the server will auto-resolve them to internal names. Use {?column_name} to mark a column reference as optional (row won't fail if the column is empty).
WORKFLOW:
Call get_enrichment_details to see the parameter names.
Call get_table_columns to see available column names and their internal_names.
Build the mapping using column names (not UUIDs). For text/textarea parameters that should incorporate column data, use "simple" type with {column_internal_name} placeholders in the value.
The returned enrichment_id from this call is the TABLE-ENRICHMENT id — use it with run_table_enrichment (NOT the original enrichment_id).
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| enrichment_id | Yes | The enrichment ID to add (from search_enrichments or get_enrichment_details) | |
| mapping | Yes | Parameter-to-column mapping. Keys = enrichment param names. Values = { type: "mapping", value: "column-name" } or { type: "simple", value: "static-value" }. Simple values can embed {column_internal_name} placeholders (e.g. "Research {column1}") that are resolved per row at runtime. You can use human-readable column names in placeholders — the server resolves them. | |
| launch_strategy | No | When to trigger: 'run_on_click' (manual) or 'run_on_update' (auto on row change). Default: 'run_on_click'. |
add_table_exporterA
Add an exporter (CRM/destination) to a table with a parameter-to-column mapping.
IMPORTANT — mapping format: Each key is an exporter parameter name. Each value is one of: • { "type": "mapping", "value": "" } — read value from a table column per row. Use the human-readable column name (e.g. "email"). The server accepts column names directly. • { "type": "simple", "value": "" } — pass the same hardcoded value for every row.
WORKFLOW:
Call get_exporter_details to see the parameter names.
Call get_table_columns to see available column names.
Build the mapping using column names (not UUIDs).
The returned exporter_id from this call is the TABLE-EXPORTER id — use it with run_table_exporter (NOT the original exporter_id).
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| exporter_id | Yes | The exporter ID to add (from search_exporters or get_exporter_details) | |
| mapping | Yes | Parameter-to-column mapping. Keys = exporter param names. Values = { type: "mapping", value: "column-name" } or { type: "simple", value: "static-value" } | |
| launch_strategy | No | When to trigger: 'run_on_click' (manual) or 'run_on_update' (auto on row change). Default: 'run_on_click'. | |
| authorization | No | ID of the API key / OAuth connection to use. Required for exporters that need user authorization. If omitted, the system auto-selects the first available key. | |
| custom_body_template | No | Custom JSON body template. Column values are referenced via {column_internal_name} placeholders. When provided, mapping is ignored. |
add_table_waterfallA
Add a waterfall to a table. A waterfall tries multiple data providers in sequence until one returns a result.
WORKFLOW:
Call search_waterfalls to find the right waterfall (e.g. "email_getter", "person_getter").
Note the waterfall identifier, available_enrichments (provider IDs), and input_params.
Call get_table_columns to see available column names.
Build the mapping: keys are waterfall param names, values are column names.
The returned id is the TABLE-WATERFALL id — use it with run_table_enrichment to trigger a run.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| waterfall_identifier | Yes | The waterfall identifier (e.g. "email_getter"). Get from search_waterfalls. | |
| enrichments | Yes | List of enrichment (provider) IDs to use in the waterfall cascade. Get from search_waterfalls available_enrichments. | |
| mapping | Yes | Maps waterfall param names to table column names. Keys = param names from waterfall input_params. Values = column names from get_table_columns. | |
| email_verifier | No | Optional enrichment ID for email verification (only for email waterfalls with is_email_verifying=true). |
create_columnB
Add a new column to an existing table.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| name | Yes | Column display name | |
| type | No | Column type (default: 'text') | text |
create_folderB
Create a new folder to organize tables in your workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Folder name |
create_rowsA
Insert new rows into a table (max 100 per request). To add new columns to an existing table, set options.allow_new_columns to true — any column name in fields that does not exist yet will be auto-created as a text column.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| rows | Yes | Array of rows to insert (max 100). Each row has a fields object keyed by column name. | |
| options | No |
create_tableB
Create a new table in your Databar workspace. Optionally specify a name, column names, and number of empty rows. By default creates columns column1/column2/column3 and 0 rows.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Table name (default: "New empty table") | |
| columns | No | Column names. Default: ["column1","column2","column3"]. Pass empty array [] to create a table with no columns. | |
| rows | No | Number of empty rows to create (default: 0) |
delete_columnC
Delete a column from a table.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| column_id | Yes | The UUID of the column to delete |
delete_folderA
Delete a folder. Tables inside the folder are NOT deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes | The folder ID to delete |
delete_rowsB
Delete specific rows from a table by their row IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| row_ids | Yes | Array of row IDs to delete |
delete_tableA
Permanently delete a table and all its data.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table to delete |
get_enrichment_detailsA
Get detailed information about a specific enrichment, including all required and optional parameters, response fields, pricing, and data source. Use this before running an enrichment to understand what parameters are needed.
| Name | Required | Description | Default |
|---|---|---|---|
| enrichment_id | Yes | The ID of the enrichment to get details for |
get_exporter_detailsB
Get detailed information about a specific exporter, including its required parameters and output fields. Use this to understand what parameters are needed before adding the exporter to a table.
| Name | Required | Description | Default |
|---|---|---|---|
| exporter_id | Yes | The exporter ID (from search_exporters) |
get_param_choicesA
Get available choices for a select/mselect enrichment parameter. Supports search and pagination. Use this when get_enrichment_details shows a parameter with choices.mode = "remote". For inline choices, the values are already included in get_enrichment_details.
| Name | Required | Description | Default |
|---|---|---|---|
| enrichment_id | Yes | The enrichment ID | |
| param_name | Yes | The parameter name (slug) | |
| q | No | Optional search query to filter choices by id or name | |
| page | No | Page number (default: 1) | |
| limit | No | Items per page (default: 100, max: 500) |
get_table_columnsA
Get all columns defined on a table. Returns column names, types, and identifiers.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table |
get_table_enrichmentsB
List all enrichments configured on a table.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table |
get_table_exportersA
List all exporters configured on a table. Returns exporter IDs that can be used with run_table_exporter.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table |
get_table_rowsA
Get rows from a table with pagination and optional filtering. Returns up to 100 rows per page by default (max 500). Supports Airtable-style structured filters with 5 operators: equals, contains, not_equals, is_empty, is_not_empty. Multiple filters use AND logic.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| page | No | Page number (default: 1) | |
| per_page | No | Rows per page (default: 100, max: 500) | |
| filter | No | Filter rows by column values (AND logic). Keys are column names, values are objects with one operator. Operators: equals, contains (case-insensitive), not_equals, is_empty (true), is_not_empty (true). Examples: {"company":{"contains":"tech"}}, {"status":{"equals":"active"}}, {"email":{"is_not_empty":true}}, {"name":{"contains":"a"},"revenue":{"equals":"5000"}} |
get_table_waterfallsA
List all waterfalls installed on a table. Returns waterfall IDs that can be used with run_table_enrichment.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table |
get_user_balanceA
Get the current user's credit balance and account information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_foldersA
List all folders in your workspace.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_tablesA
List all tables in your Databar workspace. Returns table UUIDs, names, and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
move_table_to_folderA
Move a table into a folder, or remove it from its current folder by passing folder_id as null.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table to move | |
| folder_id | No | Target folder ID, or null to remove from folder |
patch_rowsA
Update specific fields on existing rows by row ID (max 100 per request).
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| rows | Yes | Array of patch operations (max 100) | |
| overwrite | No | Overwrite non-empty cells (default: true) |
rename_columnB
Rename an existing column on a table.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| column_id | Yes | The UUID of the column to rename | |
| name | Yes | The new column name |
rename_folderB
Rename an existing folder.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | Yes | The folder ID | |
| name | Yes | The new folder name |
rename_tableB
Rename an existing table.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| name | Yes | The new name for the table |
run_bulk_enrichmentA
Execute an enrichment on multiple inputs at once. Provide an array of parameter objects. Subject to spending limits. For paginated enrichments, use the pages parameter to fetch multiple pages per record (each page per record is billed separately).
| Name | Required | Description | Default |
|---|---|---|---|
| enrichment_id | Yes | The ID of the enrichment to run | |
| params_list | Yes | Array of parameter objects, one per record | |
| pages | No | Number of pages to fetch per record for paginated enrichments (default: 1, max: 100). Each page per record is billed separately. |
run_bulk_waterfallC
Execute a waterfall enrichment on multiple inputs at once. Subject to spending limits.
| Name | Required | Description | Default |
|---|---|---|---|
| waterfall_identifier | Yes | The identifier of the waterfall to run | |
| params_list | Yes | Array of parameter objects, one per record | |
| provider_ids | No | Optional: Specific provider IDs to use | |
| email_verifier | No | Optional: Email verifier enrichment ID |
run_enrichmentA
Execute a data enrichment with the provided parameters. Automatically handles async execution and polling, returning final results. Results are cached for 24 hours to reduce costs. Subject to spending limits (DATABAR_MAX_COST_PER_REQUEST, DATABAR_MIN_BALANCE). For paginated enrichments, use the pages parameter to fetch multiple pages (each page is billed separately).
| Name | Required | Description | Default |
|---|---|---|---|
| enrichment_id | Yes | The ID of the enrichment to run | |
| params | Yes | Parameters required by the enrichment (e.g., {"email": "test@example.com"}) | |
| skip_cache | No | Skip cache and fetch fresh data (default: false) | |
| pages | No | Number of pages to fetch for paginated enrichments (default: 1, max: 100). Each page is billed separately. Use get_enrichment_details to check if pagination is supported. |
run_table_enrichmentA
Trigger an enrichment or waterfall to run on a table. By default runs on all rows. Optionally specify row_ids to run on specific rows, and run_strategy to control row selection. Works for both enrichments (from add_table_enrichment) and waterfalls (from add_table_waterfall). Subject to spending limits.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| enrichment_id | Yes | The table enrichment/waterfall ID to run (returned by add_table_enrichment or add_table_waterfall) | |
| row_ids | No | Optional: specific row IDs to process. When omitted, processes all rows. | |
| run_strategy | No | Which rows to process: 'run_all' (default) runs every row, 'run_empty' skips rows that already have a result, 'run_errors' reruns only rows that ended with an error. |
run_table_exporterB
Trigger an exporter to run on a table. By default runs on all rows. Use run_strategy to control row selection. Subject to spending limits.
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| exporter_id | Yes | The table exporter ID to run (returned by add_table_exporter) | |
| run_strategy | No | Which rows to process: 'run_all' (default) runs every row, 'run_empty' skips rows that already have a result, 'run_errors' reruns only rows that ended with an error. |
run_waterfallB
Execute a waterfall enrichment that tries multiple providers until one succeeds. Subject to spending limits.
| Name | Required | Description | Default |
|---|---|---|---|
| waterfall_identifier | Yes | The identifier of the waterfall to run (e.g., "email_getter") | |
| params | Yes | Parameters required by the waterfall | |
| provider_ids | No | Optional: Specific provider IDs to use (default: uses all in cost-optimized order) | |
| email_verifier | No | Optional: Email verifier enrichment ID to verify results |
search_enrichmentsA
Search and discover available data enrichments. Use this to find the right enrichment for a specific task (e.g., "linkedin profile", "email finder", "company data"). Returns a list of matching enrichments with their IDs, descriptions, required parameters, and pricing. Results are sorted by recommendation rank (best options first). BYOK providers that the user has not connected are automatically excluded.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find enrichments (e.g., "linkedin", "email verification", "company data", "job postings", "tech stack") | |
| category | No | Optional: Filter by category name (e.g., "Company Data", "Contact Finding", "Hiring Signals", "Tech Stack", "SEO", "Reviews") | |
| limit | No | Maximum number of results to return (default: 10) |
search_exportersA
Search and discover available data exporters (CRM/destination integrations). Use this to find the right exporter for pushing data to external services (e.g., "Google Sheets", "HubSpot", "Salesforce"). Returns a list of matching exporters with their IDs and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to find exporters (e.g., "google sheets", "hubspot", "salesforce", "crm") | |
| limit | No | Maximum number of results to return (default: 10) |
search_waterfallsA
Search available waterfall enrichments. Waterfalls try multiple data providers in sequence until one succeeds, maximizing data retrieval success rate.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., "email finder", "phone lookup") |
upsert_rowsA
Insert or update rows by matching key (max 100 per request).
| Name | Required | Description | Default |
|---|---|---|---|
| table_uuid | Yes | The UUID of the table | |
| rows | Yes | Array of upsert operations (max 100) |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
37 tool updates
v1.4.0- First observed
add_table_enrichment - First observed
add_table_exporter - First observed
add_table_waterfall - First observed
create_column - First observed
create_folder - First observed
create_rows - First observed
create_table - First observed
delete_column - First observed
delete_folder - First observed
delete_rows - First observed
delete_table - First observed
get_enrichment_details - First observed
get_exporter_details - First observed
get_param_choices - First observed
get_table_columns - First observed
get_table_enrichments - First observed
get_table_exporters - First observed
get_table_rows - First observed
get_table_waterfalls - First observed
get_user_balance - First observed
list_folders - First observed
list_tables - First observed
move_table_to_folder - First observed
patch_rows - First observed
rename_column - First observed
rename_folder - First observed
rename_table - First observed
run_bulk_enrichment - First observed
run_bulk_waterfall - First observed
run_enrichment - First observed
run_table_enrichment - First observed
run_table_exporter - First observed
run_waterfall - First observed
search_enrichments - First observed
search_exporters - First observed
search_waterfalls - First observed
upsert_rows
TDQS
Scored across 37 tools
Each tool has a clearly distinct purpose, covering separate operations like CRUD for tables/columns/rows, discovery and execution of enrichments/exporters/waterfalls, and configuration management. Overlaps like run_enrichment vs run_bulk_enrichment are well-differentiated by scope.
Tool names follow a consistent verb_noun pattern (e.g., create_table, search_enrichments, run_waterfall). Even less common names like patch_rows and upsert_rows fit the pattern. No mixing of conventions or vague verbs.
With 37 tools, the server covers a broad domain (table management, enrichment workflows, export, waterfalls). While slightly above the typical well-scoped range, each tool addresses a specific need and the count is justified by the feature set.
Core CRUD for tables, columns, rows, folders is present, and enrichment/export/waterfall workflow is covered. However, missing removal operations for table-level configurations (no delete_table_enrichment or remove_table_exporter) leave a notable gap.
Maintenance
Related MCP Connectors
Find and call verified APIs from any AI assistant, with free trial calls and previewed writes.
Query your Logspot analytics, companies, and revenue from any AI assistant, and run your actions.
Search companies, enrich contacts, and reveal emails and phones from your AI agent.
One key and one balance for 2,500+ data APIs from 90+ providers. Your AI agent pays per call.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to enrich and retrieve company data by connecting to the DataMerge Company API. It supports operations such as starting enrichment jobs, fetching company records, and inspecting corporate hierarchies.7 npmMIT

Prospeo MCP Serverofficial
AlicenseAqualityCmaintenanceEnables AI tools to search and enrich B2B leads, including finding professional emails, company profiles, and filtering people and companies by various criteria.5482 npmMIT
Enrow MCP Serverofficial
AlicenseAqualityCmaintenanceEnables AI assistants to find and verify professional emails and phone numbers via the Enrow API.131MIT- AlicenseAqualityDmaintenanceEnables AI assistants to connect to and interact with PostgreSQL, MySQL, SQLite, and MongoDB databases through natural language, supporting schema exploration, query execution, data export, and more.13MIT