PlatformMCP Early access

The Fantasti API, in the language agents speak.

A remote MCP server for Cursor, VS Code, Codex and other MCP clients such as coding agents and editors. It gives your agent tools to list GPUs, start a sandbox, submit a job, read logs and check spend. It signs in as you or with a scoped key, and it works inside the limits your admins set.

Opens with the first cohort. No account is open yet.

{
  "mcpServers": {
    "fantasti": {
      "type": "http",
      "url": "https://mcp.fantasti.ai/mcp"
    }
  }
}

Where it goes

.mcp.json · project root · OAuth sign-in
{
  "mcpServers": {
    "fantasti": {
      "url": "https://mcp.fantasti.ai/mcp"
    }
  }
}

Where it goes

.cursor/mcp.json · OAuth sign-in
{
  "servers": {
    "fantasti": {
      "type": "http",
      "url": "https://mcp.fantasti.ai/mcp"
    }
  }
}

Where it goes

.vscode/mcp.json · OAuth sign-in
codex mcp add fantasti \
  --url https://mcp.fantasti.ai/mcp
codex mcp login fantasti

Where it goes

~/.codex/config.toml · OAuth sign-in

Tools your agent gets Asks first12 tools Early access

Catalog
gpus_list
1
Sandboxes
sandboxes_createsandboxes_execsandboxes_read_filesandboxes_write_filesandboxes_delete (asks first)
5
Workspaces
workspaces_listworkspaces_startworkspaces_stop (asks first)
3
Jobs
jobs_createjobs_logs A launch above the key's per-call budget
2
Usage
usage_get
1

Preview · answers with the first cohort

Server
mcp.fantasti.ai/mcp
Transport
Streamable HTTP
Sign-in
OAuth · scoped agent key
Tools
12 early access · 25 planned
§01 Sign in Preview API

Two ways to sign in.

OAuth, for a person at a keyboard.

Your client opens the Fantasti sign-in page. You choose the project and the scopes. Revoke the session from the console at any time.

Sign-in with OAuth. Illustrative.

Fantasti sign-in OAuth Illustrative

Request

Your MCP client asks to use Fantasti as you.

mcp.fantasti.ai/mcp

ProjectChoose one

  • evalsChosen
  • research

Scopes3 of 5 tool groups

  • catalog1 tool (not granted)
  • sandboxes5 tools (granted)
  • workspaces3 tools (not granted)
  • jobs2 tools (granted)
  • usage1 tool (granted)

Session ready 8 tools in reach

Agent key, for an agent that runs without you.

A key carries its own scopes, project, spend budget and expiry. It is shown once.

Preview API · subject to change
{
  "mcpServers": {
    "fantasti": {
      "type": "http",
      "url": "https://mcp.fantasti.ai/mcp?features=sandboxes,jobs&project=evals",
      "headers": { "Authorization": "Bearer ${FANTASTI_AGENT_KEY}" }
    }
  }
}

What the key carries

scopes    sandboxes · jobs
project   evals
budget    a spend limit you set
expiry    a date you set
shown     once
# An agent you build yourself, on the open-source MCP Python SDK
import asyncio, os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client

URL = "https://mcp.fantasti.ai/mcp/readonly"   # read tools, no writes
KEY = {"Authorization": f"Bearer {os.environ['FANTASTI_AGENT_KEY']}"}

async def main():
    async with streamablehttp_client(URL, headers=KEY) as (r, w, _):
        async with ClientSession(r, w) as session:
            await session.initialize()
            tools = await session.list_tools()
            args = {"resource": "job_4h1x"}
            used = await session.call_tool("usage_get", args)

asyncio.run(main())
§02 Tools Reviewed 2026-10-09
TAB 01MCP tool groups Source · Fantasti Reviewed 2026-10-09
MCP tool groups: the tools in each group, whether the group reads or writes, what asks for confirmation, and its status.
Group Tools Kind Confirmation Status
Early access12 tools · 5 groups
Catalog1 tool
  • gpus_list
Read None Early access
Sandboxes5 tools
  • sandboxes_create
  • sandboxes_exec
  • sandboxes_read_file
  • sandboxes_write_file
  • sandboxes_delete (asks before it runs)
