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:

SettingValue
Server URLhttps://mcp.scalepad.com/mcp
TransportStreamable HTTP
AuthenticationOAuth through ScalePad sign-in
Required scopemcp:tools
Token audiencehttps://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:tools

Complete ScalePad sign-in in the browser. Start a new Codex session to load the tools. See the official OpenAI MCP documentation.

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.

AreaExample toolsTypical tasks
Clients, contacts, and agreementsclients.query, contacts.query, agreements.queryFind records and inspect client or agreement details.
Assetsassets.hardware.query, assets.software.query, assets.licensing.queryRetrieve inventory and licensing information.
Corecore.tickets.query, core.opportunities.query, core.integrations.queryInspect operational records and integrations.
Lifecycle Managerlm.plan.query, lm.assessments.query, lm.tasks.manageReview plans and assessments, or perform supported task updates.
ControlMapcontrolmap.risks.query, controlmap.controls.query, controlmap.tasks.manageInspect compliance records and perform supported updates.
Quoterquoter.quotes.query, quoter.contacts.query, quoter.catalog.queryRetrieve quotes, contacts, and catalog records.
Backup Radarbr.health.query, br.devices.query, br.backups.manageRetrieve 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 them

A write sent through tools/call executes 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/mcp

Production 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

SymptomWhat to check
401 UnauthorizedComplete 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 mismatchCheck 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 missingConfirm 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 operationUse the names returned by the current tools/list response. Names in a stale client cache can differ.
validation_error or JSON-RPC -32602Follow 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 failsCheck both the top-level JSON-RPC error and tool result isError. HTTP 200 alone does not establish successful tool execution.
public_api_errorInspect 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 errorCheck the exact server hostname and /mcp path, and use HTTP POST for protocol requests.
File upload or download is unavailableBinary, 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.


Did this page help you?