Pulse

السجل الرسمي أدوات المطورين

Ask about revenue, MRR, ad spend, LTV and CAC; install the Pulse SDK. Read-only.

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

Remote (streamable-http)
Claude Code
claude mcp add --transport http pulse 'https://mcp.pulse.pulsecircle.studio/mcp' --header 'Authorization: <Bearer <your Pulse API key> — from Settings in the Pulse web app. Clients that speak OAuth 2.1 can omit this and authorize instead.>'
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "pulse": {
            "type": "http",
            "url": "https://mcp.pulse.pulsecircle.studio/mcp",
            "headers": {
                "Authorization": "<Bearer <your Pulse API key> — from Settings in the Pulse web app. Clients that speak OAuth 2.1 can omit this and authorize instead.>"
            }
        }
    }
}
NPM package @pulse-circle/mcp
Claude Code
claude mcp add pulse -- npx -y @pulse-circle/mcp@0.1.2
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "pulse": {
            "command": "npx",
            "args": [
                "-y",
                "@pulse-circle/mcp@0.1.2"
            ]
        }
    }
}

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. Pulse SDK
  2. For AI agents
  3. Packages
  4. Quickstart (web)
  5. The API, everywhere
  6. The reliability contract
  7. Development
  8. Releasing
  9. License

Pulse SDK

Open-source analytics SDKs for web, React Native, iOS, and Android. Add analytics to your app with a reliable, offline-first event queue and clean identity — and nothing else.

  • Tiny. The web SDK is ≤ 10 KB gzipped with zero dependencies.
  • Reliable. A persistent, ordered queue survives offline periods and process death. Delivery is idempotent: retries never duplicate events.
  • Honest about privacy. No auto-capture, no fingerprinting, no IDFA/GAID, no ad SDKs. The SDK sends only the events you send it.
  • One protocol, four platforms. Every SDK implements the same wire protocol and passes the same conformance fixtures in CI. The Pulse ingestion server replays those same fixtures — the contract is verified from both ends.

This repository holds the TypeScript packages. The Swift and Kotlin SDKs live in pulse-sdk-native.

For AI agents

Install: npm i @pulse-circle/web, then Pulse.init('pk_...') and Pulse.track('event', {...}). The package is self-contained (zero deps, default endpoint baked in) and ships llms.txt inside it. Installing needs only npm; event delivery happens in the end-user's browser at runtime.

Packages

PackageWhat it's forInstall
@pulse-circle/webBrowser / any web appnpm i @pulse-circle/web
@pulse-circle/react-nativeReact Native & Exponpm i @pulse-circle/react-native
@pulse-circle/corePlatform-agnostic engine (used by the above)npm i @pulse-circle/core
@pulse-circle/mcpLocal (stdio) MCP server — offline setup/connect guides for AI agentsclaude mcp add pulse -- npx -y @pulse-circle/mcp

Quickstart (web)

npm install @pulse-circle/web
import { Pulse } from '@pulse-circle/web';

Pulse.init('pk_your_api_key');

// Track product events — the SDK batches, persists, and retries for you.
Pulse.track('subscription_started', { plan: 'pro' });

// Tie events to a user after login.
Pulse.identify('user_42');

// On logout, start a fresh anonymous identity.
Pulse.reset();

That's the whole API. See each package's README for the platform-specific install (script tag, Expo, etc.) and the full reference.

The API, everywhere

The five methods are identical across all four platforms, in each language's idiomatic syntax:

init(apiKey, options?)      // configure once
track(event, properties?)   // queue an event
identify(userId)            // associate the current identity with a user id
reset()                     // logout: new anonymous identity
flush()                     // force-send the queue (tests, critical moments)

There are deliberately no screen/page auto-tracking and no revenue methods: revenue comes from server-side connectors, so there is exactly one source of truth per number.

The reliability contract

  • Every event gets an idempotency_key and a timestamp at the moment you call track — never at send time. Retries resend both byte-identical, and the server's primary key includes both, so a flaky network can never create a duplicate.
  • The queue is persistent (localStorage on web, files on mobile) and ordered. It survives reloads, crashes, and offline periods up to a per-platform cap, then evicts oldest-first with a debug warning rather than growing without bound.
  • Retries use exponential backoff with jitter. A batch the server keeps rejecting (a "poison" batch) is moved aside after 10 attempts so it can never block everything behind it.

The normative details are in protocol/PROTOCOL.md.

Development

npm install
npm test          # conformance fixtures + unit tests (vitest)
npm run lint
npm run typecheck
npm run build     # tsup builds for every package
npm run size -w @pulse-circle/web   # enforce the 10 KB budget
Conformance fixtures

protocol/fixtures is the source of truth for cross-platform behaviour. Each JSON file is a scenario ("these API calls produce these HTTP requests"); every SDK runs them through a shared fixture runner, and the server replays them against real ingestion. Change behaviour by changing a fixture, and every platform's CI tells you who's out of contract.

Releasing

Versions are independent per package. Bump the version in the package's package.json, then push a tag:

core-v0.1.0 | web-v0.1.0 | react-native-v0.1.0

The publish workflow verifies the tag matches package.json, runs the full test + build + size gate, and publishes to npm with provenance.

License

MIT © Pulse Circle Studio

الأسئلة الشائعة

ما هو Pulse؟

Ask about revenue, MRR, ad spend, LTV and CAC; install the Pulse SDK. Read-only.

كيف أثبّت Pulse؟

يعمل كخادم بعيد. في Claude Code: claude mcp add --transport http pulse 'https://mcp.pulse.pulsecircle.studio/mcp' --header 'Authorization: <Bearer <your Pulse API key> — from Settings in the Pulse web app. Clients that speak OAuth 2.1 can omit this and authorize instead.>'. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج Pulse إلى مفتاح API؟

نعم. يتطلب Authorization، وتضبطها في إعداداته.

هل Pulse مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون Pulse؟

ينشره Pulse-Circle-Studio. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.