Live service status

System status

Every figure on this page is computed when the page loads, from our own request logs and a live database probe. Nothing here is estimated, and nothing is a target we have promised.

Degraded performance

At least one check below is outside its normal range. The detail is in the component rows.

Checked 2026-08-29 07:01:05 UTC

Components

Web application

This page was rendered by the application server, so the web tier answered your request. That is an observation, not an independent probe — it cannot tell you anything about availability a moment ago or from another network.

Responding

Database

A SELECT 1 issued while rendering this page returned in 99 ms.

Operational

MCP endpoint

Last 24 hours: 100.0% of 7 served

Last 7 days: 91.2% of 172 served

Status derived from the last 7 days. See the note below for what counts as a failure.

Degraded

Integrations

7 connectors are switched off — each is either unreleased or waiting on a provider approval, not broken. The full list, with the reason for every one that is switched off, is below.

8 of 15 available

Recent activity

Aggregated across the whole platform. No per-customer figures are published here.

Last 24 hours

7 MCP calls served.

Succeeded7
Failed0
Declined by design9
Rejected as malformed0
Median duration793 ms
95th percentile1.90 s

Last 7 days

172 MCP calls served.

Succeeded157
Failed15
Declined by design43
Rejected as malformed1
Median duration1.31 s
95th percentile10.60 s

Durations are measured across the whole call, including time spent waiting on the third-party API being called, and cover successful calls only.

Failures in the last 7 days

Grouped by message. Truncated and stripped of anything resembling an identifier before publication, so some read incompletely. Calls rejected for malformed arguments are counted above but not listed here, for the same reason they are not counted as failures.

  • Syntax Error: Expected Name, found <EOF>.×1 · 2d ago
  • The operation was aborted due to timeout×3 · 2d ago
  • Field 'code' doesn't exist on type 'UserError'; Field 'code' doesn't exist on type 'UserError'; Field 'code' doesn't exi…×1 · 2d ago
  • Rate limited. Please retry later.×5 · 2d ago
  • (#100) Tried accessing nonexisting field (approximate_count)×1 · 3d ago
  • `refundCreate` is blocked: this mutation category is never allowed through the GraphQL escape hatch (refunds, gift cards…×1 · 3d ago

Integrations

Platform-wide availability of each connector, read live from our configuration. A connector shown as unavailable cannot be connected or called by anyone right now.

E-commerce

Shopify

Available

Google Merchant Center

Temporarily unavailable while we complete account-ownership verification.

Unavailable

Advertising & Social

Meta (Facebook & Instagram)

Available

LinkedIn

Coming soon — LinkedIn support is not yet available.

Unavailable

Threads

Available

TikTok Ads

Coming soon — TikTok Ads support is not yet available.

Unavailable

Google Ads

Built and ready -- pending Google Ads developer token approval and CASA verification. Add credentials below, then enable once both clear.

Unavailable

Analytics & Reporting

Google Analytics (GA4)

Coming soon — Google Analytics support is not yet available.

Unavailable

Local & Reputation

Google Business Profile

Coming soon — Business Profile support is not yet available.

Unavailable

Email & Marketing

Brevo

Available

Klaviyo

Available

Developer Tools

GitHub

Available

PostgreSQL

Available

Network & Infrastructure

UniFi Network

Available

Customer Support

Gorgias

Coming soon — Gorgias support is in final testing.

Unavailable

How these numbers are computed

What the success rate counts. The denominator is requests our MCP endpoint accepted and attempted to serve. It deliberately excludes requests we declined on purpose: calls with an invalid or missing token, calls refused for exceeding a plan's rate limit, calls to a tool the workspace has disabled, and calls naming a protocol method we do not implement. Each of those is the server behaving correctly in response to a request it should refuse, so counting them as failures would describe working software as broken. Counting them as successes would pad the figure instead. They are reported separately above as “declined by design” so you can see their volume and recompute the rate however you prefer.

Malformed tool calls. We also exclude calls an AI assistant made with arguments that do not fit the tool's published schema — a required field left out, a value of the wrong type. We check arguments before we call anything, so these are rejected by us, in a fraction of a millisecond, without the provider being contacted; they tell you what the assistant asked for, not whether our service was working. This is the same judgement we already make about a call naming a method we do not implement, and we apply it just as narrowly: a call only qualifies if its recorded error is the exact message our own validator writes for the exact tool that was called. An error relayed from a provider cannot fall into this bucket. The count is printed above as “rejected as malformed”, separately from the other declines, so you never have to take our word for the effect. Counting every one of them as a failure instead, the last 7 days would read 90.7% rather than 91.2%.

What counts as a failure. Everything else that errored, including errors that came back from the third-party API we were calling on a customer's behalf — an expired credential, a missing permission scope, a provider rate limit, a provider timeout, a query the assistant wrote that the provider's own schema rejected. Those are not always our fault, and we have not tried to separate out the ones that are. The published rate is therefore a floor on our own reliability, not a flattering reading of it.

Where the thresholds sit. We call the endpoint operational at 95% and above, degraded from 85% to 95%, and an outage below 85%. Those are lower than a status page for a single self-contained service would use, for two reasons we would rather state than bury. The first is the paragraph above: the denominator carries other companies' failures as well as ours, so a bar set where a platform-only measurement would sit is being applied to a number that is not measuring only the platform. The second is volume. At the 172 calls we served in the last 7 days, one failure moves the rate by 0.58 points, and a threshold with less than a few failures of headroom underneath it would flip this banner on noise. What these thresholds are not is a bar set wherever this week's number happened to land: they were chosen against what the measurement contains and how much of it there is, and the banner above is whatever applying them produces. The exact rate and the exact counts are printed above, so if your bar is higher than ours, those are the numbers to apply it to.

Scope, and what is missing. These figures are derived only from MCP requests that reached our application and were logged. A period in which the server was completely unreachable would leave no rows behind and would be invisible here. That is a real limitation: this is a service-health measurement, not an uptime measurement, and we do not publish an uptime percentage because we do not yet run the external monitoring that would be needed to compute one honestly. Windows are rolling, relative to when you loaded this page.

No SLA. Serve MCP does not offer a service level agreement, and nothing on this page is a commitment or a target. It is a record of what actually happened.

There is also a machine-readable probe at /api/health, which reports database reachability and returns a non-200 status when it fails. If something looks wrong that this page does not reflect, tell us.