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.
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 │
│ report Report a bug / missing feature — repo + pre-filled issue link. │
│ docs. │
│ lead Leads (accounts): create, read, search, update, set status. │
│ status Discover the org's lead and opportunity statuses. │
│ contact Contacts (people at a lead): add, update, list. │
│ activity Timeline: log notes, document calls, see what happened last. │
│ task Tasks: create, see what's open, reschedule, complete. │
│ opportunity Opportunities (deals): set up, list, move close dates, win/lose. │
│ search Clever search across leads, contacts, opportunities and tasks. │
│ 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`
Typed, name-resolving commands cover leads, contacts, activities (notes & calls), tasks, opportunities, statuses and search — pass a name, not an id (
--lead "Acme Inc",-s Qualified), and preview any write with--dry-run.close rawstill reaches anything not yet wrapped. Runclose guidefor the full 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
# stand a whole account up from a website:
close lead create -n "Acme Inc" --url https://acme.com -s Qualified
close contact add --lead "Acme Inc" -n "Jane Doe" --title CTO --email jane@acme.com
close activity note "Inbound from the website form." --lead "Acme Inc"
close task create "Book a demo" --lead "Acme Inc" --due +3d
close opportunity create --lead "Acme Inc" --value 5000 -s "Demo Completed" --close +4w
# then keep it moving:
close activity recent --lead "Acme Inc" # what happened last on this account
close task list --overdue # what's slipping
close opportunity reminders --within 14d # deals closing soon
close search leads 'status:"Qualified"' # clever search
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 … | jqnever breaks; human status goes to stderr. - Errors are a machine channel too.
{"error": "...", "status": 404}on stderr, and a 422 carriesfieldErrors— 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 guideis a zero-config, zero-network, offline manual compiled into the binary;close install clauderegisters it as a Claude Code skill. - Preview before you write.
--dry-runprints 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_tool_close_crm_cli-0.2.1.tar.gz.
File metadata
- Download URL: agent_tool_close_crm_cli-0.2.1.tar.gz
- Upload date:
- Size: 59.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
de47903edc1d67243121110a57de999ca895c308bb57814085c1fe5edc65d25f
|
|
| MD5 |
9b24b21dbe54178410e353e0212459e1
|
|
| BLAKE2b-256 |
f2947bc2a1da13bfb8393f9cfc8d5a3dc29189b755f518968edd830ce09fb9e2
|
Provenance
The following attestation bundles were made for agent_tool_close_crm_cli-0.2.1.tar.gz:
Publisher:
release.yml on alexander-zierhut/agent-tool-close-crm-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_tool_close_crm_cli-0.2.1.tar.gz -
Subject digest:
de47903edc1d67243121110a57de999ca895c308bb57814085c1fe5edc65d25f - Sigstore transparency entry: 2206456085
- Sigstore integration time:
-
Permalink:
alexander-zierhut/agent-tool-close-crm-cli@d21d37f8af452b81605e9ee84b6369a95fe5cc0d -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/alexander-zierhut
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d21d37f8af452b81605e9ee84b6369a95fe5cc0d -
Trigger Event:
push
-
Statement type:
File details
Details for the file agent_tool_close_crm_cli-0.2.1-py3-none-any.whl.
File metadata
- Download URL: agent_tool_close_crm_cli-0.2.1-py3-none-any.whl
- Upload date:
- Size: 64.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e13b889605d581b5a7c4fcfa6cd3a98d0bff0669cea5cddd3d8d2ce58970a5bc
|
|
| MD5 |
6e8268416ebdd57b8dbacd54e2a8f019
|
|
| BLAKE2b-256 |
fa532eb9dd8d12b6908ab8b5aaf84df189fe5fb6ad9182cfbc1119d32b91c79c
|
Provenance
The following attestation bundles were made for agent_tool_close_crm_cli-0.2.1-py3-none-any.whl:
Publisher:
release.yml on alexander-zierhut/agent-tool-close-crm-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agent_tool_close_crm_cli-0.2.1-py3-none-any.whl -
Subject digest:
e13b889605d581b5a7c4fcfa6cd3a98d0bff0669cea5cddd3d8d2ce58970a5bc - Sigstore transparency entry: 2206456273
- Sigstore integration time:
-
Permalink:
alexander-zierhut/agent-tool-close-crm-cli@d21d37f8af452b81605e9ee84b6369a95fe5cc0d -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/alexander-zierhut
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d21d37f8af452b81605e9ee84b6369a95fe5cc0d -
Trigger Event:
push
-
Statement type: