Skip to main content
GTM workflow commands. Contract:
  • Success data is always JSON on stdout.
  • Errors are always printed to stderr.
  • Mutating commands require —apply; default is preview/no-op.
Every command follows the CLI contract: JSON on stdout, errors on stderr, and command-specific mutation safety controls. Keys resolve as described in Secrets and API keys.

Examples

Research an objective, then preview a batch CRM load:
uv run gtm accounts research "Find competitors to Acme Corp"
uv run gtm accounts find-people "VP of Engineering at Series B startups"
# Preview (default): prints the planned writes, mutates nothing.
uv run gtm accounts batch-add-people \
  --records '[{"email": "jane@acme.dev", "first_name": "Jane", "last_name": "Doe"}]'
Output (preview)
{
  "mode": "preview",
  "requested": 1,
  "created": 0,
  "skipped": 1,
  "conflicts": 0,
  "errors": 0,
  "results": [{ "status": "would_create", "email": "jane@acme.dev" }],
  "source": "elvis.gtm.batch_add_people",
  "applied_at": null
}
Add --apply to the same command to perform the writes.

Commands

gtm accounts research

Run non-mutating research.
uv run gtm accounts research [OPTIONS] [OBJECTIVE]
ArgumentTypeRequired
OBJECTIVEtextno
OptionTypeDefaultDescription
--jsontextJSON payload (overrides flags)
--parallel-api-keytextOverride the Parallel API key for this invocation

gtm accounts enrich

Run non-mutating enrichment.
uv run gtm accounts enrich [OPTIONS] [URL] [OBJECTIVE]
ArgumentTypeRequired
URLtextno
OBJECTIVEtextno
OptionTypeDefaultDescription
--jsontextJSON payload (overrides flags)
--parallel-api-keytextOverride the Parallel API key for this invocation

gtm accounts find-people

Run non-mutating people discovery.
uv run gtm accounts find-people [OPTIONS] [QUERY]
ArgumentTypeRequired
QUERYtextno
OptionTypeDefaultDescription
--jsontextJSON payload (overrides flags)
--parallel-api-keytextOverride the Parallel API key for this invocation

gtm accounts map-account-hierarchy

Run non-mutating account hierarchy mapping.
uv run gtm accounts map-account-hierarchy [OPTIONS] [ACCOUNT]
ArgumentTypeRequired
ACCOUNTtextno
OptionTypeDefaultDescription
--jsontextJSON payload (overrides flags)
--parallel-api-keytextOverride the Parallel API key for this invocation

gtm accounts batch-add-people

Batch add people with explicit preview/apply behavior.
uv run gtm accounts batch-add-people [OPTIONS]
OptionTypeDefaultDescription
--recordstext""JSON array of person records
--applybooleanfalsePerform writes to Attio
--jsontextJSON payload (overrides flags)
--attio-api-keytextOverride the Attio API key for this invocation
Preview by default: without --apply this command prints the planned mutation and writes nothing. See the CLI contract.

gtm accounts batch-add-companies

Batch add companies with explicit preview/apply behavior.
uv run gtm accounts batch-add-companies [OPTIONS]
OptionTypeDefaultDescription
--recordstext""JSON array of company records
--applybooleanfalsePerform writes to Attio
--jsontextJSON payload (overrides flags)
--attio-api-keytextOverride the Attio API key for this invocation
Preview by default: without --apply this command prints the planned mutation and writes nothing. See the CLI contract.
Last modified on July 14, 2026