---
name: pp-conduyt-crm
description: "Full-coverage Conduyt CLI: every endpoint, plus Kloudi-grade send-safety forensics no other surface has. Trigger phrases: `is this list safe to text`, `why did that import fail`, `verify phone line types`, `check the sms delivery report`, `preflight this import`, `use conduyt-crm`, `run conduyt-crm`."
author: "conduyt"
license: "Apache-2.0"
argument-hint: "<command> [args] | install cli|mcp"
allowed-tools: "Read Bash"
metadata:
  openclaw:
    requires:
      bins:
        - conduyt-crm-pp-cli
---
<!-- GENERATED FILE — DO NOT EDIT.
     This file is a verbatim mirror of library/sales-and-crm/conduyt-crm/SKILL.md,
     regenerated post-merge by tools/generate-skills/. Hand-edits here are
     silently overwritten on the next regen. Edit the library/ source instead.
     See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->

# Conduyt CRM — Printing Press CLI

## Prerequisites: Install the CLI

This skill drives the `conduyt-crm-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:

1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
   ```bash
   npx -y @mvanhorn/printing-press-library install conduyt-crm --cli-only
   ```
2. Verify: `conduyt-crm-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.

If the `npx` install fails before this CLI has a public-library category, install Node or use the category-specific Go fallback after publish.

If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.

Full coverage of the Conduyt CRM API with a local SQLite store, offline search, and agent-native output. On top of the mirror: send-check, imports blame, imports watch, reports scorecard, reports compare, automations hours-audit and dialer coverage — the commands that answer 'is this list safe to text?', 'what did that import actually do?', 'who is on pace?' and 'what will the dialer hand out next?' in one call.

## When to Use This CLI

Reach for this CLI whenever an agent or operator works Conduyt CRM data: contact and deal CRUD, import safety (preflight, watch, blame), the account-wide SMS delivery report (reports get-sms-delivery), and line-type verification. Prefer the local-store commands (search, sql, analytics, send-check) for read-heavy questions — they avoid rate limits entirely.

## Unique Capabilities

These capabilities aren't available in any other tool for this API.

