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

@stillkinetic/api-only-sdk

v0.1.55

Published

Headless StillKinetic usage reporting for servers, APIs, CLI applications, and MCP agents.

Readme

@stillkinetic/api-only-sdk

Headless StillKinetic usage reporting for Node.js services, APIs, CLI applications, Cloudflare Workers, and MCP servers.

This package has no UI, DOM tracking, React dependency, or Stripe dependency. It reports explicit usage events to the StillKinetic management API.

Install

npm install @stillkinetic/api-only-sdk

Node.js 18 or newer supplies the required global fetch. Other runtimes can provide a compatible fetch through the constructor.

Usage

import { StillKineticApi } from '@stillkinetic/api-only-sdk';

const sk = new StillKineticApi({
  appId: 'app_123',
  apiKey: process.env.STILL_KINETIC_API_KEY!,
  apiBaseUrl: 'https://still-kinetic.example.com',
  endUserId: authenticatedUser.id,
  pageId: 'mcp:newsletter-agent',
});

await sk.init();

await sk.track({
  metric: 'search_count',
  value: 1,
});

You can override endUserId and pageId per event or submit up to 200 events at once:

await sk.trackBatch([
  { endUserId: 'john', pageId: 'agent:research', metric: 'search_count', value: 1 },
  { endUserId: 'mary', pageId: 'agent:research', metric: 'search_count', value: 1 },
]);

Payment prerequisite

The API-only SDK cannot collect card details or authorize payments. Before events for an end user can create charges, that same appId + endUserId must complete the one-time card-and-cap flow through one of these UI packages:

  • @stillkinetic/web-sdk
  • @stillkinetic/rn-sdk
  • @stillkinetic/desktop-sdk

After binding, the management backend looks up that user's Stripe customer, saved payment method, spending cap, and current period spend. If an event crosses a configured threshold and remains within the cap, the backend creates the off-session Stripe PaymentIntent.

If no card is bound, the backend records skipped_no_card. If the charge would exceed the cap, it records skipped_cap_reached.

Important response behavior

track() confirms that the management ingestion API accepted the event. Threshold processing is asynchronous, so the response does not confirm whether a Stripe charge succeeded, failed, or was skipped.

Use await sk.getAccessStatus('stay_duration') before allowing the next API operation. track() also returns access decisions when the backend detects that the end user must stop or increase their cap. Supply a fresh visitId for each logical visit when cumulative metrics should reset between visits.

Only the fixed metrics enabled for the app are accepted. The current management backend does not support arbitrary custom metric names.