npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

otter-axi

v1.1.0

Published

Find and pull Otter.ai meeting transcripts from the terminal with token-efficient output.

Readme

otter-axi

An agent-facing CLI (AXI tool) that wraps Otter.ai's hosted MCP server to find and pull meeting transcripts from any shell — headlessly, after a one-time browser login. Token-efficient TOON output, built for agents.

It does find-and-pull only; analysis is left to whatever consumes the output.

Why

Otter's hosted MCP connector re-prompts for auth and can't be scripted, and its Public REST API is gated to Enterprise workspaces. otter-axi turns the same sanctioned MCP server into a scriptable CLI: approve once in the browser, then search/fetch run non-interactively from any agent session or shell, with refresh handled silently.

Install & authenticate

npm install -g otter-axi       # install the CLI on your PATH
otter-axi auth login           # one-time browser approval
otter-axi doctor               # config → credentials → MCP reachable

Or run any command ad hoc without installing: npx -y otter-axi <command>.

Tokens are stored in ~/.config/otter-axi/config.json (mode 0600) and refreshed automatically; they are never printed. Read-only scopes: profile:read, conversations:read.

Usage

Find or browse meetings (returns metadata: title, date, duration, summary, action-item count, id). Empty query + a date range is browse mode:

otter-axi search "pricing discussion" --after 30d
otter-axi search --after 2026/05/01 --before 2026/05/07
otter-axi search --in-transcript "roadmap,milestones" --attended-by "Jane Doe" --mine

Flags: -q/--query, --after/--before (ISO or relative 7d/2w/3m/1y), --title-contains, --in-transcript, --attended-by, --channel, --folder, --mine, --limit, --full.

Pull a transcript by id (from search) or otter.ai/u/<id> URL:

otter-axi fetch <id>                 # metadata + preview
otter-axi fetch <id> --full          # verbatim transcript to stdout (for piping)
otter-axi fetch <id> --json-out      # parsed segments → auto-path in the OS temp dir
otter-axi fetch <id> --json-out=t.json  # …or an explicit path
otter-axi fetch <id> --csv-out          # CSV (--tsv-out / --text-out likewise)

The segment formats (--json-out/--csv-out/--tsv-out) parse the [H:MM:SS] Speaker N: … transcript into {start, speaker, text} rows — otter-axi owns one tested, lossless parser so agents don't re-derive it. Per the AXI side-channel-file convention, the path is optional (bare → <os-tmpdir>/otter-axi/<ts>-<id>.<ext> — transient scratch the OS cleans up), and writing a file is additive: stdout keeps the preview and adds wrote:/columns: and a jq hint.

Commands

| Command | Purpose | |---|---| | otter-axi | Content-first home / session status | | auth login [--no-wait\|--wait] | One-time OAuth; --no-wait/--wait for agent relay | | auth status [--offline] | Show the connected account | | auth logout | Revoke + clear stored tokens | | search [query…] [flags] | Find/browse meetings (metadata only) | | fetch <id\|url> [--full\|--text-out\|--json-out\|--csv-out\|--tsv-out] | Pull a transcript (verbatim or parsed segments) | | doctor | Tiered connectivity diagnostics | | setup hooks | Install the SessionStart hook (Claude Code / Codex / OpenCode) |

Development

Built on axi-sdk-js + @toon-format/toon + @modelcontextprotocol/sdk, TypeScript/ESM, bun for dev, tsc→node to ship.

bun install
bun run dev <command>   # run from source
bun run test            # vitest
bun run build           # tsc → dist/

Spec-driven: specs/ is the source of truth, plans/ tracks the work that built it. See specs/README.md.

License

MIT