Skip to content

MCP

Connect an MCP client to SignalSitter and your agent can create monitors, read incidents and manage callbacks.

  • Endpoint: https://api.signalsitter.com/mcp
  • Transport: Streamable HTTP
  • Authentication: Authorization: Bearer $SIGNALSITTER_API_KEY

The credential decides which organization and project the agent works in. No tool takes an organization or project argument.

Create a credential in the dashboard. Pick the narrowest preset that covers the job: read to look things up, manage to create and change monitors, callbacks and credentials. The Agents guide lists every preset.

Keep the key in an environment variable or your client’s secret prompt. Never put it in a committed file, a URL or a log.

Terminal window
export SIGNALSITTER_API_KEY='sig_v1_...'
Terminal window
npm install @modelcontextprotocol/client@2.0.0
import {
Client,
StreamableHTTPClientTransport,
} from "@modelcontextprotocol/client";
const client = new Client(
{ name: "my-signalsitter-client", version: "1.0.0" },
{ versionNegotiation: { mode: "auto" } }
);
const transport = new StreamableHTTPClientTransport(
new URL("https://api.signalsitter.com/mcp"),
{
authProvider: {
token: async () => process.env.SIGNALSITTER_API_KEY!,
},
}
);
await client.connect(transport);
const { tools } = await client.listTools();
const organization = await client.callTool({
name: "signalsitter_get_organization",
});

Add this to config.toml:

[mcp_servers.signalsitter]
url = "https://api.signalsitter.com/mcp"
bearer_token_env_var = "SIGNALSITTER_API_KEY"

Add this to .mcp.json. Claude Code fills in the variable from your environment:

{
"mcpServers": {
"signalsitter": {
"type": "http",
"url": "https://api.signalsitter.com/mcp",
"headers": {
"Authorization": "Bearer ${SIGNALSITTER_API_KEY}"
}
}
}
}

Add this to .vscode/mcp.json. VS Code asks for the key in a masked prompt:

{
"inputs": [
{
"description": "SignalSitter API credential",
"id": "signalsitter_api_key",
"password": true,
"type": "promptString"
}
],
"servers": {
"signalsitter": {
"type": "http",
"url": "https://api.signalsitter.com/mcp",
"headers": {
"Authorization": "Bearer ${input:signalsitter_api_key}"
}
}
}
}

Every tool production offers today:

