API & CLI

The public REST API and the @feeny/cli — built for humans and agents.

Overview

Feeny has a public read API and a command-line client, both built for humans and AI agents. If you'd rather pull data from your terminal, a script, or an agent than click through the site, this is for you.

Everything here is a public read surface today — news and products. More endpoints (jobs, companies, and authenticated actions) are on the roadmap.

The feeny CLI

The fastest way to get Feeny data outside the app is the CLI, published on npm as @feeny/cli. No install required — run it with npx.

Search the news:

npx @feeny/cli news list "ai" --limit 5

Browse product launches by category:

npx @feeny/cli products list --category artificial-intelligence

Built for agents too

Every command supports --json for clean, parseable output on stdout (all logs and errors go to stderr, so a piped --json stream is always safe to parse):

npx @feeny/cli products list --category artificial-intelligence --json
npx @feeny/cli news list "ai" --limit 10 --json

Exit codes are meaningful: 0 success · 1 error · 2 usage · 4 rate-limited (honors Retry-After) · 5 auth. Point it at a different environment with --base-url or the FEENY_BASE_URL environment variable.

The REST API

The CLI is a thin client over the public REST API at /api/v1/*. You can call it directly:

curl "https://feeny.ai/api/v1/news?q=ai&limit=5"

The API is unauthenticated for public reads today and rate-limited per client IP. It's designed to be generous for real integrators and stingy toward scripted abuse.

What's available now

  • News — trending articles across the tech and startup world.
  • Products — curated product launches, filterable by category.

What's coming

  • Jobs & companies — job search surfaces, exposed through new /api/v1 routes.
  • Authenticated commands — bookmarks, tools & profile actions, via API keys & bearer tokens.
  • Feeny over SMS and inside Claude / Codex — the same data, delivered wherever you work.

If you're building on the API and want something that isn't here yet, that feedback is genuinely useful — it helps decide what ships next.

For AI agents: llms.txt

If you're pointing an agent at Feeny, start with /llms.txt — our machine-readable map of the site, following the llms.txt standard. It explains what's worth fetching and how we're structured: where company profiles live, which pages are citable, how to query the API, and a featured list of fully-researched company profiles.

curl https://feeny.ai/llms.txt

Company profiles also embed schema.org JSON-LD (Organization + JobPosting), so an agent can extract structured facts without parsing prose.

Use Feeny as a skill

Below is a drop-in skill file that teaches an agent (Claude Code, or anything that reads markdown instructions) how to query Feeny. Copy it to .claude/skills/feeny/SKILL.md in your project — or paste it anywhere your agent reads instructions from.

---
name: feeny
description: Query Feeny (feeny.ai) for tech/startup news, product launches, and VC funds — via the @feeny/cli or its public REST API. Use when the user asks about startup news, trending products, or venture funds.
---

# Feeny

Feeny is a curated directory of tech & AI companies, their open jobs, plus startup news, product launches, and VC funds. This skill covers the PUBLIC READ surface — no auth, no API key, no install.

## Orientation

Fetch `https://feeny.ai/llms.txt` first for a map of the site (what's citable, how it's structured, featured company profiles).

## The CLI (preferred)

Run via `npx` — nothing to install. ALWAYS pass `--json` for parseable output.

    npx @feeny/cli news list "ai" --limit 5 --json
    npx @feeny/cli news get <id> --json
    npx @feeny/cli products list --category artificial-intelligence --json
    npx @feeny/cli products get <id> --json
    npx @feeny/cli funds list --json
    npx @feeny/cli funds get sequoia-capital --json

Flags: `--json` (machine output) · `--limit` / `-n` (1–50, default 20) · `--base-url` (or `FEENY_BASE_URL`) to target another environment.

**Agent contract:** with `--json`, clean JSON goes to **stdout** and every log or error goes to **stderr** — a piped `--json` stdout is always safe to parse.

**Exit codes:** `0` ok · `1` error · `2` usage · `4` rate-limited (honor the `Retry-After` header) · `5` auth.

## The REST API

The CLI is a thin client over `https://feeny.ai/api/v1`. Call it directly if you can't shell out. Unauthenticated; rate-limited per IP.

    curl "https://feeny.ai/api/v1/news?q=ai&limit=5"
    curl "https://feeny.ai/api/v1/news/{id}"
    curl "https://feeny.ai/api/v1/products?category=artificial-intelligence"
    curl "https://feeny.ai/api/v1/products/{id}"
    curl "https://feeny.ai/api/v1/funds"
    curl "https://feeny.ai/api/v1/funds/{slug}"

Responses are JSON with the collection under a named key plus a total, e.g. `/news` returns `{ "articles": [...], "total": 123 }`.

## Company profiles

Deep, editorially-researched profiles live at `https://feeny.ai/companies/<slug>` (open roles at `/companies/<slug>/jobs`). These are the pages to cite for "what is <company>" or "is <company> hiring". They embed schema.org JSON-LD (Organization + JobPosting) for precise extraction. Not every company has a profile — less-covered ones appear in job search only.

## Rules

- Prefer the CLI with `--json`; fall back to `curl` on the REST API.
- On exit code `4` (or HTTP 429), back off and honor `Retry-After` — don't retry in a tight loop.
- Jobs/companies have no `/api/v1` routes yet, and there are no authenticated commands — don't invent endpoints. Cite the company profile pages instead.

Jobs, companies, and authenticated actions aren't in the API yet — the skill deliberately says so, to stop an agent inventing endpoints that don't exist.

Have feedback on the docs? Ask Feeny.