# AX Check: column.com
Checked 2026-09-29.

Column's docs are solid, but pricing stays hidden from agents.
Getting Started guide gives working curl examples for entities, accounts, and wires, but no pricing page exists — agents must contact sales or infer rates.

## Onboarding needs a login

## Coding sessions
All three sessions completed and found no public pricing page, describing custom or contract-negotiated pricing instead. Two named their assumptions explicitly (one citing a $15/wire example, one citing the sandbox-is-free premise), while one gave only a qualitative answer with no figures or stated assumptions.

### DeepSeek V4.1 Flash
[View public run](https://agents.withgauge.com/p/runs/5dee7273-e5e2-44a4-8a2f-f060d8891978) · [Read transcript](https://www.ax-check.com/column.com/sessions/deepseek.json)
Final output states Column has no public pricing, describes usage-based monthly invoicing and per-transfer fees, cites the $15/wire figure as 'an example, not a rate card,' i.e. names its assumption basis (seq 152).
#### End-to-end onboarding
- **Onboarding needs a login**: The agent researched Column's docs and OpenAPI spec extensively and wrote a working example script, but never obtained a real API key. It explicitly identified that a sandbox key must come from the dashboard (human signup) and the sandbox environment had no COLUMN_API_KEY. It ran the script only in --dry-run mode and confirmed the authenticated 'read' path fails locally with a missing-key error. No hosted authenticated operation was ever demonstrated.
  Event 152:

  ```text
  Blocked on: running any real authenticated call, because no `COLUMN_API_KEY` is present in this environment and I can't create one.
  ```
  Event 146:

  ```text
  Error: Missing API key. Set COLUMN_API_KEY (sandbox keys look like `test_...`).
  exit=1
  ```
  Event 74:

  ```text
  First, you'll need to navigate to [the dashboard](https://dashboard.column.com) and copy your `api-key`. A sandbox key is prefixed with `test_` and a live key is prefixed with `live_`.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No API key available to run authenticated calls**: The sandbox environment had no COLUMN_API_KEY, and getting one requires signing up at dashboard.column.com, which is a normal login/signup wall rather than a product defect. The agent correctly identified this and limited itself to a dry-run and a documented failure path, never faking success.
  Event 152:

  ```text
  Blocked on: running any real authenticated call, because no `COLUMN_API_KEY` is present in this environment and I can't create one.
  ```
  Event 146:

  ```text
  Error: Missing API key. Set COLUMN_API_KEY (sandbox keys look like `test_...`).
  exit=1
  ```
- **No official client SDK published**: The agent searched npm and PyPI for a Column SDK under several plausible names and found nothing published, confirming there is no official client library and direct REST calls or OpenAPI-based codegen is the intended integration path.
  Event 104:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/@columnhq%2fsdk - Not found
  ```
  Event 104:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/column-bank - Not found
  ```
  Event 103:

  ```text
  column-bank pypi: 404
  columnbank pypi: 404
  ```
- **Public pricing page redirects to homepage**: column.com/pricing returns HTTP 200 but is effectively empty content (a redirect stub), forcing the agent to infer pricing indirectly from docs (per-transfer fees, monthly invoicing) rather than a dedicated pricing page. This is product/site behavior, not agent error.
  Event 94:

  ```text
  <meta http-equiv="refresh" content="0; URL='/'" />
  ```
  Event 82:

  ```text
  3751 /tmp/column-site.txt
  ```

#### Suggested Changes
- **Publish a dedicated pricing page**: column.com/pricing currently just meta-refreshes to the homepage with no pricing content, forcing developers to dig through docs for scattered fee mentions (e.g. the USD 15.00 international wire fee). Add real pricing content at that URL and verify by curling https://column.com/pricing and confirming it returns substantive pricing copy instead of a redirect stub.
  Event 94:

  ```text
  <meta http-equiv="refresh" content="0; URL='/'" />
  ```
  Event 38:

  ```text
  200 https://column.com/pricing
  ```
- **Fix broken docs.column.com/docs/* links**: Direct guesses at docs.column.com/docs/authentication, working-with-the-api, getting-started, and sandbox-and-testing all 404'd; the real paths use /guides/ and /markdown/ prefixes. Add redirects from the plausible /docs/* paths to the correct /guides/* or /markdown/* URLs, and verify with curl -o /dev/null -w '%{http_code}' on each old path.
  Event 45:

  ```text
  === https://docs.column.com/docs/authentication ===
  404
  === https://docs.column.com/docs/working-with-the-api ===
  404
  === https://docs.column.com/docs/getting-started ===
  404
  === https://docs.column.com/docs/sandbox-and-testing ===
  404
  ```
- **List the lack of an official SDK explicitly in the docs**: The getting-started guide and llms.txt point to the OpenAPI spec for generating clients but never state plainly that no official Node/Python SDK exists, leading the agent to spend multiple npm/PyPI searches confirming this by trial and error. Add a short note near the OpenAPI spec link on docs.column.com stating no official SDK is published; confirm by checking that new visitors no longer need to guess package names on npm/PyPI.
  Event 103:

  ```text
  Column's API is defined by an [OpenAPI spec](https://docs.column.com/openapi.yaml) (also available as [JSON](https://docs.column.com/openapi.json)). Use it to generate type-safe client SDKs in any language, import it into tools like [Postman](https://www.postman.com) or [Insomnia](https://insomnia.rest) to explore endpoints, or mock the API locally for testing.
  ```
  Event 104:

  ```text
  npm error 404 Not Found - GET https://registry.npmjs.org/@columnhq%2fsdk - Not found
  ```

### Kimi K3
[View public run](https://agents.withgauge.com/p/runs/1cccd2e7-86bf-475f-b9e9-700208b52d1a) · [Read transcript](https://www.ax-check.com/column.com/sessions/kimi.json)
Final output states Column publishes no self-serve pricing and gives only a qualitative sandbox-free/production-contract-negotiated model with no dollar figure or explicit assumption set (plan, region, machine size) — it never actually 'states pricing,' just explains why it can't be stated precisely.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent never obtained a real Column API key. It searched docs and public endpoints for a way to self-serve credentials, then explicitly stated a sandbox key requires signing up at dashboard.column.com with email verification it could not complete autonomously. The only 'key' present in the sandbox was an unrelated internal gateway key (PI_GATEWAY_API_KEY), not a Column credential. No authenticated call to api.column.com ever succeeded; the script was written but never executed against the real API (it exits immediately when no key is set).
  Event 101:

  ```text
  Getting a sandbox key requires signing up at **dashboard.column.com**, which needs an email verification I can't complete autonomously — there's no key in this environment.
  ```
  Event 99:

  ```text
  Set COLUMN_API_KEY (sandbox keys start with `test_`).
  
  ```
  Event 101:

  ```text
  I can't run the example end-to-end.
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-serve path to a Column sandbox API key**: Product behavior/test-environment limitation, not agent error: Column requires signing up through a dashboard with email verification to obtain even a free sandbox key. The agent correctly identified this and stopped rather than fabricating a key or faking success. This prevented any live, authenticated verification of the example script.
  Event 101:

  ```text
  Getting a sandbox key requires signing up at **dashboard.column.com**, which needs an email verification I can't complete autonomously — there's no key in this environment.
  ```
- **Pricing page renders no content via plain HTTP fetch**: Test-environment/tooling limitation: column.com/pricing is a client-side JS app, so a raw curl fetch returned an essentially empty payload (50 bytes), forcing the agent to fall back on qualitative claims about pricing rather than citing published figures.
  Event 72:

  ```text
  50 /tmp/pricing.html
  ```

#### Suggested Changes
- **Publish a plain-text or server-rendered pricing summary**: The pricing page at column.com/pricing returned only 50 bytes to a standard HTTP client because content is injected via JavaScript. Add server-side rendered pricing content (or a simple docs page under docs.column.com) so pricing tiers are readable without executing JS, and verify by curling the page and confirming tier/price text appears in the raw HTML.
  Event 66:

  ```text
  200
  api.auth.check: 404
  
  ```
  Event 72:

  ```text
  50 /tmp/pricing.html
  ```
- **Publish an official SDK under a discoverable package name**: No PyPI or npm package under obvious names (column-python, column-sdk, column-node, @column/sdk, column-api) resolved to Column's product; the only 'column' PyPI package is an unrelated VMware ansible tool. If an official SDK exists, publish it under a clearly namespaced package (e.g. column-bank or @column-com/sdk) and link it from the getting-started guide so developers don't have to fall back to raw HTTPS calls.
  Event 25:

  ```text
  pypi column-python: 404
  pypi column-sdk: 404
  pypi column-api: 404
  npm column-node: 404
  npm @column/api: 404
  npm column-sdk: 404
  
  ```
  Event 30:

  ```text
  column 0.5.1
  A thin wrapper on top of ansible with a stable API.
  https://github.com/vmware/column
  ```

### Qwen 3.8 Max
[View public run](https://agents.withgauge.com/p/runs/76878a20-5de9-4dff-a8f6-5162730c2270) · [Read transcript](https://www.ax-check.com/column.com/sessions/qwen.json)
Final output states pricing is custom/volume-based via contact sales, names the sandbox-is-free assumption, and cites the evidence (column.com/pricing redirects, no product page lists per-transfer fees) rather than inventing a number.
#### End-to-end onboarding
- **Onboarding needs a login**: The agent researched Column's hosted API via public docs and wrote a working example script, but never obtained a real API key itself. It explicitly states a human must sign up at dashboard.column.com to get a key, and it only tested the script's error path (missing key, and a fake key returning a 401). No authenticated call against the live api.column.com ever succeeded.
  Event 78:

  ```text
  a real sandbox API key requires a human account signup (dashboard.column.com, tied to your identity/compliance). I can't create that myself, so I couldn't execute the full flow live.
  ```
  Event 72:

  ```text
  COLUMN_API_KEY is not set.
  Create a (free) sandbox account at https://dashboard.column.com, grab your test API key, then:
    export COLUMN_API_KEY=<key> && python3 column_example.py
  exit=1
  ```
  Event 72:

  ```text
  got expected error: Column API error 401: {'raw': ''}
  ```

#### Hallucinated URLs
None identified in this transcript.

#### Blockers
- **No self-service way to obtain a Column API key**: Column requires signing up on the hosted dashboard (dashboard.column.com) to get a sandbox API key. This is a normal product login/account-creation requirement, not a product defect, but it stopped the agent from running any authenticated call end-to-end within the session.
  Event 78:

  ```text
  a real sandbox API key requires a human account signup (dashboard.column.com, tied to your identity/compliance). I can't create that myself, so I couldn't execute the full flow live.
  ```
- **Pricing page redirects to homepage with no rate info**: column.com/pricing does not render pricing content; it immediately redirects to the marketing homepage, forcing the agent to infer that pricing is sales-negotiated rather than published. This is product content/navigation behavior, not agent error.
  Event 36:

  ```text
  200 50 https://column.com/pricing
  <meta http-equiv="refresh" content="0; URL='/'" />
  ```
- **Getting-started/quickstart doc paths return 404 directly**: Guessed or docs-linked paths like /quickstart and /getting-started 404'd even though the docs site itself was reachable; the correct path required discovering the actual guide slug (/guides/getting-started/). This slowed down but did not ultimately block the agent, which recovered by finding the right URL.
  Event 35:

  ```text
  404
  Getting Started Build a basic payment workflow consisting of a wire, a book transfer, and an ACH credit with Column's APIs.
  ```

#### Suggested Changes
- **Fix the column.com/pricing redirect**: column.com/pricing currently 200s but immediately meta-refreshes to the homepage with no pricing content, forcing prospective developers to hunt for cost info elsewhere. Point this URL at an actual pricing or contact-sales explanation page and confirm by curling column.com/pricing and checking the response body contains pricing-related text instead of a redirect to '/'.
  Event 36:

  ```text
  200 50 https://column.com/pricing
  <meta http-equiv="refresh" content="0; URL='/'" />
  ```
- **Add a redirect or link from /quickstart and /getting-started to the real guide**: docs.column.com/quickstart and docs.column.com/getting-started both 404 even though the getting-started guide exists at /guides/getting-started/. Add redirects from these commonly-guessed short paths to the canonical guide URL and verify with curl -I on both paths returning a 200 or 301 to the guide.
  Event 35:

  ```text
  404
  Getting Started Build a basic payment workflow consisting of a wire, a book transfer, and an ACH credit with Column's APIs.
  ```
  Event 30:

  ```text
  == https://docs.column.com/openapi.json
  200 1127971 application/json
  ```

### Task given to each agent
Help me build a simple example using Column. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.

No product credentials were supplied and no purchases were authorized.

## Score: B · 81/100 (provisional)
Grades come from completed site checks. Coding sessions and skipped checks do not affect the score.

### Clarity
- **Failed** — Homepage answers Markdown requests

  ```text
  Homepage returned text/html for a Markdown Accept header; no Markdown representation offered.
  ```

- **Pass** — llms.txt provides an actionable documentation index

  ```text
  llms.txt links developer documentation, llms-full.txt, and organized product/company sections.
  ```

- **Pass** — llms.txt provides navigation guidance

  ```text
  llms.txt groups links under Products, Company, Specialty Deposits, and Documentation headings.
  ```

- **Pass** — llms.txt mentions offered API, MCP, and skills

  ```text
  llms.txt points to the API reference and guides at docs.column.com; no MCP or skills offered.
  ```

- **Pass** — A compact guide representation exists

  ```text
  llms.txt is a compact Markdown guide linking docs, products, and company pages.
  ```

- **Pass** — A focused guide is directly retrievable

  ```text
  llms.txt and Getting Started guide are directly retrievable with concrete steps.
  ```

- **Pass** — Equivalent instructions fit a token budget

  ```text
  llms.txt is 765 tokens, well under the 8000-token budget.
  ```

- **Skipped** — Product-docs links survive format changes

  ```text
  Homepage Markdown unsupported, so link preservation across formats cannot be measured.
  ```

- **Pass** — The compact guide is independently actionable

  ```text
  Getting Started guide gives concrete steps: create entity, account, simulate wire, counterparty, ACH credit with curl commands.
  ```

- **Pass** — Install and next-step links resolve

  ```text
  Homepage Get started link and dashboard register both fetched successfully (200).
  ```


### Onboarding
- **Pass** — Docs lead to a relevant quickstart

  ```text
  Docs Getting Started guide walks through a concrete payment workflow with step-by-step curl examples.
  ```

- **Pass** — Installation commands are extractable

  ```text
  Getting Started provides extractable curl commands using basic auth with the API key.
  ```

- **Pass** — Code examples are available without interaction

  ```text
  Getting Started shows inline curl code examples for entity, account, wire, counterparty, ACH.
  ```

- **Pass** — Prerequisites and auth boundaries are explicit

  ```text
  Getting Started and Authentication pages explain sandbox vs live keys and basic auth usage.
  ```


### Pricing
- **Failed** — Agents identify pricing and its assumptions

  ```text
  3 of 3 sessions were judged on pricing; 1 fell short. DeepSeek V4.1 Flash: Final output states Column has no public pricing, describes usage-based monthly invoicing and per-transfer fees, cites the $15/wire figure as 'an example, not a rate card,' i.e. names its assumption basis (seq 152). Kimi K3: Final output states Column publishes no self-serve pricing and gives only a qualitative sandbox-free/production-contract-negotiated model with no dollar figure or explicit assumption set (plan, region, machine size) — it never actually 'states pricing,' just explains why it can't be stated precisely. Qwen 3.8 Max: Final output states pricing is custom/volume-based via contact sales, names the sandbox-is-free assumption, and cites the evidence (column.com/pricing redirects, no product page lists per-transfer fees) rather than inventing a number. This behavioural item does not affect the fast grade.
  ```

- **Skipped** — Pricing is readable without interaction

  ```text
  No pricing page was fetched; homepage shows only contact sales and signup, no prices.
  ```

- **Skipped** — Prices are stated, not gated

  ```text
  No pricing page was fetched; homepage shows only contact sales and signup, no prices.
  ```

- **Skipped** — Pricing units and limits are explicit

  ```text
  No pricing page was fetched; homepage shows only contact sales and signup, no prices.
  ```


### Activation
- **Pass** — An API reference or OpenAPI spec is reachable

  ```text
  OpenAPI spec served at docs.column.com/openapi.yaml and openapi.json; API reference at /api/.
  ```

- **Skipped** — An MCP server is documented and well-formed

  ```text
  No MCP server documentation found in fetched Column pages.
  ```

- **Skipped** — A CLI install path is documented

  ```text
  No CLI install path documented; only curl examples in getting-started guide.
  ```

- **Skipped** — SDK packages resolve on their registries

  ```text
  No SDK package registry lookup supplied for Column packages.
  ```

- **Skipped** — Agent skills are published

  ```text
  No agent skills published or referenced in fetched Column pages.
  ```



[Full report data](https://www.ax-check.com/column.com/report.json)
