contact-search MCP connector

Admin control plane for the contact database — attach it to Claude and work the data in chat.

Postgres Elasticsearch · 17,428,787 contacts Dashboard

Server URL

Paste this into Claude as a custom connector. Sign-in is OAuth — one admin account, no API key to copy around.

https://mcp.trustedleadsops.app/mcp

Connect from Claude

Either surface works — the connection is per-account, so do it once.

  1. claude.ai / desktop app: Settings → Connectors → Add custom connector → paste the URL above → Connect, then sign in with the admin email and password.
  2. Claude Code: run the command below, then /mcp in the session and pick Authenticate.
claude mcp add --transport http cs-admin https://mcp.trustedleadsops.app/mcp

Tools

14 tools. Anything that writes needs an explicit confirm: true, so Claude has to show you the change before it lands.

ToolWhat it does
sql_query Run a read-only SQL statement (SELECT/WITH/EXPLAIN/SHOW) against the contact-search Postgres database (outboundrix). Returns up to 500 rows. App tables are public.cs_* — cs_users, cs_orders, cs_lists, cs_list_contacts, cs_api_keys, cs_api_usage, cs_audit_log, cs_agents, cs_agent_chats, cs_tasks, cs_icp_profiles, cs_saved_filters, cs_email_reveals, cs_geo_*.
sql_executewrites Run an INSERT/UPDATE/DELETE/DDL statement against the contact-search database inside a transaction. Requires confirm=true. Refuses statements without a WHERE clause on UPDATE/DELETE unless force=true.
users_list List contact-search users with their role, credits, daily row limit, activity and disabled state.
user_updatewrites Change a user's limits, credits, role or enabled state. Only the fields you pass are changed.
orders_list List rows from cs_orders, newest first, optionally filtered by status or customer email.
usage_report Rows exported and request counts per user per day from cs_api_usage, for the last N days.
audit_log Most recent entries from cs_audit_log, optionally filtered by event name or actor.
api_keys_list List cs_api_keys with owner email, caps, scopes and revocation state. Key hashes are never returned.
contacts_search Count contacts matching Apollo-style filters and return a small sample. Same filter semantics as the dashboard search (title_include, personLocations, industry, employee_ranges, has_email …).
contacts_exportwrites Export contacts matching filters to a CSV file and return a signed download URL valid for 1 hour. Admin export — not limited by any user's daily budget, but capped at 100,000 rows.
contacts_export_sheetwrites Export contacts matching filters straight into a new Google Sheet shared with anyone-with-the-link, and return the sheet URL. Prefer this over contacts_export for large pulls: the caller gets a link to open, not rows of CSV to read, so a 60k-row delivery costs a few hundred tokens instead of tens of megabytes. Returns 3 preview rows so the shape is still visible.
es_requestwrites Send an arbitrary request to the Elasticsearch cluster behind contact-search (e.g. GET /_cat/indices?format=json, POST /contacts_clean/_search). Full admin access to the cluster.
service_status PM2 process table for the contact-search stack plus a live health probe of the app on :4600.
service_logs Tail the PM2 stdout/stderr log for one of the contact-search processes (contact-search, orders-api, agent-api, agent-autodebug, cs-mcp).

Live state

Refreshed on page load.

12registered clients
0valid access tokens
4dserver uptime
/healthzliveness endpoint