Write sandboxes_delete Early access
Workspaces3 tools
  • workspaces_list
  • workspaces_start
  • workspaces_stop (asks before it runs)
Write workspaces_stop Early access
Jobs2 tools
  • jobs_create
  • jobs_logs
Write A launch above the key's per-call budget Early access
Usage1 tool
  • usage_get
Read None Early access
Planned25 tools · 8 groups
Batch3 tools
  • batch_create
  • batch_get
  • batch_cancel (asks before it runs)
Write batch_cancel; a launch above budget Planned
Flows6 tools
  • flows_list
  • flows_trigger (asks before it runs)
  • runs_get
  • runs_logs
  • runs_resume (asks before it runs)
  • artifacts_read
Write flows_trigger, runs_resume Planned
Broker3 tools
  • broker_plan
  • broker_record
  • capacity_outlook
Read None Planned
Quota2 tools
  • quotas_list
  • quotas_request
Read, request A request opens a case Planned
Clusters4 tools
  • clusters_list
  • clusters_get
  • clusters_create (asks before it runs)
  • clusters_delete (asks before it runs)
Write Create and delete Planned
Records3 tools
  • decisions_list
  • placements_get
  • statement_get
Read None Planned
Support3 tools
  • docs_search
  • support_open_ticket
  • support_get_ticket
Write None Planned
Changelog1 tool
  • changelog_list
Read None Planned

A tool with this mark returns a confirmation step before it runs.

Sheet
01 / 02
Title
MCP server · tool groups
Tools
37 in 13 groups
Reviewed
2026-10-09
EQ Early access See §02

12 tools in early access.

5 groups · 12 tools
EQ 01 Source · Fantasti MCP tool list Reviewed 2026-10-09

25 more tools are planned, in 8 groups. Every group carries its status in the tool list.

Read the tool list

§03 Context Source · Fantasti

Built for a context window.

TAB 02Three URLs, three habits Source · Fantasti
  1. Load what you need.

    https://mcp.fantasti.ai/mcp?features=sandboxes,jobs

    ?features=sandboxes,jobs exposes those groups and nothing else.

    Reaches
    Sandboxes · Jobs7 tools
    Out of reach
    Catalog · Workspaces · Usage
  2. Read access.

    https://mcp.fantasti.ai/mcp/readonly

    /mcp/readonly exposes read tools and cannot reach a write.

    Reaches
    Read tools
    Out of reach
    Every write
  3. One project.

    https://mcp.fantasti.ai/mcp?project=evals

    ?project=evals pins a session to one project.

    Reaches
    Project evals
    Out of reach
    Every other project
Two tools for the whole API. Planned
fantasti_search finds an operation and fantasti_call runs it, so the tool list stays short however large the API grows.
Answers sized for a model.
Lists are paged, logs are tailed, and every result carries ids your agent can pass to the next call.
Stable order.
Tools are returned in the same order every time, which keeps prompt caches warm.
§04 Guardrails Enforced by the server

Guardrails.

  • Scope Scoped keys. A key reaches the tool groups, the project and the capacity modes you name. tool groups · project · capacity modes
  • Policy Your limits apply. Quotas, spend caps and price ceilings from your policy apply to agents exactly as they apply to people. An agent cannot raise them. quotas · spend caps · price ceilings
  • Confirm Asks before it deletes or spends. Destructive tools, and launches above the key's per-call budget, return a confirmation step. A person approves in the client or in the console. sandboxes_delete · workspaces_stop
  • Budget Budget per key. Give an agent key a spend budget and an expiry. At the budget, new launches stop. Authorization: Bearer ${FANTASTI_AGENT_KEY}
  • Record Every call on record. Each tool call is logged with the key, the client, the arguments and the result. key · client · arguments · result

Keep your client's tool approval on, and take care when you combine MCP servers. Text returned by a tool is data, not an instruction.

§05 A session Illustrative

One prompt, five tool calls.

The agent checks the catalog, starts a closed-network sandbox, runs the suite, reads the meter and cleans up. The delete waits for a yes.

TAB 03Tool calls for one prompt illustrative

Agent session

