Skip to main content

Agent-ready command-line interface for Close CRM — set up leads, keep contacts and notes current, track tasks and opportunities, and search across all of it. Installs the `close` command.

Project description

close — the agent-ready Close CRM CLI

Set up leads, keep contacts and notes current, track tasks and opportunities, and search across all of it — a Close CRM client an LLM can drive with no prior knowledge of it.

PyPI CI Python License: MIT Agent ready

Install: pipx install agent-tool-close-crm-cli — then run close guide.

close wraps the Close CRM REST API in a command line built for AI agents: JSON on stdout by default, errors as JSON on stderr with a meaningful exit code, a built-in guide that needs no network, and --dry-run on every write. Point an agent at a website and let it stand a lead up end to end — company, contacts, notes, a first task and an opportunity — then keep it current, search across everything, and see what happened last.

The command surface

 Usage: close [OPTIONS] COMMAND [ARGS]...

 Agent-friendly CLI for Close CRM: set up leads, keep contacts current, log notes
 and calls, create and reschedule tasks and opportunities, and search across all of
 it.

 Output is JSON on stdout by default (errors are JSON on stderr with a non-zero
 exit code); add `-o table` or trim with `--fields id,name`.

 New here / no context? Run `close guide` for the full playbook.

╭─ Options ────────────────────────────────────────────────────────────────────────╮
│ --output            -o      <json|table|markdown|csv>  Output format: json       │
│                                                        (default), table,         │
│                                                        markdown, csv. Also       │
│                                                        --format/-f, anywhere on  │
│                                                        the line.                 │
│ --fields,--columns          <str>                      Comma-separated fields to │
│                                                        return, e.g.              │
│                                                        'id,display_name'. Works  │
│                                                        anywhere on the line.     │
│ --profile           -p      <str>                      Configuration profile.    │
│                                                        One profile per Close API │
│                                                        key (e.g. a second org).  │
│ --dry-run                                              Mutating commands: print  │
│                                                        the request that would be │
│                                                        sent and exit.            │
│ --stream                                               Stream results as NDJSON. │
│ --no-context                                           Ignore the saved session  │
│                                                        context for this command. │
│ --no-color                                             Disable coloured output.  │
│ --version           -V                                 Show version and exit.    │
│ --help                                                 Show this message and     │
│                                                        exit.                     │
╰──────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────╮
│ guide     Built-in operating guide — how to use this CLI without external docs.  │
│ auth      Log in with an API key, log out, inspect credentials.                  │
│ raw       Escape hatch: call any Close API endpoint directly.                    │
│ settings  View & change CLI settings.                                            │
│ context   Sticky session defaults (e.g. a lead), applied to later commands.      │
│ install   Integrate with other tools (e.g. `install claude`).                    │
╰──────────────────────────────────────────────────────────────────────────────────╯

 Learn more:  `close guide`  ·  `close guide <topic>`  ·  `close <group> --help`

Status — v0.1.0. This first release ships the full chassis, the built-in guide, authentication, and the raw escape hatch — so an agent can already drive every Close endpoint (leads, contacts, notes, calls, tasks, opportunities, statuses, search) through close raw, with the family's JSON contract and --dry-run safety. Typed, name-resolving domain commands (close lead, close contact, close task, close opportunity, close search, …) are landing release by release on top of it. Run close guide for the current map.

Quickstart

pipx install agent-tool-close-crm-cli
close auth login                       # paste an API key from app.close.com/settings/api/
# ...or run headless, no config file:
export CLOSE_API_KEY=api_xxxxxxxx

close guide                            # the built-in manual — no network needed
close raw get me/                      # who am I, which org
close raw post lead/ --data '{"name": "Acme Inc", "url": "https://acme.com"}'
close raw get lead/ -P query="Acme"    # find it again
close --dry-run raw put lead/<id>/ --data '{"status_id": "<status>"}'   # preview a write

Why "agent-ready"

An agent-ready CLI is one an LLM with no prior knowledge of the tool can discover, drive correctly, and know whether it worked — without a human in the loop. Concretely:

  • stdout is JSON, always. close … | jq never breaks; human status goes to stderr.
  • Errors are a machine channel too. {"error": "...", "status": 404} on stderr, and a 422 carries fieldErrors — the exact fields Close rejected, as dotted paths (contacts.0.emails.0.email) — so a rejected write is fixable on the next call.
  • Exit codes are the error taxonomy (see below): branch on the class without parsing prose.
  • It teaches itself. close guide is a zero-config, zero-network, offline manual compiled into the binary; close install claude registers it as a Claude Code skill.
  • Preview before you write. --dry-run prints the exact request and sends nothing.

