Documentation

Company GOAT CLI

company-goat-pp-cli

Install

npx -y @mvanhorn/printing-press-library install company-goat

Installs the CLI binary and the agent skill for Claude Code, Codex, Cursor, Gemini CLI, Copilot, and more. Add --cli-only or --skill-only for one half. Requires Node.

Documentation

Multi-source startup research from the terminal — including the SEC Form D fundraising data hidden behind paid Crunchbase tiers.

company-goat-pp-cli fans out across seven free authoritative sources to research small and midsize startups in seconds.

The killer feature: SEC Form D, free

Most US startups raising priced equity rounds (Series Seed → Series C, Reg D 506(b)/506(c)) file Form D with the SEC within 15 days of first sale. The filing names the issuer, the offering amount, the exemption claimed, and the related persons (officers, directors, promoters). It's free, public, and structured as XML — but almost nobody outside securities lawyers and investment bankers knows it's queryable.

Crunchbase Pro charges $999/year for what's substantially a wrapper around this same source. This CLI extracts it directly from EDGAR and gives you the structured filing — including offering amount and related-person graph — in one command:

company-goat-pp-cli funding stripe --json
company-goat-pp-cli funding-trend stripe --since 2018      # cadence over years
company-goat-pp-cli funding --who 'Patrick Collison'        # serial-founder graph

After one snapshot, you know whether they raised (Form D), are shipping code (GitHub), are talked about (HN), and are a legitimate legal entity (Companies House + EDGAR issuer fields) — without eight browser tabs.

Coverage at a glance

SourceCoverageAuth
SEC EDGAR Form DUS private companies raising priced rounds (Reg D)Contact email recommended (fair-access)
GitHubAny public orgNone required; GITHUB_TOKEN raises 60/hr → 5000/hr
Hacker News (Algolia)Posts and comments since 2007None
Companies HouseUK Ltd / PLC entities onlyCOMPANIES_HOUSE_API_KEY required
Y Combinator directoryYC-backed companies onlyNone
Wikidata SPARQLNotable companies (sparse on early-stage)None
RDAP / DNSAny registered domainNone

Form D is US-only. Non-US companies (Monzo, Klarna, etc.) won't appear in funding — use legal --region uk for UK entities. Pre-priced-round US startups (typically pre-Series A SAFE / convertible note) also won't appear, since SAFEs aren't covered by Reg D. The CLI prints a coverage_note whenever this is the likely reason for an empty result.

When Form D is empty: broader EDGAR fallback

A company that raised only via SAFE or convertible notes, or that has been acquired, won't have Form D filings under its own name. But it may still appear extensively in EDGAR under other forms. Examples:

  • Acquired startup: appears in the parent's 10-K Item 21 / EX-21 subsidiary list (e.g. June Life Inc. shows up across Weber Inc.'s post-acquisition 10-K filings).
  • Venture-debt portfolio company: appears in venture-debt holders' 10-Q / 10-K filings (e.g. Venture Lending and Leasing VII / VIII portfolio reports).
  • Acquisition announcement: appears in the parent's 8-K with the deal disclosure.

When all stem variants come back empty on Form D, funding automatically falls back to a broader EDGAR full-text search and bins the hits by signal class (subsidiary, debt, acquisition, other). Form D stays the headline; the broader fallback is what lights up companies that the killer feature alone would miss.

company-goat-pp-cli funding --domain junelife.com --json
# Form D: 0 filings
# Subsidiary signal: Weber Inc. 10-K (2021-12-14, EX-21)
# Debt signal: Venture Lending and Leasing VII, Inc. 10-Q (2019-08-14)

Created by @tmchow (Trevin Chow).

Authentication

No API keys required for the killer feature. Optional GITHUB_TOKEN raises engineering-signal rate limits from 60/hr to 5000/hr (works with gh auth token). Optional COMPANIES_HOUSE_API_KEY enables UK legal entity lookup; without it, legal --region uk prints setup instructions and other commands work normally.

SEC EDGAR's fair-access policy requires a contact email in the User-Agent header. Set COMPANY_PP_CONTACT_EMAIL=you@example.com (or run company-goat-pp-cli config set sec.user_agent_email you@example.com) so EDGAR can reach you if your traffic looks abusive. Without it, requests still work but EDGAR may rate-limit you faster.

Quick Start

# The headline command — fan out across all 7 sources for a known domain.
company-goat-pp-cli snapshot --domain stripe.com

# The killer feature — pull SEC Form D filings (offering amount, date, exemption).
company-goat-pp-cli funding --domain stripe.com --json

# Engineering signal as JSON — feed to jq or pipe into another tool.
company-goat-pp-cli engineering --domain vercel.com --json