### Kloudi-grade send safety
- **`send-check`** — Go/no-go verdict on a list, tag, or contact before any SMS or drip: phone present, Twilio-verified line type, Twilio validity, and DNC status in one table (see imports blame for an import's side effects).

  _Run it before acting on any 'text this list' instruction — it is the anti-Kloudi gate._

  ```bash
  conduyt-crm-pp-cli send-check --tag kloudi-july --agent
  ```
- **`imports blame`** — For one import job: every error row grouped by reason, plus the job-scoped side effects (queued, retryable, exhausted, held).

  _Answers 'which rows of the Tuesday import failed, and are its side effects still queued or held?' in one call after any bulk push._

  ```bash
  conduyt-crm-pp-cli imports blame 3f2a9c1e-0000-0000-0000-000000000000 --json
  ```
- **`imports watch`** — Polls an import job to completion, then renders the row-outcome recap (created/updated/skipped/errors) and, with --verify, checks its job-scoped side effects.

  _Drop it into n8n or cron and alert on bad imports instead of discovering them hours later._

  ```bash
  conduyt-crm-pp-cli imports watch 3f2a9c1e-0000-0000-0000-000000000000 --verify
  ```
- **`contacts verify-line-type`** — Counts unverified contacts and prints the tenant-paid Twilio cost without spending (--estimate); 'run --until-done' with one scope (--smart-list or --contact-ids) drives the batched verification to done. Requires the account's Phone Line-Type Verification setting (403 'not enabled' otherwise).

  _Know the dollar exposure before spending it; then run 'contacts verify-line-type run --until-done --smart-list <uuid>' (or --contact-ids <uuid,...>) to verify._

  ```bash
  conduyt-crm-pp-cli contacts verify-line-type --smart-list 7c1d2e3f-0000-0000-0000-000000000000 --estimate
  ```
- **`drips audit`** — Flags duplicate sends in a window: any contact who received the same message body more than once, from the local store.

  _Proves a drip cohort fired exactly once per contact — or names the exceptions._

  ```bash
  conduyt-crm-pp-cli drips audit 9b8c7d6e-0000-0000-0000-000000000000 --json
  ```

### Reports as commands
- **`reports scorecard`** — Target versus actual per user and metric with attainment percent and pace to the end of the period.

  _Pick it when asked who is on pace, off pace, or how far from target a rep is._

  ```bash
  conduyt-crm-pp-cli reports scorecard --period month --agent
  ```
- **`reports compare`** — Any core report called for a window and the equal prior window, with prior, current, delta and delta percent on every numeric value. `--assigned-to` applies to speed-to-lead, appointments and call-performance; `--pipeline` to funnel.

  _Use it to explain why a number moved week over week without pulling both reports by hand._

  ```bash
  conduyt-crm-pp-cli reports compare speed-to-lead --range 7d --json
  ```
- **`automations hours-audit`** — Every Send SMS, Send Email and Assign step across synced automations, listed with or without an operating-hours window. With `--published-only`, `summary.unpublished` counts automations with no published audited actions.

  _Use it to confirm quiet-hours coverage after a publish or when compliance asks which steps can fire after hours._

  ```bash
  conduyt-crm-pp-cli automations hours-audit --published-only --json
  ```

### Dialer operations
- **`dialer coverage`** — Priorities in dial order with queue depth per priority and the count of available agents; empty priorities are listed under empty_priorities with a warning (exit 0).

  _Run it before the floor starts to see what Smart Dialing will hand out next and where a priority has run dry._

  ```bash
  conduyt-crm-pp-cli dialer coverage --limit 25 --agent
  ```

### Local state that compounds
- **`analytics`** — GROUP BY over synced entities — segment counts without paging the API (--type/--group-by/--limit).

  _The fast path for 'how many contacts are X' questions agents ask constantly._

  ```bash
  conduyt-crm-pp-cli analytics --type contacts --group-by lineType --agent
  ```
- **`tail`** — Interval polling over a resource that re-emits current results as JSON — watch messages or activities as a blast goes out.

  _Confirm automation side effects and outbound sends as they happen._

  ```bash
  conduyt-crm-pp-cli tail messages --interval 5s --agent
  ```

### AI teammate webhooks

An AI teammate (for example Grok Bot) can be woken through its own webhook,
created by the teammate's Connect in Settings > AI (never through the webhook
routes, which refuse these event names). Such a webhook receives only:
`chat.agent_turn` (one per Team Chat message that is a turn for that teammate,
by the same rule as the listener inbox: AI Team Chat, a DM to it, a channel set
to "always", an @mention of it, or, while the workspace's thread view is on, a
person's unmentioned reply in a thread under its own answer; never in a channel
where agents are muted)
and `chat.agent_test` (the Connect / Test hello). An ordinary webhook never
receives either. Besides the HMAC headers, each request carries the teammate's
sender key as `Authorization: Bearer <key>`. A `chat.agent_turn` more than 10
minutes old is cancelled instead of sent, so only the 1m and 5m retries apply.
The `data` of a turn: agentUserId, agentHandle, messageId, channelId,
channelName, channelKind, threadId (reply with parentId = threadId), senderId,
senderName, senderKind, senderIsOwner, body, createdAt, replyIdempotencyKey
(`turn:<messageId>`), linkedRecord (`{ kind }` or null) and toolsUrl.

`--ca-cert`, `CONDUYT_CRM_CA_CERT`, or `ca_cert` adds a PEM CA bundle to the system trust roots. `--tls-server-name`, `CONDUYT_CRM_TLS_SERVER_NAME`, or `tls_server_name` is the name checked against the certificate. Precedence is flag, then environment, then the config file. A config file other users can change does not supply these settings. `doctor` reports the trust in use and names the setting that fixes a chain or hostname failure.

## Command Reference

**account** — Manage account

