Skip to main content

15-minute onboarding tracks

Ship something real in about fifteen minutes. Each track uses a marketplace pack, ends in a callable surface, and keeps OpenAPI / metrics / tracing available so you can see what ran.

Prereqs (all tracks): a free Air Pipe account. Managed cloud is enough; self-host is optional (Install).


Track A — MCP + Postgres

Goal: AI clients (Claude Desktop, Claude Code, Cursor, any MCP client) call your Postgres data as tools — with a real auth story.

Pack: MCP Postgres Starter
Install in app: app.airpipe.io/marketplace?pack=mcp-postgres-starter

Steps (~15 min)

  1. Create / open an org at app.airpipe.io and install the pack into an environment.
  2. Attach Postgres — managed DB or your own connection string in the pack globals / secrets.
  3. Seed — call the pack’s seed endpoint (see pack page) so demo tenants + tasks exist.
  4. Pick a tier
    • Solo: one shared token → tasks-solo.yml tools
    • Multi-tenant: per-user tokens with tenant_idtasks.yml + auth.yml (or OIDC via auth-oidc.yml)
  5. Point an MCP client at your Air Pipe MCP endpoint with the bearer token (pack README has the client snippet).
  6. Call a tool — e.g. list_tasks / create_task — and confirm rows in Postgres.

See it

  • MCP surface: MCP tools — same auth path as HTTP
  • Optional: enable docs: true for OpenAPI/Swagger (managed or self-hosted). Prometheus /metrics via expose_metrics: true is self-hosted only — not exposed in managed mode.

Next

  • Harden JWT / OIDC claims
  • Scope queries tighter per tenant
  • Add more interfaces as tools

Track B — REST API (CRUD)

Goal: Production-shaped CRUD over Postgres (users, posts, comments) you can curl immediately.

Pack: REST API Starter
Install in app: app.airpipe.io/marketplace?pack=rest-api-starter

Steps (~15 min)

  1. Install the pack into an environment.
  2. Connect Postgres and run seed so tables + sample data load.
  3. Hit list endpoints — e.g. GET /api/users, GET /api/posts (exact paths on the pack page).
  4. Create a resource with POST + JSON body; confirm with GET by id.
  5. Optional JWT — enable the pack’s auth.yml pattern when you want protected routes.
  6. Turn on docs — set docs: true and open the generated Swagger UI (/documentation self-hosted, or the managed docs route).

See it

Next


Track C — Webhook / Stripe

Goal: One endpoint that verifies Stripe signatures, stores events idempotently in Postgres, and notifies Slack.

Pack: Stripe Webhooks → DB → Slack
Install in app: app.airpipe.io/marketplace?pack=stripe-webhooks-db-slack

Steps (~15 min)

  1. Install the pack and attach Postgres (+ Slack webhook URL as a secret).
  2. Set the Stripe webhook signing secret from the Stripe Dashboard (or Stripe CLI).
  3. Expose the endpoint — managed public URL, or tunnel to self-host.
  4. Send a test event with Stripe CLI (stripe trigger payment_intent.succeeded) or Dashboard “Send test webhook”.
  5. Confirm — row in the events table + Slack message; replay the same event and confirm idempotency (no duplicate side effects).
  6. Inspect — logs/traces for the verify → store → notify action chain.

See it

  • Signature pattern explained on the pack page (HMAC over {timestamp}.{raw_body})
  • Durable state patterns if you extend with cursors/dedupe sets
  • Observability showcase for a metrics/tracing-heavy pack

Next

  • Map more Stripe event types to domain actions
  • Fan-out to email/SMS packs
  • Add access control on non-webhook admin routes

After any track

Want…Go here
Hand-written config fundamentalsStart Here tutorial
Feature depth (MCP, OpenAPI, metrics, state…)Features
Schema + field referenceConfiguration
More packsMarketplace browser
Self-host binary / containerInstall

Questions or a pack that should be a fourth track? Open an issue or PR on airpipe-docs.