---
title: Operations
description: Production health checks, source freshness, cache, and deployment gates.
type: troubleshooting
summary: How to decide whether AI Workflow MCP is safe to use in production.
related:
  - /en/docs/rest
  - /en/docs/architecture
  - /en/docs/release-notes
  - /en/docs/errors
---

# Operations



Use operations endpoints before high-volume automation, launch checks, or freshness-sensitive agent workflows.

## Health [#health]

```bash
curl -fsS https://mcp.aiworkflowmcp.com/health
```

Healthy production response:

```json
{
  "service": "aiworkflowmcp-cloudflare-v2",
  "status": "ok",
  "version": "2.0.0-cloudflare-native",
  "data_quality": {
    "freshness_status": "fresh",
    "latest_eval_status": "PASS",
    "top1_accuracy": 1,
    "top3_recall": 1,
    "trust_violations": 0
  }
}
```

Treat this as green:

* `status` is `ok`
* `data_quality.freshness_status` is `fresh`
* `data_quality.latest_eval_status` is `PASS`
* `data_freshness.stale_entities` is `0`
* `data_freshness.source_errors` is `0`
* `runtime.cache_status` is `ok`

## Source Status [#source-status]

```bash
curl -fsS https://api.aiworkflowmcp.com/v1/sources/status
```

Use source status when health is not green or a specific vendor result looks stale. The source list shows recent sync timestamps, hash state, error state, and refresh due status.

## Rate-Limit Mode [#rate-limit-mode]

`/health` exposes the active rate limiter:

```json
{
  "runtime": {
    "rate_limit": {
      "mode": "kv",
      "limit_per_minute": 120,
      "scope": "ip-minute",
      "protected_mcp_methods": ["tools/call"]
    }
  }
}
```

If `mode` is `kv`, Cloudflare KV is enforcing per-minute limits. Public calls are scoped by IP. Authenticated calls are scoped by API key.

## Protected Paths [#protected-paths]

The Worker rate-limits high-volume read paths:

* `/v1/search`
* `/v1/models/list`
* `/v1/tools/list`
* `/v1/skills/list`
* `/v1/tutorials/list`
* `/v1/mcp-servers/list`
* `/v1/sources/status`
* `/v1/frameworks/list`
* `/v1/frameworks/search`
* `/v1/frameworks/route`
* detail paths for models, tools, skills, MCP servers, and frameworks
* MCP `tools/call`

## Deployment Gate [#deployment-gate]

Before deploying docs or service changes:

```bash
bun run lint
bun --filter docs typecheck
bun --filter docs build
bun --filter docs cf:build
```

For full repository releases:

```bash
bun run typecheck
bun run lint
bun run test
bun run build
```

## Production Smoke [#production-smoke]

```bash
curl -fsS https://mcp.aiworkflowmcp.com/health
curl -fsS "https://mcp.aiworkflowmcp.com/v1/models/list?limit=1"
curl -fsS "https://mcp.aiworkflowmcp.com/v1/search?type=DOC&q=claude%20code&limit=1"
curl -fsS https://aiworkflowmcp.com/en/docs
```

Authenticated smoke:

```bash
curl -fsS \
  -H "Authorization: Bearer ${AIWORKFLOWMCP_API_KEY}" \
  "https://mcp.aiworkflowmcp.com/v1/tools/list?limit=1"
```

## Incident Triage [#incident-triage]

Use this order:

1. Check `/health`.
2. Check `/v1/sources/status`.
3. Check the failing REST or MCP call without `fresh_only=true`.
4. Check the same call with an API key to separate public rate limit from service failure.
5. If docs changed, verify `aiworkflowmcp.com/en/docs/...` and `/en/llms.mdx`.
6. If web account changed, verify sign-in and API key creation from the production account page.


---

For a semantic overview of all documentation, see [/en/sitemap.md](/en/sitemap.md)

For an index of all available documentation, see [/en/llms.txt](/en/llms.txt)