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
- Go to Settings → Integrations in your DailyStandup workspace.
- Click Connect GitHub and authorise the app.
- Select the repositories you want to track.
- 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
| Tool | Description |
|---|---|
log_activity | Log a single activity event with source, type, and metadata. |
get_draft | Retrieve the current AI-generated standup draft. |
submit_standup | Submit the standup (draft or custom content). |
list_activity | List 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
- Go to Settings → Webhooks in your workspace.
- Add a webhook URL (must be HTTPS).
- Select which events to subscribe to.
- Copy the signing secret to verify payloads.
Events
| Event | Description |
|---|---|
standup.submitted | A team member submitted their standup. |
summary.generated | AI summary was generated for a team. |
draft.ready | AI draft is ready for a team member. |
blocker.detected | A 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}`)
);
}