Fever MCP

Live

OAUTH 2.1

EVENT DISCOVERY

Media

Fever MCP gives agents authenticated event discovery: find cities where Fever operates and search live experiences by date, through per-user OAuth.

  • Per-user credentials: each call uses the actual user's token, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Fever MCP
agent · Acme Q3
Run
What is on in Barcelona this weekend?
S
fevermcp_search_events
84ms
Events agent
12 events this weekend in Barcelona. Candlelight: Vivaldi's Four Seasons has Saturday 8pm seats from 19 EUR, and a rooftop jazz night on Sunday still has availability.
Sources: 12 events, Barcelona, Sat to Sun
fevermcp
12 events
18:29
Message Claude...

Tools your events agent reaches for on Fever, scoped per user.

CALL ANY TOOL
Event discovery in 2 calls: find cities where Fever operates, then search that city's events and experiences filtered by time frame.
fevermcp_search_cities
Search cities
Find cities where Fever operates and offers events and activities, for location discovery and travel planning.
Parameters
Name
Type
Required
Description
locale
string
Required
Language code (en, es, fr, de, pt, it, ar, bg, ca, cs, da, el, et, fi, he, hr, hu, id, ja, ko, lt, lv, nl, pl, ro, sk, sl, sv, th, tr, zh) - affects localization
query
string
Required
City name or search term (use '' for all cities)
city_code
string
Optional
Optional 3-letter city code (e.g., MAD, NYC, LON, BCN)
only_suggested
boolean
Optional
True returns only top/popular cities
fevermcp_search_events
Search events
Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Fever tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fevermcp"], toolNames: [
    "fevermcp_search_cities",
    "fevermcp_search_events"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "What is on in Barcelona this weekend?" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fevermcp"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Find candlelight concerts in Madrid next Friday." }],
  tools,
});

// Execute the tool call with the user's vaulted Fever credential
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fevermcp"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Which cities does Fever cover in Italy?" }],
  tools,
});

// Tool call runs with the user's vaulted Fever credential
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["fevermcp"] }, pageSize: 100,
});

const agent = new Agent({
  name: "fever_events_agent",
  model: "gemini-2.5-pro",
  instruction: "Find live events and experiences for the signed-in user.",
  tools,
});

await agent.run("Find family events in Chicago this Saturday.");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Fever tool. Click to copy, paste into your agent, done.
Discover events
Copy the prompt
Copied
What is on in Barcelona this weekend?
Copy the prompt
Copied
Find candlelight concerts in Madrid next Friday.
Copy the prompt
Copied
List immersive exhibitions in London in April.
Plan a trip
Copy the prompt
Copied
Which cities does Fever cover in Italy?
Copy the prompt
Copied
Does Fever operate in Austin?
Copy the prompt
Copied
Find things to do in Paris the first week of May.
Time-boxed searches
Copy the prompt
Copied
What can I do tonight in New York?
Copy the prompt
Copied
Find family-friendly events in Chicago this Saturday.
Copy the prompt
Copied
What is running in Lisbon between June 10 and June 14?
SEE HOW AUTH WORKS
Your users connect once. Their Fever credentials stay vaulted, every call is scope-checked, and every action is logged.
1
Authorize
Your user connects
Fever MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Fever MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Fever MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Fever MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other discovery connectors.
No items found.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
Other connector libraries treat auth as a demo afterthought. Scalekit starts with identity, scope enforcement, and audit. Connectors follow.
01.
Shared tokens break per-user analytics
A shared Fever token looks fine in a demo. In production every city lookup and event search looks like one service account, and you cannot tell which user's trip the agent is planning. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared token
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Fever today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Fever as the user or through a shared key?
As the user. Scalekit resolves the OAuth credential of the person who triggered the agent at request time, so every search in your audit trail is attributed to a real user, not a shared service account.
Where is the Fever token stored?
In an AES-256 encrypted vault with per-tenant namespacing. Tokens are resolved at request time, never enter LLM context, refresh automatically, and can be revoked from one dashboard.
Can I limit what the agent does in Fever?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example city discovery without event search. Scalekit also enforces scope checks before every API call.
What happens when a user revokes access?
The credential is invalidated at the next tool call. The call fails closed, other users' connections are unaffected, and the revocation is logged in the audit chain.
Can the agent book tickets on Fever?
No. The connector exposes 2 tools, search_cities and search_events, so agents handle discovery and the user completes any purchase in Fever. That boundary is enforced by Scalekit's tool scoping, not by prompt instructions.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""fevermcp"": {
""url"": ""https://mcp.scalekit.com/fevermcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.fevermcp]
url = ""https://mcp.scalekit.com/fevermcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""fevermcp"": {
""url"": ""https://mcp.scalekit.com/fevermcp"",
""type"": ""http""
}
}
}