curl --request POST \
--url https://statusstack.com/api/v1/mcp/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "tools/list"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({jsonrpc: '2.0', method: 'tools/list'})
};
fetch('https://statusstack.com/api/v1/mcp/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://statusstack.com/api/v1/mcp/messages"
payload = {
"jsonrpc": "2.0",
"method": "tools/list"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"jsonrpc": "2.0",
"id": "<string>",
"result": "<unknown>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}Send an MCP JSON-RPC message
The MCP Streamable HTTP transport endpoint. Accepts one JSON-RPC 2.0 message; a request
(with id) returns its JSON-RPC response, and a notification (no id) returns 202 with no
body. Protocol-level failures inside a well-formed request are reported as a 200 carrying a
JSON-RPC error, per the JSON-RPC specification. Rate limits are described on the 429
response.
GET and DELETE answer 405 Method Not Allowed with Allow: POST: this server offers no
server-initiated SSE stream and no session termination.
curl --request POST \
--url https://statusstack.com/api/v1/mcp/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"jsonrpc": "2.0",
"method": "tools/list"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({jsonrpc: '2.0', method: 'tools/list'})
};
fetch('https://statusstack.com/api/v1/mcp/messages', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://statusstack.com/api/v1/mcp/messages"
payload = {
"jsonrpc": "2.0",
"method": "tools/list"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"jsonrpc": "2.0",
"id": "<string>",
"result": "<unknown>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}{
"jsonrpc": "2.0",
"error": {
"code": 123,
"message": "<string>",
"data": {}
},
"id": "<string>"
}Authorizations
MCP credentials, distinct from v1 API keys. Either an MCP connection key (mcp_sk_...,
created from the customer dashboard) or an OAuth 2.1 access token carrying the mcp:use
scope. Credentials are never accepted in the query string. A refused request answers
401 with a WWW-Authenticate header naming the protected resource metadata, so
OAuth-capable clients can discover the authorization server.
Body
2.0 Requests: initialize, ping, tools/list, tools/call, resources/list,
resources/read, prompts/list; any other method with an id answers JSON-RPC
-32601. Notifications (no id), such as notifications/initialized, are accepted
whatever their method.
"tools/list"
Omit to send a notification, which is acknowledged with 202 and no body.
Was this page helpful?

