Connect AI assistants to Effing Cloud
Effing Cloud has a built-in MCP server that gives AI assistants read-only access to your account's reporting data: renders, function runs, errors, usage volumes, and estimated cost. Once connected, you can ask "how many renders failed yesterday?" or "which customer tag drove the most usage this month?" and the assistant pulls the numbers straight from your account.
The server lives at https://cloud.effing.dev/mcp and works with any MCP client: Claude, ChatGPT, coding agents, or your own applications. It is read-only, so a connected assistant can read your reporting data but cannot change anything. Every connection is scoped to a single account.
Connect from claude.ai
- In claude.ai, go to Settings → Connectors and choose Add custom connector.
- Paste
https://cloud.effing.dev/mcpas the server URL and add the connector. - Click Connect. claude.ai sends you to Effing Cloud, where you log in, pick the account to share, and approve access.
Connect from ChatGPT
- In ChatGPT, turn on Developer mode under Settings → Security and login, then open the Plugins page and click the + button to add your own.
- Paste
https://cloud.effing.dev/mcpas the server URL and pick OAuth authentication. - Connect. ChatGPT sends you through the same Effing Cloud login and approval flow.
Managing connections
Assistant connections use your Effing Cloud login, so there are no keys to copy. Each connection is pinned to the one account you picked when approving it; to switch accounts, disconnect and connect again. You can review and revoke connections under Connected apps on your profile page. Membership is checked on every request, so if someone removes you from an account, your connections to it stop working right away.
Connect from Claude Code and other MCP clients
Coding agents, scripts, and CI have no browser to log in with, so they use an API key instead. Create one on the Credentials page of the console. The key decides which account's data the client sees. For Claude Code:
claude mcp add --transport http effing-cloud https://cloud.effing.dev/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Any other MCP client that takes a server URL plus custom headers works the same way. Use the HTTP transport and send an Authorization: Bearer YOUR_API_KEY header.
Connect from the Claude or OpenAI API
Your own applications can attach the server through the Claude and OpenAI APIs. The Claude API's MCP connector needs three things on a Messages API request: the anthropic-beta: mcp-client-2025-11-20 header, the server in mcp_servers, and a matching mcp_toolset entry in tools:
"mcp_servers": [
{
"type": "url",
"url": "https://cloud.effing.dev/mcp",
"name": "effing-cloud",
"authorization_token": "YOUR_API_KEY"
}
],
"tools": [
{
"type": "mcp_toolset",
"mcp_server_name": "effing-cloud"
}
]With the OpenAI API, use the mcp tool type of the Responses API and put the API key in the authorization field.
What the assistant can see
The server exposes 10 read-only tools:
| Tool | What it returns |
|---|---|
fn_overview | Operational overview of fn: runs, errors, average and p95 wall-clock time, daily series. |
fn_usage | Billable fn usage: runs, output bytes, and billable CPU time, optionally broken down by project, module, kind, or tag. |
fn_list_projects | Your fn projects with their latest deployed version and recent-run info. |
fn_list_runs | Individual fn runs, filterable by project, module, kind, or tag. |
fn_list_errors | Individual fn run errors with error code and message. |
ffs_overview | Operational overview of ffs: renders, errors, render times, daily series. |
ffs_usage | Billable ffs usage: rendered pixels and render counts, optionally broken down by API key or tag. |
ffs_list_renders | Individual ffs renders with dimensions, timing, and tags, filterable by tag. |
ffs_list_errors | Individual ffs render errors with error code and message. |
list_tag_names | The tag names in recent use, so the assistant can discover what to filter by. |
When your account has contracted rates, the usage tools also include estimated cost. Estimated from the account's contracted rates over this reporting window. Estimates exclude base fees and minimums and don't align with billing periods — never an invoice amount. Amounts are rounded independently, so breakdown rows may not sum exactly to the total.
How to read the numbers
The tools follow the same two window conventions as the console's reporting pages:
- Overview tools answer operational questions. Their window is rolling and hour-snapped — the last N×24 hours up to the current hour, INCLUDING today so far.
- Usage tools answer billing questions. Their window is whole complete days — the last N days ending at last midnight, EXCLUDING today.
So an overview total and a usage total for the "same" period will differ. That is the window convention at work, not a data problem. Both families share the same freshness caveat: Backed by hourly rollups (refreshed every hour, so data can lag up to ~1 hour) covering the last 100 days. The list tools read raw rows and are near-real-time.