# Side-by-side comparison; great for due diligence.
company-goat-pp-cli compare ramp.com brex.com --json

# Cross-source consistency check — flags zombies and stale fundraising stories.
company-goat-pp-cli signal --domain ramp.com

Bare names (snapshot stripe) work too — when a name resolves to multiple plausible domains the CLI prints numbered candidates and exits with code 2; rerun with --pick N or pass --domain directly to skip resolution.

Unique Features

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

Multi-source orchestration

  • snapshot — Look up a company across SEC Form D, GitHub, Hacker News, Companies House, YC, Wikidata, and DNS in one command — rendered as a unified terminal summary in seconds.

    When you need to evaluate a startup quickly, this is the one command that tells you whether they raised, are shipping code, are talked about, and are legitimate — without 8 browser tabs.

    company-goat-pp-cli snapshot --domain stripe.com --json
    
  • signal — Surface suspicious cross-source patterns. Example: 'Form D says raised $5M in 2024 but GitHub org has 0 commits since 2022' or 'YC entry says Active but website domain expired'.

    When deciding whether to engage with a startup, this command flags zombie companies and stale fundraising stories without you having to open every tab.

    company-goat-pp-cli signal --domain acme-corp.com --json
    

Killer feature

  • funding — See structured SEC Form D filings for a US private company — offering amount, filing date, exemption claimed (Reg D 506(b) vs 506(c)), related entities, and state of incorporation.

    When an agent needs to verify a US startup's actual fundraising history, this is the single most reliable free signal. Avoid agents quoting Crunchbase Free's empty 'undisclosed' rows.

    company-goat-pp-cli funding --domain stripe.com --json
    
  • funding-trend — Time series of Form D filings for a company across years — shows fundraising cadence and gaps. Useful for spotting 'they haven't raised since 2022' silently.

    Use this when an agent needs to summarize a company's fundraising arc, not just the latest round.

    company-goat-pp-cli funding-trend --domain stripe.com --since 2018 --json
    
  • funding --who — Show every Form D filing that names a given person (officer, large holder). Reveals serial founders, repeat advisors, prolific investors.

    Use when an agent needs to map who's behind a constellation of startups, or verify a founder's actual filing history.

    company-goat-pp-cli funding --who 'Patrick Collison' --json
    

Local state that compounds

  • search — Search the YC directory by free text + --batch and --industry filters. Free-text matches against name, one-liner description, industry, and location.

    An agent tasked with 'find a YC fintech with "agent" in the description' has a one-shot query rather than scrolling the YC directory.

    company-goat-pp-cli search 'agent' --industry fintech
    
  • compare — Two snapshots aligned column-by-column for direct comparison. Free in this CLI; paid feature elsewhere.

    When evaluating two competing startups, this is the one-shot comparison that doesn't require flipping between tabs.

    company-goat-pp-cli compare stripe.com adyen.com --json
    

Usage

Run company-goat-pp-cli --help for the full command reference and flag list.

Commands

filings

SEC EDGAR Form D filings — the primary data source for US private fundraising disclosure

  • company-goat-pp-cli filings list - Fetch all SEC submissions for a given CIK (Central Index Key). Used as the seed call when resolving a company's filing history.

Output Formats

# Human-readable summary (default in terminal, JSON when piped)
company-goat-pp-cli snapshot --domain stripe.com

# JSON for scripting and agents
company-goat-pp-cli snapshot --domain stripe.com --json

# Keep only specific top-level fields
company-goat-pp-cli snapshot --domain stripe.com --json --select sources,domain

# Dry run — exit early with no remote calls
company-goat-pp-cli funding --domain stripe.com --dry-run

# Agent mode — JSON + compact + no prompts in one flag
company-goat-pp-cli funding --domain stripe.com --agent

Agent Usage

This CLI is designed for AI agent consumption:

  • Non-interactive - never prompts, every input is a flag
  • Pipeable - --json output to stdout, errors to stderr
  • Filterable - --select id,name returns only fields you need
  • Previewable - --dry-run shows the request without sending
  • Read-only by default - this CLI does not create, update, delete, publish, send, or mutate remote resources
  • Offline-friendly - sync/search commands can use the local SQLite store when available
  • Agent-safe by default - no colors or formatting unless --human-friendly is set

Exit codes: 0 success, 2 usage error, 3 not found, 5 API error, 7 rate limited, 10 config error.

Cookbook

# Pull SEC Form D filings for a US private company.
company-goat-pp-cli funding --domain stripe.com --json

# Time series of fundraising over years.
company-goat-pp-cli funding-trend --domain stripe.com --since 2018 --json

