We finally fixed contact data for agents
Every contact-data tool was built for a human at a dashboard — tabs, filters, export buttons. Your agent doesn’t click. It runs commands. So we built ContactCTL: find, verify, and enrich B2B contacts from the shell, with honest exit codes and lookups that cost nothing when they miss.
€9/mo to start. Cancel anytime. Your agent does the rest.
Deliverability is a number,
not a paragraph.
ctc verify checks an address before you ever send, then hands down The Verdict as an exit code: 0 deliverable, 2 undeliverable, 3 risky, 6 invalid.
Your agent branches on $? — no parsing, no vibes, no maybe.
Stop guessing addresses.
Ask The Resolver.
The Resolver is one command: ctc find — a name and a company
in, a verified work email out. Behind it, a waterfall sweeps 20+ premium sources; in front,
one price: 1 credit, charged only when something is found. Need the personal
address instead? --personal, 3 credits, same deal. And when
you hold the email but not the person, ctc whois runs it in reverse — the
person and company behind an address, 1 credit, miss free too.
When email isn’t enough,
pick up The Direct Line.
Mobile numbers are the expensive ask, so The Direct Line is quarantined on
purpose: ctc phone is its own verb at 10 credits — nothing else
ever escalates into a phone lookup by accident. Your agent puts the price on the table
first with --estimate, and a miss still costs exactly nothing.
Don’t babysit ten thousand rows.
Load The Conveyor.
One row or a whole file — same verb. The Conveyor is batch mode on verify, find, phone, and whois: CSV or
TSV in, CSV out — ctc verify list.csv clean.csv at 0.02 credits a
row — with row order preserved and a per-row error column, so one bad row never sinks the
file. --dry-run preflights readiness and worst-case cost with zero spend, --max-cost stops the job before it crosses your budget, and big files ship in
chunks of 100 rows. When in and out are the same file, the overwrite is atomic — finished
or untouched, never half. Misses stay free on find, phone, and whois rows.
Don’t browse a database.
Ask for The Shortlist.
You don’t get a seat-limited database browser; you get The Shortlist. ctc search people and ctc search companies take honest filters —
domain, titles, industry, headcount — and bill 0.25 credits per search, not per
row. And because guessing filter syntax wastes agent turns, ctc search filters prints every accepted field and value: free, locally.
Clone your best customer.
Meet The Doppelgänger.
Your best customer is a query. Hand The Doppelgänger a domain and it
returns companies that look like it; hand it a LinkedIn profile and it returns similar
people. Billing is per returned row — 0.35 credits each — so --limit 5 costs at most 1.75 credits, priced before
anything runs.
The Estimate before.
The Ledger after.
Cost control is the same pattern twice. Before a run, The Estimate: every
paid command takes --estimate — printed locally, zero spend — and --max-cost, a hard wall the job cannot cross. After it, The Ledger: ctc usage prints your balance and every line of
spend — plan credits first, then top-ups, oldest first; misses logged, never billed.
Schemas in every window,
or sixty lines — once.
An MCP server is an honest trade: its tool schemas ride along in every context window, and
a server runs between your agent and the work. ContactCTL takes the other deal — one
binary plus a ≈60-line guide. Your agent runs ctc instructions, reads it once, and knows the whole tool: zero standing context cost, no server
hop, and it works anywhere a shell runs. Which is exactly why it composes happily alongside MCP stacks — not against them.
No press release —
a note from the maker.
Hey everyone —
I’m Miha, and I make ContactCTL.
For two decades, contact data has lived behind dashboards. Log in, click around, build a list, export a CSV, upload it somewhere else. Fine — when a human was doing the work.
But the people I build for don’t do that work anymore. Their agents do. And an agent driving a browser dashboard is a sad thing: slow, brittle, screenshotting its way through menus designed for mice.
The fashionable fix is an MCP server. We went the other way. A native CLI starts
instantly, costs zero context window, and composes with pipes, files, and cron like
every good tool since 1978. Your agent reads contactctl instructions once — about 60 lines — and knows the entire product. No schemas squatting in its
context. (And if you run MCP stacks, the CLI sits happily alongside them.)
So that’s what ContactCTL is: contact data as a well-behaved Unix citizen. One command per job. Exit codes you can branch on. Misses that cost nothing. A bill you can read.
The terminal was never legacy. It was waiting.
Miha, founder
Three plans. One meter.
€9 for 150, €55 for 1,000, €250 for 5,000 credits a month — that’s the meter.
Starter
€9/mo
150 credits / month
For one agent doing real work.
one month ≈
- found work emails
- 150
- verifications
- 7,500
- mobile numbers
- 15
top-ups €0.060/credit · min €5
Growth
€55/mo
1,000 credits / month
For weekly list building and CRM upkeep.
one month ≈
- found work emails
- 1,000
- verifications
- 50,000
- mobile numbers
- 100
top-ups €0.055/credit · min €5
Scale
€250/mo
5,000 credits / month
For agencies and pipelines that run daily.
one month ≈
- found work emails
- 5,000
- verifications
- 250,000
- mobile numbers
- 500
top-ups €0.050/credit · min €5
No free trial — Starter is the trial: plan credits reset monthly, never roll over, and spend first. Top-ups never expire while you’re subscribed (parked 12 months if you cancel), and a miss never costs a credit.
Pick a planCancel anytime — CtrlC for subscriptions.