PromptRun the eval suite on one L40S with no network, and tell me what it used.

  1. fantasti.gpus_list (read) { "gpu": "L40S" } available
  2. fantasti.sandboxes_create (write) { "gpu": "L40S", "ttl": "15m", "network": "closed" } sb_7q2m… ready
  3. fantasti.sandboxes_exec (write) { "id": "sb_7q2m…", "cmd": "pytest -q" } exit 0
  4. fantasti.usage_get (read) { "resource": "sb_7q2m…" } 412 GPU·s
  5. fantasti.sandboxes_delete (write) { "id": "sb_7q2m…" } confirm? yes ended

Answer

The suite passed. It used 412 GPU·s on one L40S, and the sandbox has ended.

Metered
412GPU·s
Tool calls
5
Confirmation
1
Sandbox
ended
§06 Clients Reviewed 2026-10-09

Works with the clients you already use.

Streamable HTTP, MCP revision 2026-07-28, with 2025-11-25 for older clients.

Request path Schematic
One server, the same API. Schematic · not to scale.

An MCP client, or an agent you build yourself, connects to the Fantasti MCP server over Streamable HTTP. The server checks scopes, budgets and confirmations, writes the call to its log with the key, the client, the arguments and the result, and calls the Fantasti API. The SDK, the CLI and the console call the same API directly. Your policy, with its quotas, spend caps and price ceilings, is the boundary around the server and the API: it applies to every call. Connections: Your MCP client to MCP server: Streamable HTTP; Your own agent to MCP server; MCP server to Call log; SDK, CLI and console to Fantasti API: REST; MCP server to Fantasti API.

Your policyQuotas · spend caps · price ceilings
  • Your MCP client

    A coding agent or aneditor

    signs in
    OAuth
  • Your own agent

    Any SDK that supports MCP

    signs in
    agent key
  • SDK, CLI and console

    The tools your team uses

    signs in
    API key
  • MCP server (highlighted)
    mcp.fantasti.ai/mcp
    checks
    scopes · budgets
    asks
    before delete or spend
  • Fantasti API
    api.fantasti.ai/v1

    The same objects,ids and limits

  • RecordCall log
    • key
    • client
    • arguments
    • result
Your policySet by your admins
  • Your MCP client

    A coding agent or an editor

    signs in
    OAuth
  • Your own agent

    Any SDK that supports MCP

    signs in
    agent key
  • SDK, CLI and console

    The tools your team uses

    signs in
    API key
  • MCP server (highlighted)
    mcp.fantasti.ai/mcp
    checks
    scopes · budgets
    asks
    before delete or spend
  • Fantasti API
    api.fantasti.ai/v1

    The same objects,ids and limits

  • RecordCall log
    • key
    • client
    • arguments
    • result
  • Your MCP client

    A coding agent or an editor

    signs in
    OAuth
    to
    MCP server
  • Your own agent

    Any SDK that supports MCP

    signs in
    agent key
    to
    MCP server
  • Your policy

    Quotas, spend caps and price ceilings, setby your admins

    to
    Fantasti API
  • MCP server (highlighted)
    mcp.fantasti.ai/mcp
    checks
    scopes · budgets
    asks
    before delete or spend
    to
    Fantasti API
  • RecordCall log
    • key
    • client
    • arguments
    • result
  • Fantasti API
    api.fantasti.ai/v1

    The same objects,ids and limits

  • SDK, CLI and console

    The tools your team uses

    signs in
    API key
  • A tool call
  • The same API, without MCP
  • Editor Cursor .cursor/mcp.json
  • Editor VS Code .vscode/mcp.json
  • Coding agent Codex codex mcp add fantasti
  • Coding agents and editors Other MCP clients mcp.fantasti.ai/mcp
  • Any SDK that supports MCP Agents you build Authorization: Bearer ${FANTASTI_AGENT_KEY}
§07 Questions 5 questions

Is this a different API?

No. The MCP server calls the same API as the SDK and the console, with the same objects, ids and limits.

Can an agent run up a bill?

It can spend up to the budget on its key and inside your spend caps. At either limit, new launches stop.

OAuth or a key?

OAuth when a person is present. An agent key when the agent runs alone, for example in CI.

Can I host the server myself?

No. It is a remote server run by Fantasti. There is nothing to install.

Do Fantasti's own agents use it?

That is the design. Fantasti's own agents reach the platform through the same tools, with their own keys and limits.

Agents