Skip to main content

Overview

Integrations connect Radarboard to external services (GitHub, Stripe, Sentry, etc.). Each integration lives in its own package under integrations/ and provides:
  • Credential configuration — how users authenticate with the service
  • Data sources — API endpoints that widgets can consume
  • MCP tools (optional) — actions the AI assistant can perform
  • Webhook handler (optional) — inbound event processing

Prerequisites

  • Radarboard dev environment set up (Setup Guide)
  • Familiarity with TypeScript and REST APIs

Step 1: Scaffold

This creates integrations/my-service/ with all boilerplate, registers it in radarboard.config.ts, and runs pnpm install.

Step 2: Define Credentials

Edit src/index.ts to configure how users authenticate:
For OAuth integrations, set type: "oauth" and add an oauth block:

Step 3: Build the API Client

Edit src/api/client.ts to wrap the external API:
Tips:
  • Keep the client stateless — receive credentials as arguments, don’t store them
  • Throw errors with descriptive messages so they surface in the UI
  • Define response types in src/types.ts

Step 4: Wire Up Data Sources

Edit src/api/data-sources.ts. Each data source becomes an API route:
Key concepts:
  • params contains projectSlug, range, timeZone, forceRefresh
  • ctx.resolveCredential(key) returns the stored credential fields or null
  • cacheTtlSeconds controls how long responses are cached

Step 5: Test

Run the conformance tests (included automatically in the scaffold):
For unit testing your data source fetch functions, use the mock context:

Step 6: Fill in Metadata

Back in src/index.ts, complete the descriptor:

Capability Governance

capabilities is how an integration tells Radarboard which shared widget capability it can satisfy and through which action.
  • The action must match a real DataSourceDescriptor.action.
  • If the capability already has a canonical widget, update that widget’s provider list instead of creating a duplicate widget.
  • Shared capabilities currently include revenue, bookmarks, stars, domains, errors, uptime, app-reviews, downloads, sponsorship, shipping, analytics, and seo.
This contract powers capability-aware recommendations, dependency audits, and canonical widget provider selection.

Optional: Add MCP Tools

Edit src/mcp/mcp-tools.ts to let the AI assistant interact with your service:

Optional: Add Webhooks

Create src/events/webhook.ts to handle inbound events:

Module Boundaries

Integrations can only import from:
  • @radarboard/integration-sdk
  • @radarboard/types
  • @radarboard/utils

Reference

  • Full type reference: @radarboard/integration-sdk/types
  • Capability-backed examples: integrations/revenuecat/, integrations/stripe/, integrations/sentry/, integrations/betterstack/
  • Real examples: integrations/github/, integrations/stripe/, integrations/vercel/
  • Extension rules: CONTRIBUTING-EXTENSIONS.md