Tool Purpose
signalsitter_get_organization Read the organization and MCP principal derived from the verified API credential. The organization cannot be selected in tool input.
signalsitter_get_entitlements Read the verified organization’s versioned plan, enforced entitlements, current allotment usage, service access, and lease freshness. The organization cannot be selected in tool input.
signalsitter_get_usage Read bounded usage totals, projection freshness, and E6-01 entitlement alignment for the verified organization. Usage is eventually reconciled and is not exact global quota enforcement. The organization cannot be selected in tool input.
signalsitter_get_billing Read the verified organization’s plan, subscription status, chargeback state, and payment-grace boundary. Read-only: an agent can explain why service is degraded and cannot start a checkout, open a billing portal, or change a plan. Carries no payment method, amount, invoice, or provider identifier, and the organization cannot be selected in tool input.
signalsitter_list_billing_allotment_transitions List the verified organization’s customer-readable monitor suspensions and releases caused by plan transitions, newest transition first. The organization cannot be selected in tool input, and provider or operator audit identifiers are never returned.
signalsitter_get_default_jurisdiction Read where this organization’s monitors are created when a create names no jurisdiction, and which jurisdictions this deployment can actually serve. Read this before creating a monitor and offer only what it reports as available: the contract vocabulary is wider than any deployment routes, so a create naming an unrouted jurisdiction is refused rather than stranded. A stored default outside the available set is a real state and is reported rather than corrected.
signalsitter_create_monitor Create a monitor and return the jurisdiction it was created in and the URL to publish its beats to. Important action: read the default jurisdiction and the requested cadence, then set confirm to true. Omit jurisdiction to use the organization’s default; naming one applies to this monitor only. Where a monitor lives is written once at creation and can never be changed afterwards, and only jurisdictions this deployment routes are accepted. The idempotency key is the monitor’s identity rather than a retry nonce: the same key always names the same monitor, and a different key creates a second one.
signalsitter_get_monitor Read one authoritative monitor by its immutable public monitor ID, including the cadence, monitor-allowance enforcement, placement metadata, and latest accepted observation. The optional jurisdiction disambiguates the rare case where this organization owns that ID in more than one placement. Organization identity comes only from the verified API credential.
signalsitter_update_monitor_configuration Change one monitor’s expected interval, grace period, name, measurement definitions, or flapping policy. Destructive action: read the monitor first, then send its current configuration version as expectedConfigurationVersion and set confirm to true. A stale version is refused rather than applied. Shortening the interval can make the next deadline immediately overdue.
signalsitter_control_monitor_lifecycle Pause, resume, archive, or restore one monitor, or open and close a maintenance window. Destructive action: pausing and archiving stop missing-beat detection, so read the monitor first, then send its current configuration version as expectedConfigurationVersion and set confirm to true. Archiving also refuses further beats and keeps history for the retention period. A maintenance window suppresses new incidents while still accepting beats.
signalsitter_delete_monitor Irreversibly delete one monitor, permanently consume its key, terminate open incidents, abandon pending callback work, and cancel scheduled work. Destructive action: read the monitor first, then send its current configuration version as expectedConfigurationVersion and set confirm to true. A stale version is refused rather than applied.
signalsitter_list_projects List the projects of the verified organization. A project holds one client’s monitors, credentials and callback endpoints, keeping them separate from every other client in the same organization. This is the one project call answered from the organization rather than from one project, so it works whichever project the credential was issued into. Monitors, incidents and endpoints returned by every other tool belong to that credential’s own project, which this list names.
signalsitter_get_project Read the project this credential acts in, including its name and current version. It takes no arguments: a credential’s project is fixed when the credential is issued, so there is nothing to name. Read the version here before renaming.
signalsitter_create_project Create a project in the verified organization, to hold one client’s monitors, credentials and callback endpoints apart from every other client’s. Important secret action: inspect the name, then set confirm to true. The name must be unique within the organization, compared ignoring case and surrounding or repeated spaces; a name already taken is refused rather than duplicated, which is also what a retry of a call that already succeeded will see. This credential keeps acting in its own project afterwards — a credential’s project is fixed when it is issued — so give the new project a credential of its own before working in it.
signalsitter_rename_project Rename the project this credential acts in. Important secret action: inspect the new name, then set confirm to true. It takes no project argument, because a credential’s project is fixed when the credential is issued. The identifier does not change, so nothing that refers to the project breaks. Supply expectedVersion from a read to be refused rather than overwrite a rename somebody else made in the meantime.
signalsitter_control_project_lifecycle Archive or restore the project this credential acts in. Project identity comes only from the credential. Destructive administrative action: read the project, supply its expectedVersion and an idempotency key, then set confirm to true. The last active project cannot be archived.
signalsitter_delete_project Permanently erase the project this credential acts in and everything below it. Project identity comes only from the credential. Irreversible administrative action: inspect the project and deletion counts, supply its expectedVersion and an idempotency key, then set confirm to true. Cleanup is bounded and the receipt reports progress; the last active project cannot be deleted.
signalsitter_list_callback_endpoints List the reusable callback endpoints of the verified organization. Signing secrets are never returned by a read.
signalsitter_get_callback_endpoint Read one callback endpoint, including whether it is active and therefore receiving deliveries.
signalsitter_create_callback_endpoint Create a reusable callback endpoint for the verified organization. Important secret action: inspect the destination, then set confirm to true. Choose a kind: a webhook posts a signed request to a URL you operate, a whooshbang_subscriber destination notifies one person on this organization through the messenger they connected, and a whooshbang_group destination notifies everybody on the organization who has connected one. Neither notification kind asks for a credential; this product holds the account. A webhook returns its signing secret once and an idempotent replay never reveals it again; a notification destination returns none, because this product issues it no secret. The endpoint is active immediately and can be selected by a monitor or made the organization default straight away.
signalsitter_update_callback_endpoint Change a callback endpoint’s alias, destination, or lifecycle using its current generation. Externally visible action: read the endpoint, then set confirm to true. Change a webhook’s destination with url, a whooshbang_subscriber destination’s with whooshbang, and a whooshbang_group destination’s with whooshbangGroup, naming only the members you are replacing; an endpoint never changes kind. Set lifecycle to disabled to stop deliveries and to active to start them again; a changed destination takes effect on the next delivery.
signalsitter_disable_callback_endpoint Switch a callback endpoint off using its current generation. Destructive action: read the endpoint, then set confirm to true. Monitors bound to it stop receiving deliveries and it cannot remain the organization default, but nothing is destroyed: switch it back on with signalsitter_update_callback_endpoint and lifecycle active. To destroy it, use signalsitter_remove_callback_endpoint.
signalsitter_remove_callback_endpoint Permanently remove a callback endpoint using its current generation. Irreversible destructive action: read the endpoint, confirm with the customer that they want it destroyed rather than switched off, then set confirm to true. The endpoint, its signing secret, and its idempotency history are deleted, its alias becomes reusable, the organization default is cleared if it pointed here, and monitors bound to it report that the endpoint was removed. Use signalsitter_disable_callback_endpoint instead when deliveries should only pause.
signalsitter_rotate_callback_secret Replace a webhook callback endpoint’s signing secret using its current generation. Destructive secret action: read the endpoint, then set confirm to true. The replacement is returned once and the previous secret keeps verifying signatures for the bounded overlap you request. A notification destination has no signing secret this product issued and is refused.
signalsitter_test_callback_endpoint Send one test delivery to the endpoint and report what came back. Externally visible action, so set confirm to true: for a webhook this makes a real signed HTTPS request to the customer destination, and for a WhooshBang destination it sends a real WhooshBang message that notifies a real person on their own device. The message says it is a test. The result is a diagnostic only: it is not stored on the endpoint and it neither allows nor blocks any delivery.
signalsitter_get_callback_default Read the callback endpoint that monitors inherit when their binding selects the organization default.
signalsitter_set_callback_default Select or clear the organization default callback endpoint. Destructive action: this redirects every monitor that inherits the default, so read the current default first and then set confirm to true. Pass a null endpointId to clear it.
signalsitter_get_monitor_callback Read one monitor’s callback binding and what it currently resolves to, including why an unresolved binding cannot deliver.
signalsitter_set_monitor_callback Bind one monitor to the organization default, a named shared endpoint, its own inline destination, or nothing. Destructive action: read the current binding, then set confirm to true. An inline destination belongs to this monitor alone and can never change a shared or default endpoint.
signalsitter_list_credentials List bounded API credential metadata for the verified organization using an opaque cursor. Secrets are never returned.
signalsitter_get_credential Read API credential metadata by opaque public ID within the verified organization. Secrets are never returned.
signalsitter_create_credential Issue an API credential for the verified organization. Important secret action: inspect the requested preset, then set confirm to true. A new secret is returned once; an idempotent replay never reveals it again.
signalsitter_rotate_credential Replace an API credential secret using its current generation and an idempotency key. Destructive secret action: inspect current metadata, then set confirm to true. The replacement secret is returned once.
signalsitter_revoke_credential Revoke an API credential using its current generation. Destructive action: inspect current metadata, then set confirm to true. Revocation prevents future authentication.
signalsitter_list_monitors List this organization’s monitors newest first using an opaque cursor, optionally including archived ones. Organization identity comes only from the verified API credential.
signalsitter_list_monitor_observations List one monitor’s received observations newest first using an opaque cursor, optionally bounded by a time window. Organization identity comes only from the verified API credential.
signalsitter_read_monitor_observation_series Read one monitor’s observation series over an exact time window, which is the shape a numeric diagnosis reads. Organization identity comes only from the verified API credential.
signalsitter_list_monitor_changes List what changed on one monitor newest first using an opaque cursor, with each change attributed to who made it. Organization identity comes only from the verified API credential.
signalsitter_get_incident Read one incident on one monitor. Organization identity comes only from the verified API credential.
signalsitter_get_monitor_activation Read whether one monitor has received its first beat and become active, which is how to tell a created monitor from a working one. Organization identity comes only from the verified API credential.
signalsitter_test_monitor_beat Send one monitor a test beat and read what it made of it. Externally visible action: read the monitor, then set confirm to true. It writes an observation the monitor acts on, so a monitor already in an incident may recover.
signalsitter_set_default_jurisdiction Set the jurisdiction every monitor created afterwards is routed to. Important action: read the current default, then set confirm to true. Existing monitors do not move.
signalsitter_get_billing_cancellation_impact Read what cancelling the current plan would cost this organization, in monitors and retained history. Organization identity comes only from the verified API credential.
signalsitter_list_incidents List incidents for one monitor newest first using an opaque cursor. Organization identity comes only from the verified API credential.
signalsitter_get_incident_timeline Read the immutable timeline of one incident in occurrence order. Timeline events are append-only and are never rewritten.
signalsitter_list_incident_deliveries Read every callback delivery owed for one incident: its state, how many attempts remain, when the next is due, what the last attempt saw, and what to do about it. Requires both incident and callback read entitlement.
signalsitter_redeliver_incident_callback Ask for one more delivery attempt against a settled callback delivery. Operator action: read the delivery, confirm it is redeliverable, then set confirm to true. This sends a signed request to the customer’s endpoint. Grants exactly one attempt; repeating the call with the same idempotency key replays the original grant rather than granting another.
signalsitter_create_rule_workbench_draft Create a versioned rule draft over a bounded frozen window of retained monitor history. This does not change live configuration; inspect the target monitor, then set confirm to true.
signalsitter_get_rule_workbench_draft Read one versioned rule workbench draft. Organization identity comes only from the verified API credential.
signalsitter_update_rule_workbench_draft Update an open rule proposal only when its draft version still matches. This changes only the draft, never live configuration; inspect the current draft, then set confirm to true.
signalsitter_replay_rule_workbench Replay active and proposed rules chronologically over the draft’s frozen retained history. Returns bounded graph, episode-diff, sampling, and deterministic cost evidence and writes nothing.
signalsitter_apply_rule_workbench_draft Apply a replayed rule proposal to live monitor configuration. Destructive action: inspect the replay, then provide matching draft and configuration versions and set confirm to true; stale versions are refused.
signalsitter_cancel_rule_workbench_draft Cancel an open rule draft at its expected draft version. This discards only draft work and never changes live monitor configuration; inspect the draft, then set confirm to true.
signalsitter_acknowledge_incident Acknowledge an incident without closing it. Operator action: read the incident, then set confirm to true. Repeating the call with the same idempotency key replays the original acknowledgement.
signalsitter_annotate_incident Append an operator annotation to an incident timeline. Operator action: read the incident, then set confirm to true. The annotation is immutable and an idempotency key is required so a retry cannot duplicate it.
signalsitter_resolve_incident Resolve an incident and close its violation family. Destructive action: read the incident, then set confirm to true. A resolved incident cannot be reopened; a later violation opens a new incident.
  • Delete the organization. Do it in the dashboard.
  • Export all your data. Use the REST export.
  • Change the default jurisdiction. Do it in the dashboard Settings, or with REST.
  • Act in another project. Use a credential issued in that project. A project an agent creates gets its first key in the dashboard.
  • Set or rotate a monitor’s inline callback URL. Use REST or a manage publish credential. MCP can still bind a monitor to a named endpoint, the default, or nothing.
  • Read a secret twice. Secrets appear once, in the result that created them.
  • Confirm changes. Tools that create, change or delete something need confirm: true. Without it you get signalsitter.confirmation_required and nothing changes. Read the current state before you confirm.
  • Send the version you read. Rotating or revoking a credential needs expectedGeneration. Deleting a monitor needs expectedConfigurationVersion. Applying a rule draft needs the draft and configuration versions. A stale version returns signalsitter.precondition_failed.
  • Save secrets immediately. Creating or rotating a credential or a callback endpoint’s signing secret returns the secret once. Lists, reads and replays never show it again.
  • Pick the jurisdiction once. A monitor’s jurisdiction can never change. Call signalsitter_get_default_jurisdiction first and offer only what its available list names.
  • Hand over the publish URL. signalsitter_create_monitor returns publishUrl. Give it to the job you’re monitoring so it can send its first beat.
  • Deleting is permanent. A deleted monitor’s ID can’t be reused.
  • Some tools send real requests. signalsitter_test_callback_endpoint and signalsitter_redeliver_incident_callback call your endpoint over HTTPS.
await client.callTool({
name: "signalsitter_create_monitor",
arguments: {
confirm: true,
intervalSeconds: 86400,
name: "Nightly backup",
},
});

Leave out callback and the monitor uses your organization’s default endpoint. Send { "kind": "disabled" } to turn alerts off.

If one monitor ID exists in more than one jurisdiction, monitor tools return signalsitter.conflict. Call again with jurisdiction set, for example "eu".

Every call returns { "ok": true, "data": ... } or an error:

{
"ok": false,
"error": {
"code": "signalsitter.permission_denied",
"message": "The verified API credential cannot perform this operation.",
"correlationId": "corr_...",
"requestId": "req_...",
"retryable": false
}
}
  • Error codes are stable. Branch on code, not message.
  • Retryable errors include retryAfterSeconds. Wait that long, then retry.
  • Another organization’s IDs return signalsitter.not_found, the same as an ID that doesn’t exist.
  • Requests are UTF-8 JSON, up to 16 KiB.
  • Each tool call has 10 seconds to finish.
  • Structured results are capped at 192 KiB, and a whole response at 512 KiB.
  • Requests from a browser page are refused. Connect from a server, desktop client or agent.
  • Authentication is API keys only. There’s no OAuth sign-in.