curl --request GET \
--url https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness', 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://api.runaether.dev/v1/projects/{id}/mcp-server-readiness",
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://api.runaether.dev/v1/projects/{id}/mcp-server-readiness"
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://api.runaether.dev/v1/projects/{id}/mcp-server-readiness")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness")
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{
"optional_servers": [
{
"display_name": "<string>",
"key": "<string>",
"policy": "creator",
"reason": "not_connected",
"repo": {
"cataloged": true,
"file": ".mcp.json"
}
}
],
"repo_mcp_server_skips": [
{
"file": ".mcp.json",
"reason": "<string>",
"server": "<string>"
}
],
"servers": [
{
"display_name": "<string>",
"key": "<string>",
"policy": "creator",
"reason": "not_connected",
"repo": {
"cataloged": true,
"file": ".mcp.json"
}
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"code": "org_membership_required",
"error": "<string>"
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}Check whether your tasks in a project can start
Lists the required MCP servers the project enables, and those its repository’s .mcp.json and .codex/config.toml declare at base_branch, that creating a task there would be refused for (mcp_server_not_connected): those whose connection its credential policy names — yours for the creator policy, the organization’s for the org policy — does not exist or needs reauthorization. Task creation runs the same check. Empty when your tasks can start. A repository file a task cannot use is refused (mcp_repo_config_invalid).
curl --request GET \
--url https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness', 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://api.runaether.dev/v1/projects/{id}/mcp-server-readiness",
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://api.runaether.dev/v1/projects/{id}/mcp-server-readiness"
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://api.runaether.dev/v1/projects/{id}/mcp-server-readiness")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.runaether.dev/v1/projects/{id}/mcp-server-readiness")
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{
"optional_servers": [
{
"display_name": "<string>",
"key": "<string>",
"policy": "creator",
"reason": "not_connected",
"repo": {
"cataloged": true,
"file": ".mcp.json"
}
}
],
"repo_mcp_server_skips": [
{
"file": ".mcp.json",
"reason": "<string>",
"server": "<string>"
}
],
"servers": [
{
"display_name": "<string>",
"key": "<string>",
"policy": "creator",
"reason": "not_connected",
"repo": {
"cataloged": true,
"file": ".mcp.json"
}
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"code": "org_membership_required",
"error": "<string>"
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}{
"error": "<string>",
"code": "<string>",
"errors": [
{
"location": "<string>",
"message": "<string>",
"value": "<unknown>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Query Parameters
The branch the task would be based on, whose .mcp.json and .codex/config.toml are checked; the project's default branch when omitted.
Response
OK
The optional servers of the project's catalog and of the plugins it enables that the viewer's tasks start without, since their connection cannot be used: a task is created, and its agent is not given them. Ordered by key; empty when none. Never a server the task's repository declares.
Show child attributes
Show child attributes
The declarations of the repository's .mcp.json and .codex/config.toml the viewer's tasks start without, since Aether cannot use them, in the order found; empty when none.
Show child attributes
Show child attributes
The required servers task creation refuses the viewer's tasks for (mcp_server_not_connected), ordered by key; empty when none.
Show child attributes
Show child attributes