Since.dev MCP
Grant, your COO, and his AI team: live answers, team status and decisions, plus World State.
Product · Documentation · MCP reference
Since.dev is a hosted service, and this is its remote MCP server. It gives an AI agent three kinds of tools:
- Grant: see what Grant, your AI COO, and his team are working on, read findings and runs, ask Grant a question, stop running work and record decisions on findings.
- World State: watch the public things your code depends on (packages, repositories, service status pages, web pages and advisory catalogs), catch up on every change since the agent last looked using a durable cursor, and check remembered facts before acting on them.
- Repositories and repairs: read the repositories shared with the agent, their dependency impact and proposed repairs.
This repository holds connection files only: this README, client configuration examples and a Gemini CLI extension. There is no server code to install or run.
Contents
- Requirements
- Get an API key
- Connect
- Grant access
- Tools
- Example: watch a dependency and catch up on changes
- Support
Requirements
- A Since.dev account. Create one with email, GitHub or Google. Each login includes one Free workspace.
- A credential for that workspace: an API key, or browser sign-in (OAuth) in clients that support it. The server has no anonymous access, and a credential only reaches its own workspace.
- A plan that includes the tools you use. World State, repository and usage tools work on every plan, including Grant Free, within the plan's limits; call
get_usageto see them. Grant tools need a paid plan (Grant Pro or Grant Studio); on Grant Free they returnplan_required. See pricing.
Get an API key
- Sign in at https://app.since.dev and select the workspace the agent should use.
- Open Connections → External agents (https://app.since.dev/connections/agents).
- Choose New connection, enter a connection name such as
release-bot, then choose Create connection. - Copy the key. It starts with
sc_live_and is shown only once. If you lose it, issue a new key from the connection's Manage. - Save it as the
SINCE_API_KEYenvironment variable or in your client's secret settings. Never commit an API key.
Any workspace member can create a connection. Each connection is a separate agent in the workspace with its own keys. It reads changes for the watches it creates with subscribe; to give it existing watches, choose Connect watches on the connection or call attach_to_set. Repository access and Grant access are granted separately.
To skip the key, use browser sign-in: clients that support remote MCP sign-in, such as Claude, Codex and Cursor, can add the server URL and sign in when prompted. A workspace owner or admin approves the workspace, projects and permissions during sign-in.
Connect
Add the server to your MCP client using Streamable HTTP:
https://api.since.dev/mcp
- OAuth: sign in through your browser when your client supports it.
- API key: send your workspace API key as a Bearer token in the
Authorizationheader.
Clients that use an mcpServers file
From examples/mcp.json:
{
"mcpServers": {
"since": {
"url": "https://api.since.dev/mcp",
"headers": {
"Authorization": "Bearer ${SINCE_API_KEY}"
}
}
}
}
This example reads SINCE_API_KEY from the environment. If your client does not expand environment variables, use its secret settings instead.
VS Code
From examples/vscode-mcp.json, for your workspace's .vscode/mcp.json. VS Code prompts for the key and keeps it as a secret input:
{
"servers": {
"since": {
"type": "http",
"url": "https://api.since.dev/mcp",
"headers": {
"Authorization": "Bearer ${input:since-key}"
}
}
},
"inputs": [
{
"id": "since-key",
"type": "promptString",
"description": "Since.dev API key",
"password": true
}
]
}
Gemini CLI
gemini extensions install https://github.com/since-dev/mcp
Enter your Since.dev workspace API key at the installer's secret prompt.
Grant access
New credentials have no Grant access. A workspace owner or admin opens Connections → External agents, chooses Manage on the connection and, under Grant access, picks the projects shared with it and its allowed actions: read, question, investigate, decision and control.
- Call
grant_team_statusfirst. It shows your approved projects, permissions and Grant's team, or where an owner grants access. - Leave out
applicationIdsto cover every approved project. grant_questionwaits up to 55 seconds. If Grant is still working, call it again with the samerequestKeyto keep waiting. Questions use the same workspace model and allowances as the app.- World State and repository tools keep their own access grants and work without Grant access.
Tools
The server offers 20 tools, and tools/list returns each one's full input schema. A connection that uses browser sign-in lists the Grant tools its approved permissions allow.
Grant
Grant tools need a paid plan and Grant access for the connection (see Grant access). Each one takes its arguments in an input object, plus an optional applicationIds array that narrows the projects. Without applicationIds, a call covers every project approved for the connection. Nullable fields inside input are still required: send null when one does not apply.
World State
World State tools work on every plan, within the plan's limits. A connection reads changes for the watches it creates and the watches or sets shared with it.
Repositories and repairs
These tools read only repositories that a workspace owner or admin has shared with the connection, in the repository's Settings → Agent access. They grant no write access.
Account
Example: watch a dependency and catch up on changes
An agent that maintains a project using React wants to hear about new React versions without polling npm. Each step shows the name and arguments the agent sends in a tools/call request.
-
Watch the dependency. To check first whether a source is covered, call
check_coveragewith the same three fields.{ "name": "subscribe", "arguments": { "subjectType": "package", "subject": "npm:react", "aspect": "versions" } }The result is the new watch with its
id,status,coverageandcadenceMinutes. The first check records a baseline, and later changes are delivered to this connection. -
When the agent resumes work, call
what_changed_sincebefore anything else. Leave outsinceto continue from the last acknowledged position.{ "name": "what_changed_since", "arguments": { "limit": 50 } }Abridged example result:
{ "changes": [ { "change": { "seq": 84219, "idempotencyKey": "a3f1c9...", "subject": { "key": "package:npm:react", "type": "package", "name": "react" }, "aspect": "versions", "fieldChanges": [{ "path": "version", "label": "Latest version", "from": "19.1.0", "to": "19.2.0" }], ... }, "context": { ... } } ], "cursor": 84219, "hasMore": false, ... }Each
changeblock holds the field changes, source and detection time. Itscontextholds the evidence and assessment. -
After processing every change in the response, acknowledge its cursor:
{ "name": "acknowledge_changes", "arguments": { "cursor": 84219 } }If
hasMorewas true, callwhat_changed_sinceagain. A page that was never acknowledged is returned again, so delivery is at least once: deduplicate onidempotencyKey. -
Before acting on a version the agent remembered, check it:
{ "name": "verify_facts", "arguments": { "facts": [ { "subjectKey": "package:npm:react", "aspect": "versions", "fieldPath": "version", "expectedValue": "19.2.0" } ] } }Each fact returns
valid,changedorunknown. Treatunknownas "no observation", never as "unchanged".
Support
- Documentation: https://since.dev/docs, including the MCP reference
- Questions about this connection: open an issue
- Email: [email protected]