The Close data model

Object Id prefix What
Lead lead_ A company/account — the central object; everything hangs off it. Has a status.
Contact cont_ A person at a lead — names, emails, phones.
Activity acti_ The lead's timeline: notes, calls, emails, SMS, status changes. "What happened last."
Task task_ A to-do with a due date. "Open tasks" = incomplete ones due.
Opportunity oppo_ A potential deal: value, confidence, a pipeline status (active/won/lost), a close date.
Status stat_ Lead & opportunity statuses — per-org and custom; resolve them, never hard-code.

Lists return {"data": [...], "has_more": ..., "total_results": N}; page with _skip/_limit (max 100). Updates are PUT (partial — send only what changed).

Output contract & exit codes

Default output is JSON on stdout; add -o table for humans, -o csv to export, --fields id,display_name to trim, --stream for NDJSON. Errors are JSON on stderr with a non-zero exit code:

Code Meaning Code Meaning
0 success (incl. a --dry-run) 5 not found
1 generic error 6 conflict
3 config (no API key) 7 validation — see fieldErrors
4 auth (bad/insufficient key) 130 interrupted

Codes 0–7 mean the same thing across every tool in the family.

Authentication

A Close API key (starts with api_), minted at app.close.com/settings/api/. The key is the org selector — there is no server URL to configure.

close auth login                       # prompts, verifies against /me/, stores in your OS keyring
export CLOSE_API_KEY=api_xxxxxxxx      # or headless, no config file
close auth status                      # names WHICH key/backend is actually in use

Precedence is env > OS keyring > 0600 file; a second Close org is a second profile (close auth login --profile client-x).

Part of the family

close is built on agent-tool-shared-cli, the shared chassis that fixes the output format, the exit-code taxonomy and the credential handling — so an agent that has learned one tool in the family already knows the next.

Tool Install For
close pipx install agent-tool-close-crm-cli Close CRM — leads, contacts, notes, tasks, opportunities, search
drone-cli pipx install agent-tool-drone-cli Drone CI — builds, failing-step logs, promotions
grafana pipx install agent-tool-grafana-cli Grafana — log discovery, health scan, alert routing
openproject pipx install agent-tool-openproject-cli OpenProject — work packages, time, invoicing
lexware-office pipx install agent-tool-lexware-office-cli Lexware Office — invoices, contacts, AR-aging

Keywords: Close CRM CLI, Close.com API, sales CRM command line, leads, contacts, sales opportunities, sales pipeline, tasks, CRM automation, AI agent tool, LLM tooling, Claude.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent_tool_close_crm_cli-0.1.0.tar.gz (37.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent_tool_close_crm_cli-0.1.0-py3-none-any.whl (40.9 kB view details)

Uploaded Python 3

File details

Details for the file agent_tool_close_crm_cli-0.1.0.tar.gz.

File metadata

  • Download URL: agent_tool_close_crm_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 37.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_tool_close_crm_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c9ba16154fb6928f5cfd69670c381e3d2bfb8eeb5fd50c6d9f291afc068f4629
MD5 191cd394d457767f0902526c48e414e2
BLAKE2b-256 b382eb72dcc8241048b4ae07a3be82fe815650ae3e37b57bc3d9b46d87b1bb51

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_tool_close_crm_cli-0.1.0.tar.gz:

Publisher: release.yml on alexander-zierhut/agent-tool-close-crm-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agent_tool_close_crm_cli-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agent_tool_close_crm_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0fb2448243864aa18a7b23fc1cc7827e4de2d0cf99681d6a7f9e09034e85f98
MD5 fc20202cfc81f3f78f4333afaa98cb9a
BLAKE2b-256 88f92eceac3fa9296432f964a94c60a98714fc29234f22551aca1fd085e4ab47

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_tool_close_crm_cli-0.1.0-py3-none-any.whl:

Publisher: release.yml on alexander-zierhut/agent-tool-close-crm-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page