Private beta: not yet open to the public
Connect an AI agent to ListShack
Use ListShack from Claude, ChatGPT, Codex, Cursor or any MCP client: explore databases, count records for free, and buy lists with credits you approve.
Your agent connects to one URL and you sign in to ListShack in your browser. You choose the account and what the agent may do, and you can revoke it any time. You never paste an API key, password or database credential into an agent.
MCP endpoint
https://dev.listshack.io/api/mcpStreamable HTTP, MCP protocol versions 2025-11-25 and 2026-07-28, OAuth 2.1 Authorization Code with PKCE.
Connect your client
Each client signs in with OAuth in your browser. Clients register themselves automatically, and ListShack shows whether it recognizes the app before you approve access.
Claude Code
Add the server, then run /mcp in Claude Code and choose Authenticate.
claude mcp add --transport http listshack https://dev.listshack.io/api/mcpCodex CLI and app
Add the server, then sign in. Codex opens the ListShack consent page in your browser.
codex mcp add listshack --url https://dev.listshack.io/api/mcp
codex mcp login listshackCursor
Add this to ~/.cursor/mcp.json (or .cursor/mcp.json in a project), then choose Connect next to ListShack in Cursor's MCP settings.
{
"mcpServers": {
"listshack": { "url": "https://dev.listshack.io/api/mcp" }
}
}ChatGPT
Open Settings → Apps & Connectors → Create (developer mode), enter the URL below, choose OAuth, and sign in when prompted.
https://dev.listshack.io/api/mcpClaude.ai
Open Settings → Connectors → Add custom connector, enter the URL below, then choose Connect and sign in.
https://dev.listshack.io/api/mcpWhat happens when you connect
- Add the URL above to your client and start the connection.
- Sign in to ListShack or create an account in the browser window that opens.
- Choose the ListShack account the agent will use. Each client is bound to one account at a time.
- Choose what the agent may do: view databases (
catalog.read), search and count (search.read), preview masked records (records.preview) and buy lists with your credits (lists.purchase). - Approve, return to your client and ask the agent to check your ListShack access.
- Review or revoke the connection any time in Connected apps.
Tools
Free on every plan
get_access_status: your plan, the agent's permissions, remaining free calls and credits.list_databasesanddescribe_database: the databases you can search and their fields.search_field_values: look up allowed values for a field, such as states or vehicle makes.count_records: how many records match a set of filters.create_search: save a search the agent can preview or buy from; it returns the count.
With a paid plan
preview_records: up to three masked sample records from a search. Spends no credits.purchase_list: buy a list from a search. The agent shows you the record count, fields, list name and exact credit cost, and nothing is spent until you confirm. If your client can't ask you in the chat, the agent gives you a link to approve the purchase on ListShack; links expire after 15 minutes.get_purchase_status: check a purchase and get the link to the finished list in ListShack.
If an agent on a free plan asks for a paid tool, it gives you a link to choose a plan. Agents never pay or upgrade for you.
Free calls and credits
- Free plans include 500 data calls a month, shared by every connected app and reset at 00:00 UTC on the 1st. Successful
count_records,search_field_valuesandcreate_searchcalls count; the other tools are free. - Paid plans have unlimited data calls.
- Purchases spend your ListShack credits, exactly as a purchase in the app does. Retrying the same purchase never charges twice.
Privacy
- Counts and field values are aggregates. Values and counts below 25 records are hidden, and larger counts are rounded to tens.
- No free tool returns names, addresses, phone numbers, emails or other contact details.
- Previews mask names, addresses, phone numbers and identifiers.
- Purchased lists are delivered to your ListShack account, where you download them as usual.
- OAuth scopes only identify you; the agent gets only the permissions you approve, checked on every request.
Direct REST API
Every MCP tool has a REST operation that uses the same OAuth access token, account, permissions and free allowance. Send the token as Authorization: Bearer <access-token>, and send a UUID in X-ListShack-Request-Id on metered and purchase requests so retries are safe.
API reference · Try it with OAuth · OpenAPI specification · Plans and pricing · Privacy · Terms
Try it with OAuth signs you in with PKCE and keeps the token only for that browser session. Headless and unattended clients are not supported.
REST examples
Get an access token through Try it with OAuth or your own OAuth client with PKCE, and use it as ACCESS_TOKEN. For each metered request, set REQUEST_ID to a new UUID. Reuse the same UUID and request body only to retry that request, including after a timeout.
Check the approved account and allowance
Requires a current OAuth connection; no additional data capability. Does not consume the free allowance.
curl --fail-with-body --include 'https://dev.listshack.io/api/v1/access-status' \
--header "Authorization: Bearer ${ACCESS_TOKEN}"Discover logical database IDs and supported criteria
Required capabilities: catalog.read. Does not consume the free allowance.
curl --fail-with-body --include 'https://dev.listshack.io/api/v1/databases' \
--header "Authorization: Bearer ${ACCESS_TOKEN}"Count a cohort without returning lead records
Required capabilities: search.read. Consumes one free account call on success.
curl --fail-with-body --include 'https://dev.listshack.io/api/v1/count-records' \
--header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header "X-ListShack-Request-Id: ${REQUEST_ID}" \
--json '{"database_id":"consumeremteladdr262","use_case":"direct_mail","filter":{"field":"state","operator":"eq","value":"CO"}}'Metered responses report usage in X-ListShack-Free-Usage. A hidden count is not zero. On 429, wait for the returned reset time; on 401, reconnect; on 403, review the connection's permissions; after 409, check the conflict before using a new request ID.
Questions? Read the MCP support guide or contact ListShack support.