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

ottoport

v1.9.0

Published

Claude Code plugin, CLI and MCP server for OttoPort — one OpenAI-compatible API for every LLM, image, video, and speech model.

Readme

OttoPort

One API for every model. This package is three things over the same gateway: a CLI, an MCP server, and a Claude Code plugin — chat, image, video, speech, and music, on one key and one prepaid balance.

Get a key at https://ottoport.ai/api-keys (they look like op-…), then pick whichever surface fits.

CLI

npm install -g ottoport     # or run any command below through `npx ottoport …`
export OTTOPORT_API_KEY=op-...
ottoport models [--modality chat|image|video|tts|music] [--json]

ottoport chat  "<prompt>" [--model claude-sonnet-5] [--system "..."] [--no-stream]
                          [--temperature 0.7] [--max-tokens 512]
ottoport image "<prompt>" [--model gpt-image-2] [--size 1024x1024 | --resolution 2k]
                          [--quality high] [--aspect-ratio 16:9] [--n 1] [--seed 7]
                          [--image <url>] [--ref <url>[,<url>…]] [--out file.png]
ottoport image --model qwen-image-layered --image <url> [--layers 4]
ottoport video "<prompt>" [--model kling-3.0] [--duration 5] [--resolution 1080p]
                          [--aspect-ratio 16:9] [--image <url>] [--last-frame <url>]
                          [--ref <url>[,<url>…]] [--out clip.mp4]
                          [--webhook-url https://…] [--no-wait]
ottoport webhook status|retry <job-id>   # delivery attempts / redeliver now
ottoport speech "<text>"  [--model gpt-4o-mini-tts] [--voice alloy] [--out speech.mp3]
ottoport music "<prompt>" [--model suno-v5] [--duration 15] [--out song.mp3]

ottoport install <host>   # wire the MCP server into an agent
ottoport mcp              # run the MCP server on stdio

Chat streams by default. Image, video and audio commands print the result URL; --out downloads it. --url and --key override the environment for a single call.

Every command is a thin client over the public REST API, so anything the CLI does is available to your own code — the gateway is OpenAI-compatible, and any OpenAI SDK works by pointing baseURL at https://ottoport.ai/api/v1.

Claude Code plugin

Brings the MCP server, the ottoport skill, and six slash commands in one install:

/plugin marketplace add https://ottoport.ai/plugin/marketplace.json
/plugin install ottoport@ottoport

| Command | What it does | | --- | --- | | /ottoport:models | The catalog with live pricing, filterable by modality. | | /ottoport:chat | Send a prompt to any chat model (GPT, Claude, Gemini, Kimi, GLM …). | | /ottoport:image | Generate or edit an image. | | /ottoport:video | Submit a video job and wait for the URL. | | /ottoport:speech | Read text aloud, or generate music. | | /ottoport:setup | Diagnose key / gateway / MCP wiring. |

Other agents

Claude Code is the only host with a plugin format. Everywhere else, one command registers the MCP server by writing that agent's own config:

npx ottoport install codex     # or hermes, cursor, windsurf, claude-desktop, claude

Codex also gets the OttoPort skill copied into ~/.codex/skills/. Your key is forwarded from the environment rather than written into any config file.

MCP tools

ottoport_list_models, ottoport_chat, ottoport_generate_image, ottoport_generate_video, ottoport_video_webhook, ottoport_generate_speech, ottoport_generate_music. The server speaks stdio JSON-RPC and is launched by the host as a subprocess, so it needs Node 20+ on the PATH of whatever starts that host.

Modes and resolution

Video takes four modes — text-to-video, image-to-video (image_url), first-and-last-frame (image_url + last_frame_url), and reference-to-video (reference_image_urls). Images take one reference (image_url) or several (reference_image_urls). Both take a resolution: 480p…4k for video, 1k/2k/4k for images, and a tier above a model's base rate costs more.

The GPT Image family reads a quality on top of that — low, medium (the default every catalog rate is measured at), high, and on gpt-image-2.5 and gpt-image-2.5-flare also xhigh and max. It is how much compute the model spends, and the ladder is steep: max bills sixteen times medium.

Two image models take a picture apart instead: qwen-image-layered and seedream-5.0-layers split image_url into RGBA layers and return one URL per layer, bottom first (the prompt is an optional caption; num_layers, 2–10, is honoured by Qwen only). Each layer returned bills separately.

Which modes and tiers a model accepts differs per model, so ottoport_list_models — and ottoport models in the CLI — prints each one's menu beside its price. For one model in full, including every parameter it reads, pass model to that tool or run ottoport models <model-id>. Asking for something a model does not offer is refused with its actual list, before a generation is spent.

Webhooks

Pass webhook_url (MCP) or --webhook-url (CLI) with a video to have OttoPort POST the finished job to that HTTPS endpoint as video.completed or video.failed. Deliveries are signed: x-ottoport-signature: t=<unix>,v1=<hex HMAC-SHA256(secret, "<t>.<raw body>")>. Failed deliveries are retried after 1, 5, 30 and 120 minutes, 5 attempts in all (redirects are not followed); ottoport webhook retry <job-id> or ottoport_video_webhook sends one again at any time. Verification examples are at https://ottoport.ai/docs#webhooks.

Configuration

  • OTTOPORT_API_KEY — your op-… key. Export it from your shell profile: the MCP server reads the environment its host was launched in, so a key exported inside a running session arrives too late.
  • The CLI always targets https://ottoport.ai. Use the explicit --url flag only for local development or a self-hosted gateway.
  • OTTOPORT_BASE_URL configures the MCP server only; it does not silently redirect CLI traffic.
  • OTTOPORT_WEBHOOK_SECRET — the secret video webhooks are signed with, used when a webhook URL is given without an explicit secret. Keep it in the environment rather than on the command line.

Notes

  • Image, video, and audio calls return URLs, and provider URLs expire. Download anything worth keeping.
  • Video generation takes a minute or more and the call blocks until the job is terminal, unless a webhook is given or --no-wait is passed. A retry is a second billable generation, not a resumption.
  • resolution and quality are price multipliers, not formatting hints. Leave them unset to bill at the model's base tier.
  • Requests are billed against the prepaid balance on your OttoPort account.

Docs: https://ottoport.ai/docs · Support: [email protected]

MIT © LITBOX LLC