- `conduyt-crm-pp-cli account get-readiness` — List account readiness
- `conduyt-crm-pp-cli account post-company-name` — The one screen after a one-click Google or Microsoft sign-up ('What's your company called?').

**account-exports** — Manage account exports

- `conduyt-crm-pp-cli account-exports get` — List account-exports
- `conduyt-crm-pp-cli account-exports post` — Create / invoke account-exports

**accounts** — Manage accounts

- `conduyt-crm-pp-cli accounts get` — List accounts
- `conduyt-crm-pp-cli accounts post` — Create / invoke accounts

**activities** — Activity feed and logging

- `conduyt-crm-pp-cli activities create-activity` — Log an activity
- `conduyt-crm-pp-cli activities get-assignment-reasons` — List activities assignment-reasons
- `conduyt-crm-pp-cli activities get-id` — Get activities id
- `conduyt-crm-pp-cli activities list` — List activities

**activity** — Manage activity

- `conduyt-crm-pp-cli activity` — Streams the activities the activity list would answer for the same filters (the same visibility

**admin** — Super-admin account management and impersonation

- `conduyt-crm-pp-cli admin clean-test-accounts` — Delete test accounts
- `conduyt-crm-pp-cli admin clean-test-data` — Clean test data from the system
- `conduyt-crm-pp-cli admin impersonate` — Impersonate a user (super-admin)
- `conduyt-crm-pp-cli admin list-accounts` — (#612) A page of accounts, newest first (page / per_page, default 50, max 200; limit is an alias of per_page)
- `conduyt-crm-pp-cli admin stop-impersonate` — Stop impersonating
- `conduyt-crm-pp-cli admin toggle-comp` — Toggle comp (free) status for an account

**ai** — AI-powered features (chat, email compose, contact enrichment)

- `conduyt-crm-pp-cli ai chat` — AI chat assistant
- `conduyt-crm-pp-cli ai compose-email` — AI-assisted email composition
- `conduyt-crm-pp-cli ai deal-insights` — AI-generated deal insights and recommendations
- `conduyt-crm-pp-cli ai enrich-contact` — AI-powered contact data enrichment
- `conduyt-crm-pp-cli ai get-actions-runs-id` — Get ai actions runs id
- `conduyt-crm-pp-cli ai get-agenda` — List ai agenda
- `conduyt-crm-pp-cli ai get-daily-brief` — List ai daily-brief
- `conduyt-crm-pp-cli ai get-feed` — List ai feed
- `conduyt-crm-pp-cli ai get-insights` — List ai insights
- `conduyt-crm-pp-cli ai get-next-actions` — List ai next-actions
- `conduyt-crm-pp-cli ai get-usage` — List ai usage
- `conduyt-crm-pp-cli ai improve-email` — AI-assisted email improvement
- `conduyt-crm-pp-cli ai post-actions` — Create / invoke ai actions
- `conduyt-crm-pp-cli ai post-actions-execute` — Create / invoke ai actions execute
- `conduyt-crm-pp-cli ai post-conversation-intelligence` — Create / invoke ai conversation-intelligence
- `conduyt-crm-pp-cli ai post-insights` — Create / invoke ai insights
- `conduyt-crm-pp-cli ai post-tasks` — Create / invoke ai tasks
- `conduyt-crm-pp-cli ai summarize-contact` — AI-generated contact summary

**api-keys** — API key management

- `conduyt-crm-pp-cli api-keys check` — Returns tier, scopes, rate limit, IP allowlist, and usage for the API key used on the request.
- `conduyt-crm-pp-cli api-keys create` — Returns the full key exactly once. Store it securely.
- `conduyt-crm-pp-cli api-keys get-id` — Get api-keys id
- `conduyt-crm-pp-cli api-keys list` — Returns API key metadata. Never returns the full key.
- `conduyt-crm-pp-cli api-keys revoke` — Revoke an API key
- `conduyt-crm-pp-cli api-keys update` — Update key name, tier, scopes, IP allowlist, rate limit, and optional expiry. API-key auth cannot manage API keys.

**api_search** — Manage api search

- `conduyt-crm-pp-cli api-search` — Global search across contacts, companies, and deals

**appointments** — Appointment scheduling

- `conduyt-crm-pp-cli appointments create` — Create an appointment
- `conduyt-crm-pp-cli appointments delete` — Delete an appointment
- `conduyt-crm-pp-cli appointments get` — Get an appointment by ID
- `conduyt-crm-pp-cli appointments list` — List all appointments
- `conduyt-crm-pp-cli appointments update` — Update an appointment

**automation-executions** — Automation execution logs and step details

- `conduyt-crm-pp-cli automation-executions get` — Get execution details by ID
- `conduyt-crm-pp-cli automation-executions list` — List automation execution logs

**automation-folders** — Manage automation folders

- `conduyt-crm-pp-cli automation-folders delete-id` — Delete automation-folders id
- `conduyt-crm-pp-cli automation-folders get` — List automation-folders
- `conduyt-crm-pp-cli automation-folders patch-id` — Update automation-folders id
- `conduyt-crm-pp-cli automation-folders post` — Create / invoke automation-folders

**automations** — Workflow automations (native + n8n), publishing, analytics

- `conduyt-crm-pp-cli automations create` — Create an automation
- `conduyt-crm-pp-cli automations create-from-template` — Create automation from a template
- `conduyt-crm-pp-cli automations delete` — Delete an automation
- `conduyt-crm-pp-cli automations get` — Get an automation by ID
- `conduyt-crm-pp-cli automations get-distribution-steps` — List automations distribution-steps
- `conduyt-crm-pp-cli automations get-failures` — List automations failures
- `conduyt-crm-pp-cli automations get-failures-drilldown` — List automations failures drilldown
- `conduyt-crm-pp-cli automations get-resolve` — List automations resolve
- `conduyt-crm-pp-cli automations get-schema` — List automations schema
- `conduyt-crm-pp-cli automations get-step-logs` — List automations step-logs
- `conduyt-crm-pp-cli automations list` — List automations
- `conduyt-crm-pp-cli automations list-actions` — List available automation actions
- `conduyt-crm-pp-cli automations list-condition-fields` — List available condition fields for triggers
- `conduyt-crm-pp-cli automations list-events` — List available trigger events
- `conduyt-crm-pp-cli automations list-templates` — List automation templates
- `conduyt-crm-pp-cli automations post-copilot` — Create / invoke automations copilot
- `conduyt-crm-pp-cli automations post-import` — Create / invoke automations import
- `conduyt-crm-pp-cli automations post-resolve` — Create / invoke automations resolve
- `conduyt-crm-pp-cli automations post-validate` — Create / invoke automations validate
- `conduyt-crm-pp-cli automations test-webhook` — Send a test payload to an automation's webhook URL
- `conduyt-crm-pp-cli automations update` — Update an automation

**availability** — Manage availability

- `conduyt-crm-pp-cli availability get` — Get current user's availability rules
- `conduyt-crm-pp-cli availability set` — Set availability rules

**batch-operations** — Manage batch operations

- `conduyt-crm-pp-cli batch-operations get` — List batch-operations
- `conduyt-crm-pp-cli batch-operations get-id` — Get batch-operations id
- `conduyt-crm-pp-cli batch-operations post` — Create / invoke batch-operations

**billing** — Stripe billing, checkout, and subscription status

- `conduyt-crm-pp-cli billing create-checkout-session` — Create a Stripe checkout session
- `conduyt-crm-pp-cli billing create-portal` — Create a Stripe billing portal session
- `conduyt-crm-pp-cli billing delete-addons` — Delete billing addons
- `conduyt-crm-pp-cli billing get-addons` — List billing addons
- `conduyt-crm-pp-cli billing get-gate` — List billing gate
- `conduyt-crm-pp-cli billing get-status` — Get subscription status
- `conduyt-crm-pp-cli billing patch-addons` — Update billing addons
- `conduyt-crm-pp-cli billing post-addons` — Create / invoke billing addons
- `conduyt-crm-pp-cli billing webhook-stripe` — Stripe billing webhook

**booking-pages** — Public booking pages (Calendly-style)

- `conduyt-crm-pp-cli booking-pages create` — Create a booking page
- `conduyt-crm-pp-cli booking-pages delete` — Delete a booking page
- `conduyt-crm-pp-cli booking-pages get` — Get a booking page by ID
- `conduyt-crm-pp-cli booking-pages list` — List booking pages
- `conduyt-crm-pp-cli booking-pages update` — Update a booking page

**booking-routing-forms** — Manage booking routing forms

- `conduyt-crm-pp-cli booking-routing-forms delete-id` — Delete booking-routing-forms id
- `conduyt-crm-pp-cli booking-routing-forms get` — List booking-routing-forms
- `conduyt-crm-pp-cli booking-routing-forms get-id` — Get booking-routing-forms id
- `conduyt-crm-pp-cli booking-routing-forms patch-id` — Update booking-routing-forms id
- `conduyt-crm-pp-cli booking-routing-forms post` — Create / invoke booking-routing-forms

**bulk** — Manage bulk

- `conduyt-crm-pp-cli bulk delete-contacts` — Bulk delete contacts
- `conduyt-crm-pp-cli bulk edit-contacts` — Bulk edit contact fields
- `conduyt-crm-pp-cli bulk edit-deals` — Bulk edit deal fields
- `conduyt-crm-pp-cli bulk get-status` — Get bulk operation status
- `conduyt-crm-pp-cli bulk post-contacts-delete-matching` — Create / invoke bulk contacts delete-matching
- `conduyt-crm-pp-cli bulk post-contacts-dnc` — Create / invoke bulk contacts dnc
- `conduyt-crm-pp-cli bulk post-contacts-untag` — Create / invoke bulk contacts untag
- `conduyt-crm-pp-cli bulk tag-contacts` — Bulk add/remove tags on contacts
- `conduyt-crm-pp-cli bulk update-contacts` — Bulk update contacts with field values
- `conduyt-crm-pp-cli bulk update-deals` — Updates up to 100 deals in one request.

**bulk-operations** — Bulk update, delete, and tag contacts and deals

- `conduyt-crm-pp-cli bulk-operations` — List bulk-operations unified

**calendar** — Internal calendar and appointment management

- `conduyt-crm-pp-cli calendar connect-google` — Initiate Google Calendar OAuth
- `conduyt-crm-pp-cli calendar connect-microsoft` — Initiate Microsoft Calendar OAuth
- `conduyt-crm-pp-cli calendar create-event` — Create an event on a connected calendar
- `conduyt-crm-pp-cli calendar delete-connection` — Disconnect a calendar
- `conduyt-crm-pp-cli calendar delete-event` — Delete a synced calendar event
- `conduyt-crm-pp-cli calendar get-connection` — Get a calendar connection by ID
- `conduyt-crm-pp-cli calendar get-event` — Get a synced calendar event
- `conduyt-crm-pp-cli calendar get-health` — List calendar health
- `conduyt-crm-pp-cli calendar list-connections` — List calendar connections
- `conduyt-crm-pp-cli calendar list-events` — List synced calendar events
- `conduyt-crm-pp-cli calendar sync` — Trigger manual calendar sync
- `conduyt-crm-pp-cli calendar update-event` — Update a synced calendar event
- `conduyt-crm-pp-cli calendar webhook-google` — Google Calendar push notification webhook
- `conduyt-crm-pp-cli calendar webhook-microsoft` — Microsoft Calendar webhook

**calendars** — Internal calendar and appointment management

- `conduyt-crm-pp-cli calendars create` — Create a calendar
- `conduyt-crm-pp-cli calendars get` — Get a calendar by ID
- `conduyt-crm-pp-cli calendars list` — List internal calendars
- `conduyt-crm-pp-cli calendars update` — Update a calendar

**call-flows** — Manage call flows

- `conduyt-crm-pp-cli call-flows delete-functions-id` — Delete call-flows functions id
- `conduyt-crm-pp-cli call-flows delete-id` — Delete call-flows id
- `conduyt-crm-pp-cli call-flows get` — List cal