Create Agent Config
curl --request POST \
--url https://api.egp.scale.com/v5/agent_configs \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"system_prompt": "<string>",
"model": "<string>",
"description": "<string>",
"allowed_tools": []
}
'import requests
url = "https://api.egp.scale.com/v5/agent_configs"
payload = {
"name": "<string>",
"system_prompt": "<string>",
"model": "<string>",
"description": "<string>",
"allowed_tools": []
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
system_prompt: '<string>',
model: '<string>',
description: '<string>',
allowed_tools: []
})
};
fetch('https://api.egp.scale.com/v5/agent_configs', 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.egp.scale.com/v5/agent_configs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'system_prompt' => '<string>',
'model' => '<string>',
'description' => '<string>',
'allowed_tools' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.egp.scale.com/v5/agent_configs"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"model\": \"<string>\",\n \"description\": \"<string>\",\n \"allowed_tools\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.egp.scale.com/v5/agent_configs")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"model\": \"<string>\",\n \"description\": \"<string>\",\n \"allowed_tools\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v5/agent_configs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"model\": \"<string>\",\n \"description\": \"<string>\",\n \"allowed_tools\": []\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"system_prompt": "<string>",
"harness": "<string>",
"allowed_tools": [
"<string>"
],
"model": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"object": "agent_config",
"description": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Agent Configs
Create Agent Config
POST
/
v5
/
agent_configs
Create Agent Config
curl --request POST \
--url https://api.egp.scale.com/v5/agent_configs \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"system_prompt": "<string>",
"model": "<string>",
"description": "<string>",
"allowed_tools": []
}
'import requests
url = "https://api.egp.scale.com/v5/agent_configs"
payload = {
"name": "<string>",
"system_prompt": "<string>",
"model": "<string>",
"description": "<string>",
"allowed_tools": []
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
system_prompt: '<string>',
model: '<string>',
description: '<string>',
allowed_tools: []
})
};
fetch('https://api.egp.scale.com/v5/agent_configs', 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.egp.scale.com/v5/agent_configs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'system_prompt' => '<string>',
'model' => '<string>',
'description' => '<string>',
'allowed_tools' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.egp.scale.com/v5/agent_configs"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"model\": \"<string>\",\n \"description\": \"<string>\",\n \"allowed_tools\": []\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.egp.scale.com/v5/agent_configs")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"model\": \"<string>\",\n \"description\": \"<string>\",\n \"allowed_tools\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.egp.scale.com/v5/agent_configs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"system_prompt\": \"<string>\",\n \"model\": \"<string>\",\n \"description\": \"<string>\",\n \"allowed_tools\": []\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"system_prompt": "<string>",
"harness": "<string>",
"allowed_tools": [
"<string>"
],
"model": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"object": "agent_config",
"description": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Headers
Body
application/json
Required string length:
1 - 255Required string length:
1 - 100000Harness strategy. See Harness enum for supported values.
Available options:
claude-code, codex, litellm Required string length:
1 - 255Maximum string length:
2000Tools enabled for this config. See AllowedTool enum for the catalogue.
Tools an agent config may be granted.
Granting an MCP server name (Slack, Linear, etc.) authorizes every tool exposed by that server, scoped via the agent's credentials.
Available options:
Read, Write, Edit, Bash, Glob, Grep, List, WebFetch, WebSearch, Task, TodoWrite, NotebookEdit, ExitPlanMode, Slack, Linear, GitHub, Confluence, Notion, Datadog, PagerDuty, Salesforce, Figma, Granola Response
Successful Response

