> ## Documentation Index
> Fetch the complete documentation index at: https://deepline.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Designed for Agents

> Why Deepline's CLI-first design works across Claude Code, Codex, Cursor, Gemini CLI, Antigravity, Hermes, and other coding agents.

Deepline is built around one observation: **AI coding agents are not just users — they're a fundamentally different kind of user.** Every design choice in Deepline starts from "what would make Claude Code, Codex, Cursor, Gemini CLI, Antigravity, Hermes, or another coding agent succeed here?"

This page explains the principles, the interfaces we ship, and why our recommended primitive is the CLI for coding agents.

## The three principles

### 1. Text-first output, not JSON-first

Agents are language models. They parse text natively. Every Deepline command outputs human-readable structured text by default (CSV, formatted tables, markdown summaries). Use `--json` only when piping to another program.

**Why:** When an agent reads `deepline tools list`, it sees a sortable table it can reason about. When it reads JSON, it has to parse, then summarize, then plan. That's two extra reasoning steps per call.

### 2. Composable Unix-style commands, not monolithic workflows

Each Deepline command does one thing: `enrich`, `tools search`, `tools execute`, `auth status`. Pipelines are built by chaining commands, not by configuring monolithic workflow objects.

**Why:** Agents are good at composing 4 simple commands; they're bad at filling in 47 fields of a workflow config. Compose > configure.

### 3. Failure modes are loud, not silent

Per our internal contributor guide: "Loud failures + short circuits > fallbacks." When a provider goes down, Deepline returns a clear error. We don't silently route to a worse provider or return partial data.

**Why:** Agents debug by reading error messages. Silent fallbacks make agents confidently wrong.

## The four interfaces, and when each is right

| Interface                                    | When to use                            | Why                                       |
| -------------------------------------------- | -------------------------------------- | ----------------------------------------- |
| **CLI** (via the agent's Bash/terminal tool) | Default for coding agents              | Text output, low context cost, composable |
| **TypeScript SDK**                           | Generating app code                    | Types and JSDoc become inline docs in IDE |
| **MCP server**                               | Non-shell agent runtimes               | Useful where shell access is unavailable  |
| **REST API**                                 | Direct integrations, non-agent clients | Flexible for production services          |

The same tool and action IDs back the interfaces where that surface is enabled.

## Why we recommend the CLI for coding agents

For Deepline:

* The CLI adds no Deepline tool schemas to the agent context. Claude Code, Codex, Cursor, Gemini CLI, Antigravity, Hermes, and most coding agents already know how to use a shell.
* Output is text. Composable with `awk`, `jq`, `grep`, and downstream Deepline commands.
* Failures are observable. Stderr messages are directly readable by the agent.
* The same command can move from a local laptop to a repo agent, background agent, or sandbox.

MCP can still be the right interface for environments that cannot shell out, or
when the host wants a protocol-level tool registry. We keep the CLI as the
default because GTM data work is usually file-oriented: read a CSV, run a tool,
write a CSV, inspect output, then continue.

## Coding agents Deepline supports

<CardGroup cols={2}>
  <Card title="Claude Code" icon="terminal" href="/sdk-v2/claude-code">
    Best-covered path today: Deepline skill plus CLI.
  </Card>

  <Card title="Codex" icon="code" href="/sdk-v2/coding-agents">
    Hosted Deepline skills and CLI commands from the Codex terminal.
  </Card>

  <Card title="Cursor, Gemini CLI, Antigravity" icon="bot" href="/sdk-v2/coding-agents">
    Supported hosted skill targets with the same CLI command surface.
  </Card>

  <Card title="Hermes Agent / Hermes IDE" icon="sparkles" href="/sdk-v2/coding-agents">
    CLI-compatible today. Deepline does not publish a hosted Hermes skill target yet.
  </Card>
</CardGroup>

See [Coding Agents](/sdk-v2/coding-agents) for install commands, supported
skill targets, and the Deepline GTM agent repo.

## What we DON'T do (and why)

### We don't ship a Claude Code skill that wraps the CLI in MCP-style tool definitions

The skill teaches Claude Code about Deepline workflows; it doesn't inject tool schemas into the context window. The agent still reaches the CLI via Bash. Token cost stays low.

### We don't auto-route to "better" providers without telling the agent

If you ask for `apollo_people_search`, you get Apollo. If Apollo is down, you get an error. Use a `*_waterfall` tool when you want failover.

### We don't hide pricing

Every tool has visible per-operation pricing. Agents reason about cost too. We expose it via `deepline tools list` (per-tool pricing in the output).

### We don't ship one giant `deepline` command with 200 flags

We ship narrow commands: `enrich`, `tools search`, `tools execute`, `billing balance`, `auth status`. Agents memorize a handful of commands; they don't memorize 200 flags.

## How this shows up in practice

A typical Claude Code session for an outbound campaign looks like:

```bash theme={null}
# Discover available tools (cost is shown per-tool in the listing)
deepline tools list

# Pilot on 5 rows to verify schema
deepline enrich --input leads.csv --output test.csv --name "email-pilot" --rows 0:4 \
  --with '{"alias":"email","tool":"name_and_domain_to_email_waterfall","payload":{"first_name":"{{first_name}}","last_name":"{{last_name}}","domain":"{{domain}}"}}'

# Run full file
deepline enrich --input leads.csv --output enriched.csv --name "email-full" \
  --with '{"alias":"email","tool":"name_and_domain_to_email_waterfall","payload":{"first_name":"{{first_name}}","last_name":"{{last_name}}","domain":"{{domain}}"}}'
```

Four commands. Plain text output. No JSON parsing. No MCP overhead. The total context spent on Deepline tool descriptions: zero. Compare to an MCP-first design where the agent would have spent thousands of tokens on tool schemas before composing the first command.

## Further reading

* [Quickstart](/quickstart) — install Deepline and find a verified work email in 60 seconds
* [Coding Agents](/sdk-v2/coding-agents) — install Deepline for Codex, Claude Code, Cursor, Gemini CLI, Antigravity, Hermes, and other shell-capable agents
* [Claude Code skills](/features/claude-code-skills) — how the skill bundle teaches Claude Code about Deepline
* llms.txt for [Claude Code](https://code.deepline.com/llms-claude-code.txt), [Codex](https://code.deepline.com/llms-codex.txt), [Cursor](https://code.deepline.com/llms-cursor.txt), [Windsurf](https://code.deepline.com/llms-windsurf.txt)
* Full reference: [llms-full.txt](https://code.deepline.com/llms-full.txt)
