ScalePad MCP 2.0
Connect your AI client to ScalePad with OAuth, discover product tools, and start with a read-only request.
Connect your AI assistant or editor to ScalePad to retrieve product data and perform supported actions using the Model Context Protocol (MCP). The product MCP server exposes tools backed by ScalePad APIs and runs requests as the signed-in ScalePad user.
Before you connect
You need a ScalePad user account and an AI client that supports remote MCP servers over Streamable HTTP with OAuth authentication. Product-specific workflows depend on the user's product access. The underlying APIs enforce permissions for individual requests.
Use this connection information:
| Setting | Value |
|---|---|
| Server URL | https://mcp.scalepad.com/mcp |
| Transport | Streamable HTTP |
| Authentication | OAuth through ScalePad sign-in |
| Required scope | mcp:tools |
| Token audience | https://mcp.scalepad.com/mcp |
The mcp:tools scope allows access to the MCP endpoint. It does not grant additional product permissions or restrict a connection to read-only operations.
Connect your AI client
Add the server URL, complete the client's OAuth sign-in flow, and enable the tools you want to use. You do not need to run the ScalePad server locally or configure an LLM API key for it.
The examples below show client configuration formats. OAuth registration and callback support must also work for your client. If sign-in fails, see Troubleshooting.
Run:
codex mcp add scalepad-products --url https://mcp.scalepad.com/mcp
codex mcp login scalepad-products --scopes mcp:toolsComplete ScalePad sign-in in the browser. Start a new Codex session to load the tools. See the official OpenAI MCP documentation.
Run:
claude mcp add --transport http scalepad-products https://mcp.scalepad.com/mcpIn Claude Code, open /mcp, select the server, and authenticate. See the Claude Code MCP documentation.
Add this entry to your existing ~/.cursor/mcp.json, or use .cursor/mcp.json for a project:
{
"mcpServers": {
"scalepad-products": {
"url": "https://mcp.scalepad.com/mcp"
}
}
}Use Cursor's MCP settings to complete sign-in and enable the server. See the Cursor MCP documentation.
Add this entry to your existing .vscode/mcp.json:
{
"servers": {
"scalepad-products": {
"type": "http",
"url": "https://mcp.scalepad.com/mcp"
}
}
}Run MCP: List Servers in the Command Palette, select the server, start it, and complete authentication when prompted. Enable the tools in your chat session. See the VS Code MCP documentation.
Use the client's remote MCP connection settings with the server URL above. Select OAuth authentication when that option is available. Clients that support only local processes, API keys, or the legacy HTTP+SSE transport need additional integration support.
Try your first request
Start with a small read-only task:
Use ScalePad to list up to five clients. Show their names and IDs, and tell me if more results are available. Do not make any changes.
Your client discovers the tools available to your user and selects the appropriate workflow. Depending on your product access, you can also try:
- "Find the client named Contoso and summarize its hardware inventory."
- "List the open tickets for this client."
- "Summarize this client's backup health."
- "Show the risks and outstanding tasks in my ControlMap account."
- "Find recent Quoter quotes for this client."
Ask the client to identify the record before requesting changes. Use IDs returned by ScalePad to avoid selecting the wrong client or record.
How tools are organized
Tools group related API operations into workflows. For example, clients.query contains client read operations, and clients.manage contains client write operations.
| Area | Example tools | Typical tasks |
|---|---|---|
| Clients, contacts, and agreements | clients.query, contacts.query, agreements.query | Find records and inspect client or agreement details. |
| Assets | assets.hardware.query, assets.software.query, assets.licensing.query | Retrieve inventory and licensing information. |
| Core | core.tickets.query, core.opportunities.query, core.integrations.query | Inspect operational records and integrations. |
| Lifecycle Manager | lm.plan.query, lm.assessments.query, lm.tasks.manage | Review plans and assessments, or perform supported task updates. |
| ControlMap | controlmap.risks.query, controlmap.controls.query, controlmap.tasks.manage | Inspect compliance records and perform supported updates. |
| Quoter | quoter.quotes.query, quoter.contacts.query, quoter.catalog.query | Retrieve quotes, contacts, and catalog records. |
| Backup Radar | br.health.query, br.devices.query, br.backups.manage | Retrieve backup health and devices, or ingest backup results. |
This table gives examples. The authenticated tools/list response is the reference for the names, operations, and schemas available to your connection.
Each generated workflow takes an operation and its arguments. Operation arguments use path, query, and body where the corresponding API requires them. For example, a client list call uses:
{
"operation": "list_clients",
"arguments": {
"query": {
"page_size": 5
}
}
}The server filters product operations using the authenticated user's product access. For overlapping client, contact, agreement, and hardware operations, it prefers the Lifecycle Manager operation when the user has that access; otherwise, the corresponding Core operation can remain available. Parameters and response fields can differ between those APIs, so use the schema returned by discovery.
Read and write behavior
Generated tools separate query operations from management operations and publish MCP annotations such as readOnlyHint and destructiveHint. These hints help clients display and approve calls; they are not authorization controls.
Review writes before approving themA write sent through
tools/callexecutes immediately after validation and authorization. The product MCP server does not create a pending action or display the ScalePad Assistant's confirmation screen. Configure your AI client's approval controls before enabling management tools, and review the selected record and proposed change before approving a write.
For a connection intended only for analysis, enable query tools and keep management tools disabled in the client. The mcp:tools scope itself covers both reads and writes.
Authentication for custom clients
Fetch the protected resource metadata:
curl --fail-with-body https://mcp.scalepad.com/.well-known/oauth-protected-resource/mcpProduction advertises:
{
"resource": "https://mcp.scalepad.com/mcp",
"authorization_servers": ["https://auth.scalepad.com/"],
"bearer_methods_supported": ["header"],
"scopes_supported": ["mcp:tools"]
}Unauthenticated MCP requests return 401 Unauthorized with a challenge identifying that document and the required scope:
WWW-Authenticate: Bearer resource_metadata="https://mcp.scalepad.com/.well-known/oauth-protected-resource/mcp", scope="mcp:tools"Use the advertised authorization server's discovery metadata to establish OAuth endpoints and supported client registration. For interactive user connections, use authorization code with PKCE and an allowed callback URI. Acquire an access token for the exact MCP resource audience and request mcp:tools. The authorization server advertises a registration endpoint, but registration policy and support for your redirect URI determine whether registration succeeds.
Send Authorization: Bearer <access-token> on every MCP request. A token for another API audience or an ID token is not a substitute. Authentication must resolve a ScalePad account and user, so the issuer advertising a client-credentials grant does not establish support for unattended service-account MCP access.
Make a read-only request with HTTP
These examples are for developers building or diagnosing an MCP client. First obtain an MCP access token through OAuth and make it available as SCALEPAD_MCP_ACCESS_TOKEN in your shell. Do not commit tokens to configuration files or share them in logs.
Initialize the connection:
curl --fail-with-body https://mcp.scalepad.com/mcp \
-H "Authorization: Bearer ${SCALEPAD_MCP_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"scalepad-example","version":"1.0.0"}}}'The server supports protocol versions 2025-11-25 and 2025-06-18. Use the negotiated version returned by initialization for subsequent requests. The commands below assume it returned 2025-11-25.
Send the initialized notification, which returns HTTP 202 with no response body:
curl --fail-with-body https://mcp.scalepad.com/mcp \
-H "Authorization: Bearer ${SCALEPAD_MCP_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","method":"notifications/initialized"}'Discover tools and their input schemas:
curl --fail-with-body https://mcp.scalepad.com/mcp \
-H "Authorization: Bearer ${SCALEPAD_MCP_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'If clients.query advertises list_clients, request a small page:
curl --fail-with-body https://mcp.scalepad.com/mcp \
-H "Authorization: Bearer ${SCALEPAD_MCP_ACCESS_TOKEN}" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-H 'MCP-Protocol-Version: 2025-11-25' \
--data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"clients.query","arguments":{"operation":"list_clients","arguments":{"query":{"page_size":5}}}}}'The two arguments objects are intentional: the outer one contains the workflow operation, and the inner one contains that operation's API parameters.
The server returns JSON-RPC results as JSON. Tool results include structuredContent, a text representation in content, and an isError flag. Successful generated API results contain source, operation, operation_id, status_code, and the API response under data. Response data follows the selected product API's contract.
For paginated operations, follow the selected API's cursor fields and pass the returned cursor in the next call's query. Request small pages and select fields when the discovered schema supports that option.
Protocol behavior
The endpoint uses stateless HTTP POST requests and does not issue an MCP session ID. It supports initialize, ping, tools/list, and tools/call. Notifications return HTTP 202 without a JSON-RPC response. It advertises tools with listChanged: false; it does not advertise resources or prompts. Reconnect or refresh discovery after changes to your product access.
Send one JSON-RPC object per request. The request body limit is 1 MiB. Use /mcp on the product server hostname; a browser GET request or an SSE subscription is not a tool call.
Troubleshooting
| Symptom | What to check |
|---|---|
401 Unauthorized | Complete OAuth sign-in again. Check token expiry, the exact MCP audience, mcp:tools, and whether authentication resolves a ScalePad account and user. A missing required scope also returns 401. |
OAuth registration fails, unauthorized_client, or callback mismatch | Check the client's OAuth registration method, allowed redirect URI, and grant configuration. Discovery metadata alone does not prove a particular client can sign in. |
| Expected tool or operation is missing | Confirm product access for the signed-in user, refresh discovery, and check that you connected to the product MCP server. Some API operations are intentionally excluded. |
| Unknown tool or operation | Use the names returned by the current tools/list response. Names in a stale client cache can differ. |
validation_error or JSON-RPC -32602 | Follow the operation's discovered schema. Check the nested arguments, required path values, query names, and body shape. Structured validation errors identify invalid fields. |
| HTTP succeeds but the task fails | Check both the top-level JSON-RPC error and tool result isError. HTTP 200 alone does not establish successful tool execution. |
public_api_error | Inspect the result's status_code and message. The underlying API can reject permissions or missing records, apply validation, or rate limit requests. Correct validation errors before retrying. |
HTTP 404 or method error | Check the exact server hostname and /mcp path, and use HTTP POST for protocol requests. |
| File upload or download is unavailable | Binary, multipart, and signed-file workflows are excluded from the product MCP catalog. Use the appropriate product API or UI for those workflows. |
If a write times out or its outcome is uncertain, check the affected record before submitting it again. MCP calls do not inherit the ScalePad Assistant's confirmation-token replay protection.
To disconnect, disable or remove the server in your AI client and use its authentication controls to clear stored credentials.
Updated 16 days ago
