WePeopleDocs
IntegrationsPricingDocsSign inGet started
Get started
Docs home

Getting Started

  • What is WePeople
  • First week checklist
  • Core concepts

Product

  • Monitoring
  • Reports
  • People & profiles
  • SPACE scoring
  • Organization settings
  • Statistics
  • Billing & retention
  • Privacy model

Integrations

  • Overview
  • Slack
  • GitHub
  • Jira
  • Trust model

Developers

  • Platform overview
  • Quick start
  • Ingest guide
  • Custom statistics
  • Hosted MCP
  • TypeScript SDK

API Reference

  • Overview
  • Auth & headers
  • GET ping
  • POST events
  • POST snapshots
  • Apps statistics
  • Error codes
  • OpenAPI & SDK

Browse docs

Developers

Hosted MCP

WePeople hosts a Model Context Protocol server at /api/mcp. Authenticated clients read the same monitoring surfaces your team sees — people, presence, scores, and daily rollups — without write access.

Overview

Endpoint: https://wepeople.app/api/mcp (Streamable HTTP). Create a token under Organization → Developer → MCP access, then point your MCP client at that URL with a Bearer header.

This is separate from the Ingest API: ingest uses wp_live_* keys to push events; MCP uses wp_mcp_* tokens to read panel data out.

Authentication

Tokens are opaque secrets shaped like wp_mcp_<43 url-safe chars>. The full plaintext is shown once at creation; the UI lists tokens by prefix only.

  • Any member with MONITORING READ can mint a token for their own membership.
  • ADMIN/OWNER can view and revoke anyone’s tokens in the org.
  • Revoked or expired tokens return 401 with invalid_key or key_expired.

Connect a client

Example Cursor MCP config — replace the bearer value with your generated token.

Cursor mcp.jsonjson
{
  "mcpServers": {
    "wepeople": {
      "url": "https://wepeople.app/api/mcp",
      "headers": {
        "Authorization": "Bearer wp_mcp_<your-token>"
      }
    }
  }
}

Tools

Read tools mirror the monitoring panel. Credential material is stripped from responses; identity fields (email, Slack/GitHub ids) are included so clients can reason about people.

get_org_context

MONITORING READ (teams if TEAMS READ)
Timezone, logged-totals policy, integration flags, teams, and statistic definitions/preferences. Teams array is empty without TEAMS READ.
InputTypeDescription
—noneNo input parameters

list_people

PEOPLE READ
Monitored workers: ids, names, email, Slack/GitHub identities, types, and team memberships.
InputTypeDescription
enabledOnlyboolean?When true (default), only enabled monitors.

get_monitoring_dashboard

MONITORING READ
Panel monitoring table payload for a date range (same shape as the WePeople monitoring UI).
InputTypeDescription
fromstringStart date YYYY-MM-DD (org timezone).
tostringEnd date YYYY-MM-DD (org timezone).
teamIdstring?Optional team filter id.
workersenum?Optional: human | agent | all.

get_person_detail

MONITORING READ
Per-person day summaries, range totals, and sanitized timeline for a monitored user.
InputTypeDescription
monitorIdstringMonitoredSlackUser id (from list_people).
fromstringStart date YYYY-MM-DD.
tostringEnd date YYYY-MM-DD.

get_presence

MONITORING READ
Current Slack presence and last-active timestamps for monitored users.
InputTypeDescription
monitorIdsstring[]MonitoredSlackUser ids (1–80).

get_scores

SCORES READ
SPACE WorkerScore rows (overall + dimensions) for a worker.
InputTypeDescription
workerIdstringWorker id from list_people.
periodenum?DAILY | WEEKLY | MONTHLY (default DAILY).
fromstring?Optional from dateKey.
tostring?Optional to dateKey.
limitinteger?1–365, optional row cap.

get_statistic_rollups

MONITORING READ
Daily StatisticDailyRollup aggregates for a date range.
InputTypeDescription
fromstringStart date YYYY-MM-DD.
tostringEnd date YYYY-MM-DD.
pillarstring?Comma-separated StatisticPillar values.
statisticIdstring?Comma-separated statistic ids.
workerIdstring?Optional worker filter.

Privileges

Tool access uses the same RBAC as the product UI. Defaults:

  • MONITORING / PEOPLE / SCORES / TEAMS READ — VIEWER and above.
  • If a token has a non-empty scopes list, each tool requires matching SCOPE:ACTION or SCOPE:*.
  • Organizations blocked for billing/compliance cannot use MCP until resolved.

Security

  • Auth context never retains the bcrypt hash after verification.
  • /api/mcp does not advertise open browser CORS — desktop MCP clients do not need it.
  • Treat wp_mcp_* tokens like passwords; rotate by revoking and creating a new one.

Rate limits

Sliding-window limits (in-memory per process): 30 req/s per token and 120 req/s per organization. Exceeded budgets return HTTP 429 with standard rate-limit headers.

Ingest vs MCP

Ingest keys use separate budgets (60 req/s per key, 600 req/s per org). See the Ingest guide.

On this page

  • Overview
  • Authentication
  • Connect a client
  • Tools
  • Privileges
  • Security
  • Rate limits
WePeople

Team insight, not surveillance. A lead's-eye view built on metadata from the tools your team already uses — never source code, never messages, never DMs.

Product

  • Monitoring & Reports
  • SPACE scoring
  • Pricing

Docs

  • Docs home
  • Getting started
  • Developer platform
  • API reference
  • MCP

Integrations

  • Browse integrations

Company

  • Support
  • Status

Legal

  • Brand
  • Privacy
  • Terms

© 2026 WePeople. Built with care.

Metadata only. No source code, no message bodies, no DMs — read the policy.