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

@useclawlink/cli

v0.5.1

Published

Connect Gmail, Slack, Notion, Salesforce, HubSpot, Google Workspace and 230 other apps to your AI agent — browser login, no API key to paste, no config to edit.

Readme

@useclawlink/cli

Connect Gmail, Slack, Notion, Salesforce, HubSpot, Google Workspace and 230 other apps to your AI agent through ClawLink. Browser login, no API key to paste, no config to edit, no Google Cloud project.

Quick start

npx -y @useclawlink/cli login          # sign in via browser — mints + stores a key
npx -y @useclawlink/cli connect gmail  # connect an app on the provider's own OAuth screen
npx -y @useclawlink/cli apps gmail     # search the 230 available apps

login opens a ClawLink page, you approve, and a credential is saved to ~/.clawlink/credentials.json. You never register an OAuth app, configure a consent screen, or download a credentials file; ClawLink's provider apps are already registered, and the grant shows up in the provider's own third-party access list where you can revoke it.

Set up your MCP client

npx -y @useclawlink/cli install claude-code

install writes the MCP config for the client you name, so the agent gets every connected app as tools:

| Client | What it does | |---|---| | claude-code | Runs claude mcp add for you (--project for project scope) | | cursor | Writes ~/.cursor/mcp.json (--project for ./.cursor/mcp.json) | | windsurf | Writes ~/.codeium/windsurf/mcp_config.json | | claude-desktop | Writes claude_desktop_config.json in the platform's config dir |

After login, no API key appears in any config file: the @useclawlink/mcp shim reads the stored credential itself. Any other stdio MCP client works with the generic JSON block install prints for unknown client names.

Commands

| Command | Description | |---|---| | clawlink login | Sign in via browser (mints + stores an API key) | | clawlink install <client> [--project] | Add ClawLink to an MCP client's config | | clawlink logout | Remove the local credential | | clawlink whoami | Show the signed-in ClawLink account | | clawlink apps [query] [--connected] [--page N] [--limit N] | List or search integrations. One page is not the whole catalog: the response carries total, and a query is the fast way to check whether an app is supported | | clawlink connect <app> | Connect an app (opens browser OAuth), e.g. gmail | | clawlink connections <app> | Show connection health. When the app is connected to more than one account, lists every connection with its id and label | | clawlink disconnect <app> [--connection <id>] [--confirm] | Remove a connection and revoke its stored credentials. Without --confirm it previews what would be deleted; with several connections, --connection picks one | | clawlink actions <app> [intent] | List actions for an app | | clawlink describe <app> <action> | Show an action's schema (flags writes that need --confirm) | | clawlink run <app> <action> --input '<json>' [--connection <id>] [--confirm] | Execute an action (--confirm/-y allows writes & deletes; --connection picks one of several connected accounts, omitted = the default) | | clawlink run clawlink report_issue --input '{"message":"..."}' | Report a suspected ClawLink bug to the team. Optional integration, action, executionId fields. Humans can email [email protected] |

JSON output is compact when stdout is piped or captured, and indented when you run the command in a terminal. Compact output is about 24% smaller, which matters when an agent reads it into its context. --compact and --pretty force either mode.

Confirming writes

Write, delete, and admin actions are gated server-side and refused unless you opt in — there's no interactive prompt on this surface. Pass --confirm (alias -y / --yes) so scripts and agents can proceed without dropping to raw curl:

clawlink run gmail send_email --input '{ ... }' --confirm

It's per-invocation by design: there is no persisted or environment default that auto-confirms every call, so an agent can only perform a write it explicitly asked for. Run clawlink describe <app> <action> first to see whether an action requires confirmation.

Multiple accounts for one app

You can connect the same app more than once (two Instagram accounts, two Slack workspaces). Each connection has an id; calls without --connection use whichever one is marked default.

clawlink connections instagram
#   2 instagram connections:
#     1201  @mybrandshop  [default]
#     1305  @my.personal
clawlink run instagram get_user_info --input '{"ig_user_id":"me"}' --connection 1305

Provider note for Instagram: always query with ig_user_id: "me" and pick the account with --connection. One account's token can never read the other account by numeric id — Instagram rejects that with a misleading "does not exist / missing permissions" error.

Environment

| Variable | Purpose | |---|---| | CLAWLINK_API_KEY | Use a key directly and skip login | | CLAWLINK_BASE_URL | Override the ClawLink host (default https://claw-link.dev) | | BROWSER | Command used to open URLs; set none to never open one (headless machines just print the URL) |

Links

  • Dashboard: https://claw-link.dev/dashboard?utm_source=npm&utm_medium=referral&utm_content=cli
  • Guide for any agent: https://claw-link.dev/learn/connect-apps-to-any-ai-agent
  • Docs: https://docs.claw-link.dev

MIT © ClawLink