Docs · static mirror — the interactive version loads with JavaScript.

MCP Tools

The four meta tools exposed by the Runstack MCP server — search_tools, check_authentication, initiate_connection, and execute_tool.

Source: https://runstack.engineer/docs/mcp-tools

The Runstack MCP server at https://app.runstack.engineer/mcp exposes four meta tools instead of hundreds of per-app tools. Clients (Cursor, VS Code, custom agents) call these to search the registry, handle OAuth, and run toolkit actions. Auth with Authorization: Bearer rnsk_… — see API Keys.

Individual toolkit tools live in the registry; the model discovers them through search_tools at runtime.

search_tools

Search the Runstack tool registry with a short natural-language query (2-5 keywords). Results are compact and ranked by relevance — top 5 by default.

search_tools({
  query: string,               // keywords, e.g. "github repo issues"
  toolkitIds?: string[],       // e.g. ["github"], restrict to toolkits
  scope?: "read" | "write" | "delete",
  limit?: number,              // default 5, max 5
  offset?: number,             // pagination when hasMore is true
  expand?: string              // exact tool name for its full input schema
})

Returns: Ranked compact matches (name, description, toolkitId, scope, score) plus total/returned/hasMore. Pass expand with an exact tool name to get its full input schema in the same response.

Example:

search_tools({ query: "github repo issues" })
search_tools({ query: "github repo issues", expand: "githubCreateIssue" })

Does not count toward your usage limit.


check_authentication

Verify that the current user has connected a provider required by a tool.

check_authentication({
  toolName: string   // exact tool name from search_tools
})

Returns:

// Authenticated
{ "authenticated": true, "toolName": "github_create_issue" }

// Not authenticated
{
  "authenticated": false,
  "toolName": "github_create_issue",
  "requiredAuth": "githubToken",
  "reason": "token_missing"
}

Reasons:

ReasonMeaning
no_auth_requiredTool works without a connection
token_missingProvider not connected in Runstack
user_not_foundAPI key user has no Runstack account

Does not count toward your usage limit.


initiate_connection

Get an OAuth URL the user can open to connect a provider.

initiate_connection({
  provider: string   // "github" | "notion" | "gmail" | "linear" | "google-sheets" | "googlecalendar"
})

Returns:

{
  "link": "https://app.runstack.engineer/auth/provider/github",
  "provider": "github"
}

The user opens the link, completes OAuth, then retries the tool call. Skip this when check_authentication returns authenticated: true.

Does not count toward your usage limit.


execute_tool

Execute any registered tool by name with the provided arguments.

execute_tool({
  toolName: string,                     // exact name from search_tools
  args: Record<string, unknown>         // key-value arguments
})

Returns:

// Success
{
  "toolName": "github_create_issue",
  "success": true,
  "result": { "number": 42, "url": "https://github.com/..." }
}

// Failure — invalid arguments
{
  "error": "Invalid arguments for tool",
  "toolName": "github_create_issue",
  "expectedParameters": { "owner": { "type": "string" } },
  "providedParameters": ["owner"]
}

// Failure — not connected
{
  "error": "Tool requires connection",
  "toolName": "github_create_issue",
  "requiredAuth": "githubToken",
  "message": "Use initiate_connection(provider) to connect."
}

Counts toward your usage limit. OAuth tokens are injected server-side — never pass tokens in args.


HTTP endpoint

POST https://app.runstack.engineer/mcp

Protocol: Streamable HTTP (JSON-RPC)

Auth: Authorization: Bearer rnsk_<your_api_key>

StatusMeaning
401Missing, invalid, or malformed API key
429Usage limit reached for this key
500Internal server error

Connect a client

ClientGuide
CursorCursor
VS CodeVS Code
WindsurfWindsurf
ZedZed
AntigravityAntigravity
Claude DesktopClaude Desktop
Claude CodeClaude Code
ChatGPTChatGPT
Codex CLICodex CLI
Gemini CLIGemini CLI
WarpWarp
JetBrains IDEsJetBrains
OpenCodeOpenCode
ClineCline
KiroKiro
LM StudioLM Studio
n8nn8n
GitHub Copilot CLIGitHub Copilot
Kilo CodeKilo Code
OpenClawOpenClaw
TraeTrae
Hermes AgentHermes
Custom agentCustom Agent

For stdio without hand-rolling transport, use @rnsk/mcp.