Beta

Developer Docs

Integrate your tools with DailyStandup using MCP, REST API, or webhooks.

Quick Start

Choose your tool and follow the steps to start sending activity events to DailyStandup.

GitHub Integration

  1. Go to Settings → Integrations in your DailyStandup workspace.
  2. Click Connect GitHub and authorise the app.
  3. Select the repositories you want to track.
  4. Activity events (commits, PRs, reviews) will start flowing automatically.
# Events tracked automatically:
- push (commits)
- pull_request (opened, merged, closed)
- pull_request_review (approved, changes_requested)
- issues (opened, closed)

MCP Reference

The Model Context Protocol (MCP) lets you stream activity events in real time from any compatible tool.

Connection

Connect to the DailyStandup MCP server using your workspace API key.

{
  "mcpServers": {
    "dailystandup": {
      "url": "https://mcp.dailystandup.io/sse",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Available Tools

ToolDescription
log_activityLog a single activity event with source, type, and metadata.
get_draftRetrieve the current AI-generated standup draft.
submit_standupSubmit the standup (draft or custom content).
list_activityList recent activity events with optional filters.

Example: Log Activity

// Using the MCP tool
{
  "tool": "log_activity",
  "arguments": {
    "source": "github",
    "event_type": "pr_merged",
    "title": "Fix token refresh flow",
    "url": "https://github.com/org/repo/pull/247",
    "metadata": {
      "repo": "org/repo",
      "pr_number": 247
    }
  }
}

REST API Reference

All API endpoints use the base URL https://api.dailystandup.io/v1. Authenticate with a Bearer token in the Authorization header.

POST /activity

Log an activity event.

POST /v1/activity
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "source": "github",        // github | linear | slack | jira | figma | custom
  "event_type": "pr_merged", // source-specific event type
  "title": "Fix token refresh flow",
  "url": "https://github.com/org/repo/pull/247",  // optional
  "metadata": {}             // optional, source-specific data
}

// Response: 201 Created
{
  "id": "act_abc123",
  "created_at": "2026-03-11T09:15:00Z"
}

GET /activity

List recent activity events.

GET /v1/activity?source=github&limit=20&since=2026-03-10T00:00:00Z
Authorization: Bearer YOUR_API_KEY

// Response: 200 OK
{
  "data": [
    {
      "id": "act_abc123",
      "source": "github",
      "event_type": "pr_merged",
      "title": "Fix token refresh flow",
      "url": "https://github.com/org/repo/pull/247",
      "created_at": "2026-03-11T09:15:00Z"
    }
  ],
  "has_more": false
}

GET /draft

Get the current AI-generated standup draft for the authenticated user.

GET /v1/draft
Authorization: Bearer YOUR_API_KEY

// Response: 200 OK
{
  "yesterday": "Shipped auth token refresh (PR #247). Pushed webhook retry — 3 commits.",
  "today": "Continue webhook retry, address review on ENG-142.",
  "blockers": null,
  "sources_used": 4,
  "generated_at": "2026-03-11T08:00:00Z"
}

POST /standup

Submit a standup (from draft or custom content).

POST /v1/standup
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

{
  "yesterday": "Shipped auth token refresh.",
  "today": "Continue webhook retry.",
  "blockers": null,
  "mood": "green",       // green | blue | amber | red
  "from_draft": true     // optional, marks as AI-assisted
}

// Response: 201 Created
{
  "id": "chk_xyz789",
  "created_at": "2026-03-11T09:30:00Z"
}

Webhooks

Get notified when things happen in your DailyStandup workspace.

Setup

  1. Go to Settings → Webhooks in your workspace.
  2. Add a webhook URL (must be HTTPS).
  3. Select which events to subscribe to.
  4. Copy the signing secret to verify payloads.

Events

EventDescription
standup.submittedA team member submitted their standup.
summary.generatedAI summary was generated for a team.
draft.readyAI draft is ready for a team member.
blocker.detectedA blocker was detected in a standup.

Payload Format

POST https://your-server.com/webhooks/dailystandup
Content-Type: application/json
X-DailyStandup-Signature: sha256=...

{
  "event": "standup.submitted",
  "timestamp": "2026-03-11T09:30:00Z",
  "data": {
    "user_id": "usr_abc123",
    "user_name": "Sarah Chen",
    "team_id": "team_xyz",
    "checkin_id": "chk_xyz789",
    "from_draft": true
  }
}

Verifying Signatures

import crypto from "crypto";

function verifyWebhook(payload: string, signature: string, secret: string) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(payload)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(`sha256=${expected}`)
  );
}