DealMachine

by dealmachine

Not rated
GitHub

About

Property, owner, people, and company intelligence for real estate sales, marketing, prospecting, enrichment, and lead generation.

Details

Author
dealmachine
Categories
Marketing, Other

Setup

Install DealMachine in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/dealmachine/dealmachine-cli

Follow the installation instructions in the repository README, then restart your MCP client.

DealMachine CLI (dm) -- property intelligence from the command line.

A standalone Commander.js CLI that talks to the DealMachine REST API. Provides17 command groupscovering agent guidance, authentication, property search, people lookup, enrichment, comps, list management, and developer utilities. Compiles to a single ESM bundle viatsc.

This package haszero@dealmachine/*dependencies -- it is a self-contained binary that communicates exclusively through the public API.

This repository is also the public distribution package for the DealMachine MCP server and DealMachine skill.

- Hosted MCP server:https://mcp.dealmachine.com
- API documentation:https://api.docs.dealmachine.com
- Account and API keys:https://dealmachine.com/settings/developer
- Privacy policy:https://dealmachine.com/privacy-policy
- Terms of service:https://dealmachine.com/terms-of-service
- Support:support@dealmachine.com

The MCP server supports OAuth 2.1 for ChatGPT, Claude, Cursor, Codex, and other compatible clients. It can also use a DealMachine API key in developer clients that support bearer-token configuration.

- A hosted MCP connection for property, people, enrichment, comparable-sales, and account tools
- A credit-aware skill that discovers filters and fields, counts first, and confirms large paid operations
- A portableAgent Pluginspackage for compatible clients
- Manifests for OpenAI, Claude, Cursor, GitHub Copilot, and Gemini
- Official MCP Registry metadata inserver.json

The portable package follows Agent Plugins 1.0.0:

dealmachine-cli/ ├── plugin.json ├── mcp.json └── skills/ └── dealmachine/ ├── SKILL.md ├── REFERENCE.md └── SETUP.md

Compatible clients discover the DealMachine skill fromskills/dealmachine/and connect to the hosted Streamable HTTP MCP server declared inmcp.json. Client-specific manifests remain in the repository for compatibility, marketplace metadata, and richer presentation.

- "Find high-equity absentee-owned properties in Austin and estimate the credit cost first."
- "Look up the owner of this property and find available contact data."
- "Find comparable sales for this property."
- "Research people who match these criteria for a targeted prospecting list."

npx skills add DealMachine/dealmachine-cli

- AI agent integrations
-
Installation
-
Authentication
-
Configuration
-
Commands

- Agents--agents,agents guide,agents playbook,agents install,agents permissions
-
Auth--login,logout,whoami
-
Config--config get,config set,config path
-
Account--account
-
Usage--usage
-
Properties--search,count,get,ids,export
-
People--search,count,get,ids,export
-
Enrich--address,latlng,apn,email,phone,name
-
Comps-- comparable property analysis
-
Lists--search,create,get,update,delete,build,import,items,add,remove,export
-
Filters-- list available search filters
-
Fields-- list available data fields
-
Activity--search,get
-
Addresses--autocomplete,validate
-
Dev--license add,license list,license remove

The canonical implementation package is@dealmachine/cli. Thedealmachinepackage is the short install alias and provides the samedmcommand.

cd packages/cli npm run build node dist/index.js whoami

The binary entry isdist/index.js, declared inpackage.jsonunderbin.dm. Requires Node.js >= 18.

The CLI supports two authentication methods.

The defaultdm logincommand uses the OAuth 2.0 Device Authorization Grant (RFC 8628). This is the recommended flow for interactive use:
- The CLI requests a device code fromPOST /v1/auth/device/codewith client IDdealmachine-next-cliand your machine's hostname.
- A verification URL and user code are displayed. The browser opens automatically (unless--no-browser).
- You authorize the device in the browser by entering the user code.
- The CLI pollsPOST /v1/auth/device/tokenat the server-specified interval.
- On success, the API key, key ID, and organization details are stored to~/.dealmachine/config.json.

The polling handles all RFC 8628 responses:authorization_pending,slow_down(backs off by 5s),access_denied, andexpired_token.

# Skip auto-opening the browser dm login --no-browser # Target a specific environment dm login --env local dm login --env staging

For CI pipelines, scripts, or local development, pass an API key directly:

The key is verified againstGET /v1/accountbefore being stored. If verification fails, the CLI exits with a non-zero code.

If you do not have an API key yet, usedm signup,dm plans, anddm checkoutfirst. Public plan checkout only accepts self-serve Basic and Pro prices from the shared plan catalog and is capped at 60,000 monthly data credits.

If you are already logged in, you can switch the target API environment without logging out:

dm login --env local # Switch to http://localhost:3001/v1 dm login --env staging # Switch to https://api-staging.v2.dealmachine.com/v1 dm login --env production # Switch to https://api.v2.dealmachine.com/v1

Removes the config file at~/.dealmachine/config.json.

Credentials are stored at~/.dealmachine/config.jsonwith file permissions0600(owner read/write only). The config directory~/.dealmachine/is created with mode0700.

{ "apiKey": "dm_sk_live_...", "keyId": "key_abc123", "organizationId": 42, "organizationName": "Acme Corp", "organizationSlug": "acme-corp", "apiEnvironment": "production" }

The CLI checks these environment variables for API URL resolution (in priority order):

If none are set, the CLI falls back to theapiEnvironmentfield in the config file, then defaults toproduction.

Print concise guidance for agents using the CLI. This is the recommended first command when an agent has access todmbut has not loaded the DealMachine Playbook yet.

The guide tells agents to use--jsonand--quiet, verify auth, fetch live filters and fields before searches, count before credit-consuming work, and confirm expected credit usage before fetching records or exporting.

Print the same concise agent guidance explicitly.

Print the bundled DealMachine Playbook Markdown. Agents should load this before translating natural language property, people, contact, enrichment, list, export, comps, or credit-usage requests into CLI commands.

dm agents playbook dm agents playbook --json dm agents skill # alias

The public CLI source keeps its bundled Playbook atplaybook/PLAYBOOK.md. Monorepo builds can also copypackages/playbooks/playbook/SKILL.md. The build writes the selected source todist/agents/dealmachine-playbook.md, so the command works from a published CLI package as well as a local source checkout.

Install the Playbook as a native Claude Code skill. Personal scope is the default. Project scope installs under the current repository.

dm agents install claude-code dm agents install claude-code --project

Print the narrow Claude Code allowlist for free discovery and count commands. Paid and mutating commands are not pre-approved.

dm agents permissions dm agents permissions --json

Create a public API account and receive an API key:

dm signup developer@example.com --first-name Ada --last-name Lovelace --phone-number +15551234567 dm signup developer@example.com --login

List public self-serve Basic and Pro plans:

Create a Stripe checkout session using a price ID fromdm plans:

dm checkout --price-id price_xxx_monthly

Authenticate with your DealMachine account.

dm login # Device auth flow (opens browser) dm login --no-browser # Device auth, manual code entry dm login --key dm_sk_live_abc123 # Direct API key dm login --env local # Target local API
dm whoami # Show stored credentials dm whoami --verify # Verify credentials against the API

Get a configuration value, or display all values when no key is given.

dm config get # Show all config values dm config get apiEnvironment # Show specific value dm config get apiKey # Shows truncated key (first 20 chars)

Available keys:organizationName,organizationSlug,organizationId,apiEnvironment,keyId,apiKey.

Set a configuration value. OnlyapiEnvironmentis editable.

dm config set apiEnvironment local dm config set apiEnvironment staging dm config set apiEnvironment production

Print the absolute path to the config file.

dm config path # /Users/you/.dealmachine/config.json

Display account information including organization name, ID, creation date, and auth type.

Account ──────────────────────────────────────── Organization: Acme Corp Org ID: 42 Created: Jan 15, 2025 Auth Type: api_key

Show credit usage for the current billing cycle.

dm usage # Human-readable table dm usage --json # Machine-readable JSON
Credit Usage ────────────────────────────────────────────────── Plan: Pro Cycle: Mar 1, 2026 — Mar 31, 2026 Credits: 4,200 / 10,000 (42%) Remaining: 5,800 Breakdown: Properties: 3,100 People: 1,100

Search properties with filters and locations.

# Inline JSON body dm properties search --body '{ "locations": [{"type": "zip_code", "code": "78704"}], "filters": [{"filter_id": "property_type", "operator": "is_any_of", "value": ["single_family"]}] }' # From a file dm properties search -f search.json # Pipe from stdin cat search.json | dm properties search # Machine-readable output dm properties search -f search.json --json # Free estimate for scripts and agents dm properties search -f search.json --json --yes # Run after approval # Explicit free estimate dm properties search -f search.json --estimate-cost # Query Builder protocol filters dm properties search --include-lists 123,456 --exclude-previously-exported --body '{"locations":[]}'

Count properties matching filters without consuming credits.

dm properties count --body '{"locations": [{"type": "state", "code": "TX"}]}' dm properties count -f filters.json --json

Get a single property by its DealMachine ID.

dm properties get prop_12345 dm properties get prop_12345 --contact-audience owners_and_family dm properties get prop_12345 --contact-audience none dm properties get prop_12345 --fields estimated_value,equity dm properties get prop_12345 --json

Property lookup defaults toowners. If you only need property data, use--contact-audience none. This omits contacts and avoids people credits.

Get multiple properties by their IDs in a single batch request.

# Positional arguments dm properties ids prop_111 prop_222 prop_333 # Via JSON body dm properties ids --body '{"ids": ["prop_111", "prop_222"]}' # From file dm properties ids -f ids.json --contact-audience owners dm properties ids -f ids.json --contact-audience none

Export properties as CSV (up to 1,000,000 records). Returns signed download URLs.

dm properties export -f search.json dm properties export -f search.json --require-phone --scrub-dnc dm properties export --body '{"locations": [...]}' --mobile-only --json

Search people with filters and locations.

dm people search --body '{ "locations": [{"type": "zip_code", "code": "78704"}], "filters": [{"filter_id": "age", "operator": "between", "value": [30, 50]}] }' dm people search -f people-search.json --json dm people search -f people-search.json --estimate-cost dm people search -f people-search.json --json --yes dm people search --include-lists 123 --exclude-lists 456 --exclude-previously-exported --body '{"locations":[]}'

Non-interactive People Search returns a free estimate unless--yesis supplied. A specific person by name usesdm enrich name, not People Search.

Count people matching filters without consuming credits.

Get a single person by their DealMachine ID.

dm people get per_12345 dm people get per_12345 --include-properties --property-limit 20 dm people get per_12345 --fields estimated_household_income,estimated_value dm people get per_12345 --json

Get multiple people by their IDs in a single batch request.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.