keypup-engineering-analytics — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited keypup-engineering-analytics (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Ask your Keypup engineering data in plain language to track delivery, quality and team workload.
The Keypup MCP (Model Context Protocol) server plugs your Keypup engineering analytics directly into any MCP-compatible AI assistant — Claude, Cursor, Kiro, ChatGPT Desktop, Gemini CLI, VS Code, and others.
Once connected, you ask questions about your engineering activity in plain language and the AI builds and runs the underlying reporting queries for you. No query language to learn, no code to write.
Unlike the GraphQL API, which is designed for developers writing application code, the MCP server is designed to be driven conversationally by an AI on your behalf.
Beta: The Keypup MCP server is currently in beta. The exposed capabilities are continuously expanded during this phase. Feedback and use cases are welcome via the in-app chat.
The server exposes a focused set of read-only tools that let an AI explore and query your Keypup data:
The AI orchestrates these tools automatically. A typical flow:
You only ask the question.
| Tool | Description |
|---|---|
list_companies | List the companies (teams) the authenticated user belongs to. Returns each company's id, name, created_at and updated_at. The id is required by most other tools. |
list_datasets | List the datasets (facts) available for querying, each with its id, label and description. |
list_dataset_fields | List the fields available on a given dataset for a company. Supports filtering by source (NATIVE/CUSTOM) and a regex pattern matched against the field id, plus pagination. |
list_formula_operators | List the operators and functions usable in custom formulas. Supports filtering by scope (DIMENSION/METRIC) and a regex pattern, plus pagination. Set verbose: true for full per-operator documentation. |
query_dataset | Run an aggregated report against a dataset. Metrics, dimensions and filters are expressed as text-based formulas, with optional sorting, limit and offset. |
generate_dataset_query | Turn a natural-language prompt into a structured query compatible with query_dataset. |
The reporting engine runs over the following datasets (facts):
Delivery & throughput
Cycle time & performance
Quality & process
Workload & collaboration
Open-ended exploration
You can refine iteratively: "now break that down by repository", "restrict it to the backend team", and so on.
https://hq.keypup.io/mcpThe server uses the streamable HTTP transport and supports two authentication methods:
authorize access through your browser. No token to copy or store.
Authorization header. Usethis when your client does not support OAuth dynamic client registration.
If your client supports OAuth 2.1 with dynamic client registration (e.g. via a Client ID Metadata Document), point it at the endpoint with no credentials:
{
"mcpServers": {
"keypup": {
"type": "http",
"url": "https://hq.keypup.io/mcp"
}
}
}On first connection the client opens a browser window to sign in to Keypup and authorize access. There is no token to generate, copy, or rotate — this is the configuration shipped in this repo's .mcp.json.
If your client does not open an authorization prompt (or fails to register), it likely does not support dynamic client registration yet. Use the API token method below instead.
For clients without OAuth dynamic client registration support, add a keypup server entry pointing at the endpoint, with your API token in the Authorization header:
{
"mcpServers": {
"keypup": {
"url": "https://hq.keypup.io/mcp",
"headers": {
"Authorization": "Bearer my_keypup_api_token"
}
}
}
}Notes:
my_keypup_api_token with the token you generate (see below). Keep the Bearer prefix.keypup) is arbitrary — name it however you like.Once saved, restart or reconnect the MCP server in your client. The Keypup tools should appear in the client's tool list, and you can start asking questions.
Only needed for Option 2 (API token). If you authenticate via OAuth, skip this section.
The MCP server authenticates with the same API tokens used by the GraphQL API.
viz:reports:read) — required to explore datasets/fields and run reporting queries.hq:companies:read) — required to list the companies you belong to and resolve the company ID used in queries.Following the principle of least privilege, grant only the scopes you need. The two scopes above are enough to use the full analytics capabilities of the MCP server.
The token grants the same level of data access you already have in the Keypup user interface — queries are automatically scoped to the companies you are a member of.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.