# Map a serial founder's filing trail across companies.
company-goat-pp-cli funding --who 'Patrick Collison' --json

# Engineering signal: GitHub org metrics + top repos.
company-goat-pp-cli engineering --domain vercel.com --json

# UK legal entity (requires COMPANIES_HOUSE_API_KEY).
company-goat-pp-cli legal --domain monzo.com --region uk --json

# US legal entity from SEC Form D issuer fields.
company-goat-pp-cli legal --domain stripe.com --region us --json

# Domain age + DNS + hosting hint via RDAP/WHOIS.
company-goat-pp-cli domain --domain anthropic.com --json

# YC directory entry.
company-goat-pp-cli yc --domain stripe.com --json

# Wikidata facts (founders, founded date, HQ).
company-goat-pp-cli wiki --domain stripe.com --json

# Hacker News mention timeline (year-month histogram).
company-goat-pp-cli mentions --domain stripe.com --json

# Show HN posts about a company, sorted by points.
company-goat-pp-cli launches --domain vercel.com --json

# Fan out across all 7 sources; partial-failure tolerant.
company-goat-pp-cli snapshot --domain ramp.com --json

# Side-by-side comparison.
company-goat-pp-cli compare ramp.com brex.com --json

# Cross-source signal check (zombie startups, stale fundraising).
company-goat-pp-cli signal --domain ramp.com --json

# Search the YC directory by industry tag.
company-goat-pp-cli search 'agent' --industry fintech --json

# Resolve a name to a canonical domain (or get disambiguation candidates).
company-goat-pp-cli resolve stripe --json

# Pipe Form D filings into jq for custom analysis.
company-goat-pp-cli funding --domain stripe.com --json | jq '.form_d_filings[] | {date: .filing_date, amount: .offering_amount}'

Health Check

company-goat-pp-cli doctor

Verifies configuration and connectivity to the upstream sources (SEC, GitHub, HN, RDAP, Wikidata, YC, Companies House if keyed).

Configuration

Config file: ~/.config/company-goat-pp-cli/config.toml

Environment variables (all optional):

VariableUsed byEffect
COMPANY_PP_CONTACT_EMAILfunding, funding-trend, snapshotSets the SEC EDGAR User-Agent contact email (fair-access policy). Recommended for any non-trivial use.
GITHUB_TOKENengineering, snapshotRaises GitHub rate limit from 60/hr to 5000/hr. gh auth token works.
COMPANIES_HOUSE_API_KEYlegal --region ukRequired for UK legal entity lookup. Free at developer.companieshouse.gov.uk.
COMPANY_FEEDBACK_ENDPOINT / COMPANY_FEEDBACK_AUTO_SENDfeedbackOpt-in upstream POST for collected feedback (off by default; entries stay local).

SEC EDGAR calls use conservative client-side pacing and adaptive retry behavior: the CLI honors Retry-After, backs off on 429/5xx responses, and lowers its per-process request rate after throttling.

Troubleshooting

Exit codes: 0 success, 2 ambiguous (rerun with --pick N or --domain), 3 not found, 4 no candidates resolved (pass --domain), 5 API error / no filings for resolved entity, 7 rate limited, 10 config error.

SymptomCauseFix
funding stripe returns "ambiguous" with candidates (exit 2)Resolver found multiple plausible domainsRerun with --pick N (1-indexed) or --domain stripe.com
funding says "no Form D filings found" + a coverage_noteForm D is US-only and Reg-D-priced-rounds-onlyExpected for non-US companies (Monzo, Klarna), pre-Series-A SAFE companies, or companies that just haven't filed yet
SEC EDGAR returns 403 or repeated 429sEDGAR fair-access policy requires a contact email, and may throttle IP/User-Agent burstsexport COMPANY_PP_CONTACT_EMAIL=you@example.com; retry after the printed cooldown if exit code is 7
GitHub commands say "rate limit exceeded"Unauthenticated GitHub allows 60 req/hrexport GITHUB_TOKEN=$(gh auth token) raises to 5000/hr
legal --region uk prints "requires COMPANIES_HOUSE_API_KEY"Companies House requires registrationRegister free at developer.companieshouse.gov.uk, then export COMPANIES_HOUSE_API_KEY=...
snapshot stripe returns "no candidates found" (exit 4)Name resolution couldn't find a matching domainPass --domain explicitly: snapshot --domain stripe.com
wiki returns sparse / empty dataWikidata is sparse on early-stage companiesExpected for non-notable startups; wikidata only covers the well-known

Sources & Inspiration

This CLI was built by studying these projects and resources:

Generated by CLI Printing Press

For agents: pass /documentation/company-goat/agents.md to install this CLI from a prompt.