
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
@kantadev/cli
Advanced tools
Kanta CLI + MCP server — email verification, email finding, and the Kanta B2B contact database from your terminal or an MCP client.
Terminal (kanta) and MCP server (kanta-mcp) for Kanta Verify, Kanta
Find, and the Kanta Database. Thin wrapper over the api.kanta.dev and
database.kanta.dev REST APIs — no product logic lives here.
docs/superpowers/specs/2026-09-04-kanta-cli-mcp-verify-find-admin-design.md,
docs/superpowers/specs/2026-09-04-kanta-database-api-mcp-design.mddocs/cli.mdnpm install -g @kantadev/cli
kanta login # paste your API key from app.kanta.dev
Local/dev:
cd kanta-cli
npm install
npm link
{
"mcpServers": {
"kanta": {
"command": "npx",
"args": ["-y", "@kantadev/cli", "kanta-mcp"],
"env": { "KANTA_API_KEY": "your_key" }
}
}
}
The server calls GET /me once at startup to learn the key scope. If the API is
unreachable it still boots with the customer tool set (admin tools appear once
/me succeeds).
Key resolution order (first match wins):
--api-key <key> global flag (never persisted)KANTA_API_KEY env var (optionally KANTA_BASE_URL, KANTA_DB_URL)--profile <name> from ~/.kanta/config.jsondefault_profile from ~/.kanta/config.jsonkanta loginThe Kanta Database API is a second base URL, resolved independently with the
same key: --db-url → KANTA_DB_URL → profile db_base_url →
https://database.kanta.dev/v1.
~/.kanta/config.json is written mode 0600:
{
"default_profile": "personal",
"profiles": {
"personal": { "key": "kdev_live_…", "base_url": "https://api.kanta.dev", "db_base_url": "https://database.kanta.dev/v1" },
"admin": { "key": "kdev_live_…", "base_url": "https://api.kanta.dev", "db_base_url": "https://database.kanta.dev/v1" }
}
}
kanta login --profile personal # prompts for the key (hidden), validates via GET /me
kanta whoami
kanta config show # resolved config, key masked
kanta logout --profile personal
kanta verify name@example.com
kanta verify bulk contacts.csv # CSV needs an "email" column
kanta find Ada Lovelace analytical.co # synchronous — prints the email (or "no email found")
kanta find bulk people.csv # CSV needs first_name,last_name,company; prints a job id
kanta jobs list [--status <s>]
kanta jobs get <id> [--breakdown]
kanta jobs results <id> [-o results.csv]
kanta jobs cancel|resume|delete <id>
kanta account
kanta credits
Add --json to any command for machine output.
Search, count, facet, and export the B2B contact database. Search/count/facets
are free; export costs 1 db credit per row delivered (admin keys are not
charged).
kanta db count --seniority c-suite --industry software
kanta db search --function marketing --has-email --limit 25 [-o people.csv]
kanta db facets --industry software --field seniority --field person_state
kanta db lookup --email jane@acme.com
kanta db lookup --name "Jane Doe" --domain acme.com
kanta db export --seniority vp --industry software --max 5000 -o leads.csv
kanta db exports # your recent export jobs
kanta db export-status <id>
kanta db download <id> -o leads.csv
kanta db companies count --industry software --employees-min 50
kanta db companies search --hq-country "United States" --min-contacts 5
kanta db companies export --industry fintech --max 2000 -o firms.csv
kanta db company contacts <kanta_org_id> --limit 25
kanta --profile admin db ca-count # CCPA California-record monitor (admin)
| Flag | Meaning |
|---|---|
--query <text> | free text over name / title / company |
--seniority <label…> | c-suite, vp, director, manager, … (case-insensitive) |
--function <name…> | job function(s) |
--title <text> | title prefix match |
--title-exact <text…> | exact normalized title(s) |
--country <name…> / --state <name…> | person location |
--company <text> | company name prefix |
--company-domain <domain…> | company domain(s) |
--industry <name…> | company industry/industries |
--employee-range <range…> | e.g. 51-200 |
--has-email / --has-linkedin / --has-phone | presence filters |
--verification-status <s…> | admin only (else the API returns 403) |
--filter-file <path> | raw JSON filter object, merged under the flags |
Company flags: --query, --domain, --industry, --employee-range,
--hq-country, --hq-state, --funding-stage, --employees-min/max,
--revenue-min-k/max-k, --founded-after, --min-contacts, --filter-file.
The db export flow prints the match count and credit cost, prompts for
confirmation (skip with -y), submits the job, polls until it finishes, and
writes the CSV to -o. A confirm_credits_required response is retried once
with the API's capped estimated_max.
kanta --profile admin admin credits add --email u@x.com --product find --amount 500 --reason topup
kanta --profile admin admin jobs list [--status <s>] [--user <email>]
kanta --profile admin admin user u@x.com
kanta --profile admin admin verify u@x.com # no credit charge
kanta --profile admin admin suppress add blocked.com # email vs domain auto-detected by "@"
kanta --profile admin admin suppress check u@x.com
Every admin command calls GET /me first; if the resolving key is not
scope: 'admin' it exits 1 with:
This command requires an admin profile. Active profile "<name>" is a standard key.
Admin capability is not self-service. It requires an api_keys row with
scope = 'admin' and the owning user having is_god_mode = true.
EmailVerifier_V1/infra/api_key_scope_migration.sql to Supabase.app.kanta.dev for the operator.api_keys, find that row (match on
label or last_used_at) and set scope to admin. Save.kanta login --profile admin with that key.Revoke by setting scope back to user. No API path or dashboard UI reads or
writes scope, so a leaked standard key can never reach /admin/*.
See the config block at the top of this file. Admin tools appear in
tools/list only when the key is admin-scoped.
kanta_verify_email, kanta_verify_bulk,
kanta_find_email, kanta_find_bulk, kanta_jobs_list, kanta_job_get,
kanta_job_results, kanta_job_cancel, kanta_job_delete, kanta_account,
kanta_creditskanta_db_count, kanta_db_search, kanta_db_facets,
kanta_db_lookup, kanta_db_export, kanta_db_export_status,
kanta_db_companies_count, kanta_db_companies_search,
kanta_db_companies_facets, kanta_db_company_contactskanta_admin_credits_add, kanta_admin_jobs_list, kanta_admin_user,
kanta_admin_verify, kanta_admin_suppress_add, kanta_admin_suppress_check,
kanta_db_ca_countkanta_find_email is synchronous — it returns { email, confidence, method, pattern }
inline (or { email: null }) and charges a find credit only on a hit. Bulk tools
accept either an inline array or a path to a CSV and return a job_id. Result
tools cap inline output at 100 rows and otherwise return a sample plus a CLI hint.
kanta_db_export requires a confirm_credits integer — call
kanta_db_count first, then pass the number of credits you intend to spend; on
confirm_credits_required the tool returns the estimated_max to retry with.
npm test # vitest
kanta-cli/
├── bin/kanta.js `kanta` CLI entry
├── bin/kanta-mcp.js `kanta-mcp` stdio MCP server entry
├── server.json MCP registry manifest
├── src/
│ ├── core/ client.js config.js auth.js identity.js errors.js dbFilter.js
│ ├── cli/ index.js format.js context.js commands/ (incl. commands/db/)
│ └── mcp/ server.js register.js tools/ (customer.js admin.js database.js)
└── tests/ bin.test.js core/ cli/ mcp/
FAQs
Kanta CLI + MCP server — email verification, email finding, and the Kanta B2B contact database from your terminal or an MCP client.
The npm package @kantadev/cli receives a total of 15 weekly downloads. As such, @kantadev/cli popularity was classified as not popular.
We found that @kantadev/cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.