Health & Info Endpoints
Health & Info Endpoints
Section titled “Health & Info Endpoints”These endpoints provide information about the Fizzy MCP hosted service status, version, and configuration. They are publicly accessible and do not require authentication.
Endpoints
Section titled “Endpoints”| Method | Endpoint | Description |
|---|---|---|
GET | / | Service root with links |
GET | /api/health | Health check |
GET | /api/info | Service info with tier details |
GET / Public
Section titled “GET / ”Returns service root information with links to available resources.
Request
Section titled “Request”curl https://fizzy-mcp-hosted.ryanyogan.workers.dev/Response
Section titled “Response”{ "name": "Fizzy MCP Hosted Service", "version": "0.1.0", "description": "AI-powered task management via Model Context Protocol", "links": { "health": "/api/health", "info": "/api/info", "mcp": "/mcp", "mcpInfo": "/mcp/info", "docs": "https://fizzy.yogan.dev" }, "endpoints": { "mcp": "POST /mcp - MCP Streamable HTTP endpoint", "health": "GET /api/health - Service health check", "info": "GET /api/info - Service information", "usage": "GET /api/me/usage - Your usage statistics (requires auth)" }}Response Fields
Section titled “Response Fields”| Field | Type | Description |
|---|---|---|
name | string | Service name |
version | string | Current service version |
description | string | Service description |
links | object | URLs to related resources |
endpoints | object | Available API endpoints with descriptions |
Example
Section titled “Example”curl -s https://fizzy-mcp-hosted.ryanyogan.workers.dev/ | jqconst response = await fetch('https://fizzy-mcp-hosted.ryanyogan.workers.dev/');const data = await response.json();
console.log(`Service: ${data.name} v${data.version}`);// Output: Service: Fizzy MCP Hosted Service v0.1.0import requests
response = requests.get('https://fizzy-mcp-hosted.ryanyogan.workers.dev/')data = response.json()
print(f"Service: {data['name']} v{data['version']}")# Output: Service: Fizzy MCP Hosted Service v0.1.0GET /api/health Public
Section titled “GET /api/health ”Returns the current health status of the service. Use this endpoint for monitoring and uptime checks.
Request
Section titled “Request”curl https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/healthResponse
Section titled “Response”{ "status": "ok", "timestamp": "2024-01-15T10:30:00.000Z", "version": "0.1.0"}Response Fields
Section titled “Response Fields”| Field | Type | Description |
|---|---|---|
status | string | Service status: "ok" when healthy |
timestamp | string | ISO 8601 timestamp of the response |
version | string | Current service version |
Status Values
Section titled “Status Values”| Status | HTTP Code | Description |
|---|---|---|
ok | 200 | Service is healthy and operational |
degraded | 200 | Service is operational but with reduced functionality |
unhealthy | 503 | Service is experiencing issues |
Example: Monitoring Script
Section titled “Example: Monitoring Script”#!/bin/bash# Simple health check script
HEALTH_URL="https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/health"
response=$(curl -s -w "%{http_code}" -o /tmp/health.json "$HEALTH_URL")
if [ "$response" == "200" ]; thenstatus=$(jq -r '.status' /tmp/health.json) if [ "$status" == "ok" ]; thenecho "Service is healthy"exit 0fifi
echo "Service is unhealthy"exit 1async function checkHealth() { const url = 'https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/health';
try { const response = await fetch(url); const data = await response.json();
if (response.ok && data.status === 'ok') { console.log(`Healthy - Version: ${data.version}`); return true; }
console.error(`Unhealthy - Status: ${data.status}`); return false; } catch (error) { console.error(`Health check failed: ${error.message}`); return false; }}
// Run checkcheckHealth();import requestsimport sys
def check_health():url = 'https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/health'
try: response = requests.get(url, timeout=10) data = response.json()
if response.ok and data.get('status') == 'ok': print(f"Healthy - Version: {data['version']}") return True
print(f"Unhealthy - Status: {data.get('status')}") return False
except requests.RequestException as e: print(f"Health check failed: {e}") return False
if **name** == '**main**':healthy = check_health()sys.exit(0 if healthy else 1)GET /api/info Public
Section titled “GET /api/info ”Returns detailed service information including rate limits and tier details. This endpoint provides more comprehensive information than the health endpoint.
Request
Section titled “Request”curl https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/infoResponse
Section titled “Response”{ "service": { "name": "Fizzy MCP Hosted Service", "version": "0.1.0", "environment": "production" }, "status": { "healthy": true, "uptime": "99.99%", "lastRestart": "2024-01-10T00:00:00.000Z" }, "rateLimits": { "default": { "requestsPerMinute": 60, "dailyLimit": 1000 }, "tiers": { "free": { "requestsPerMinute": 60, "dailyLimit": 1000, "features": ["basic_tools", "usage_tracking"] }, "pro": { "requestsPerMinute": 300, "dailyLimit": 10000, "features": ["all_tools", "usage_tracking", "priority_support"] }, "enterprise": { "requestsPerMinute": 1000, "dailyLimit": -1, "features": [ "all_tools", "usage_tracking", "priority_support", "custom_integrations", "sla" ] } } }, "capabilities": { "mcp": { "version": "2024-11-05", "transport": "streamable-http", "tools": 40 }, "api": { "authentication": ["token", "api_key", "session"], "formats": ["json"] } }, "links": { "documentation": "https://fizzy.yogan.dev", "support": "https://github.com/fizzy-do/fizzy-mcp/issues", "status": "https://status.fizzy.do" }}Response Fields
Section titled “Response Fields”Service Object
Section titled “Service Object”| Field | Type | Description |
|---|---|---|
name | string | Service name |
version | string | Current version |
environment | string | Deployment environment (production, staging) |
Status Object
Section titled “Status Object”| Field | Type | Description |
|---|---|---|
healthy | boolean | Overall health status |
uptime | string | Uptime percentage |
lastRestart | string | ISO 8601 timestamp of last restart |
Rate Limits Object
Section titled “Rate Limits Object”| Field | Type | Description |
|---|---|---|
default | object | Default rate limits for unauthenticated requests |
tiers | object | Rate limits by subscription tier |
Tier Features
Section titled “Tier Features”| Feature | Description |
|---|---|
basic_tools | Access to core MCP tools |
all_tools | Access to all 40 MCP tools |
usage_tracking | API usage statistics |
priority_support | Priority support queue |
custom_integrations | Custom integration support |
sla | Service Level Agreement |
Capabilities Object
Section titled “Capabilities Object”| Field | Type | Description |
|---|---|---|
mcp.version | string | MCP protocol version |
mcp.transport | string | Supported transport method |
mcp.tools | number | Number of available tools |
api.authentication | array | Supported auth methods |
api.formats | array | Supported response formats |
Example: Display Service Info
Section titled “Example: Display Service Info”curl -s https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/info | jq '{ service: .service.name, version: .service.version, tools: .capabilities.mcp.tools, tiers: [.rateLimits.tiers | keys[]]}'Output:
{ "service": "Fizzy MCP Hosted Service", "version": "0.1.0", "tools": 40, "tiers": ["free", "pro", "enterprise"]}async function getServiceInfo() { const url = 'https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/info'; const response = await fetch(url); const info = await response.json();
console.log('=== Fizzy MCP Service Info ==='); console.log(`Name: ${info.service.name}`); console.log(`Version: ${info.service.version}`); console.log(`Environment: ${info.service.environment}`); console.log(`Healthy: ${info.status.healthy}`); console.log(`MCP Tools: ${info.capabilities.mcp.tools}`);
console.log('\n=== Rate Limit Tiers ==='); for (const [tier, limits] of Object.entries(info.rateLimits.tiers)) { const daily = limits.dailyLimit === -1 ? 'Unlimited' : limits.dailyLimit; console.log(`${tier}: ${limits.requestsPerMinute} req/min, ${daily} daily`); }}
getServiceInfo();import requestsimport json
def get_service_info(): url = 'https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/info' response = requests.get(url) info = response.json()
print('=== Fizzy MCP Service Info ===') print(f"Name: {info['service']['name']}") print(f"Version: {info['service']['version']}") print(f"Environment: {info['service']['environment']}") print(f"Healthy: {info['status']['healthy']}") print(f"MCP Tools: {info['capabilities']['mcp']['tools']}")
print('\n=== Rate Limit Tiers ===') for tier, limits in info['rateLimits']['tiers'].items(): daily = 'Unlimited' if limits['dailyLimit'] == -1 else limits['dailyLimit'] print(f"{tier}: {limits['requestsPerMinute']} req/min, {daily} daily")
get_service_info()Use Cases
Section titled “Use Cases”Uptime Monitoring
Section titled “Uptime Monitoring”Use the /api/health endpoint with monitoring services:
# Pingdom, UptimeRobot, etc.https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/health
# Expected response: HTTP 200 with status: "ok"Service Discovery
Section titled “Service Discovery”Use the root endpoint / to discover available endpoints:
const root = await fetch('https://fizzy-mcp-hosted.ryanyogan.workers.dev/').then((r) => r.json());
// Dynamically discover MCP endpointconst mcpUrl = root.links.mcp;Rate Limit Planning
Section titled “Rate Limit Planning”Use /api/info to understand rate limits before integration:
const info = await fetch('https://fizzy-mcp-hosted.ryanyogan.workers.dev/api/info').then((r) => r.json(),);
const myTier = 'pro';const limits = info.rateLimits.tiers[myTier];
console.log(`My rate limit: ${limits.requestsPerMinute} requests/minute`);Next Steps
Section titled “Next Steps”- Usage Endpoints - Track your API usage
- Admin Endpoints - Administrative endpoints
- MCP Endpoint - Connect AI agents