curl --request GET \
--url https://app.base44.com/api/apps/platform/{app_id}/mcp-status \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/platform/{app_id}/mcp-status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/platform/{app_id}/mcp-status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/platform/{app_id}/mcp-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/platform/{app_id}/mcp-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/platform/{app_id}/mcp-status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/platform/{app_id}/mcp-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"active": true,
"published": true,
"endpoint": "https://my-crm-3c45a1f2.base44.app/api/mcp",
"auth": "oauth",
"tools": [
{
"name": "query_task",
"description": "Find Task records by ID or filter.",
"kind": "entity",
"title": "Query tasks",
"handler": "sendInvoice",
"read_only_hint": true,
"public": false
}
],
"effective_public_settings": "public_with_login",
"workspace_policy": "allow"
}Get MCP status
Returns the app’s live MCP server. That covers whether AI clients can connect to it now, its endpoint, how clients authenticate, and the tools it serves.
This reports what the last publish put live, not the config you’re editing. Read that with Get MCP config. A server is only active while the app is published, and a workspace rule can turn it off without a publish, which workspace_policy tells you.
This is limited to 120 requests a minute for each app. Some workspaces have a different limit.
curl --request GET \
--url https://app.base44.com/api/apps/platform/{app_id}/mcp-status \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/platform/{app_id}/mcp-status"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/platform/{app_id}/mcp-status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/platform/{app_id}/mcp-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/platform/{app_id}/mcp-status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/platform/{app_id}/mcp-status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/platform/{app_id}/mcp-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"active": true,
"published": true,
"endpoint": "https://my-crm-3c45a1f2.base44.app/api/mcp",
"auth": "oauth",
"tools": [
{
"name": "query_task",
"description": "Find Task records by ID or filter.",
"kind": "entity",
"title": "Query tasks",
"handler": "sendInvoice",
"read_only_hint": true,
"public": false
}
],
"effective_public_settings": "public_with_login",
"workspace_policy": "allow"
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app.
Response
The app's live MCP server.
The app's live MCP server.
Whether AI clients can use the server right now. It's false until the app is published, while it's unpublished or blocked, when the workspace has turned MCP off or requires oauth from a none server, and when a none server's app requires visitors to log in.
true
Whether a publish has put an MCP server live for the app.
true
URL AI clients connect to, or null when the app has no address yet.
"https://my-crm-3c45a1f2.base44.app/api/mcp"
How clients authenticate with the live server, or null when none is published. Either "oauth", where clients sign in, or "none", where anyone can call the public tools.
none, oauth "oauth"
Tools the live server serves. A none server lists only its public tools.
Show child attributes
Show child attributes
Who can open the app after its next publish, once workspace SSO rules apply. A none server only works while this is public_without_login.
"public_with_login"
The workspace's rule for app MCP servers. Either "allow", "oauth_only", which stops none servers, or "disabled", which stops every server in the workspace.
"allow"
Was this page helpful?