Swarm insights
Project swarm roll-up
Recent runs with their goal-completion rates and repeat-failure findings, plus a project-wide trend. Deterministic and free — start here.
GET
/
projects
/
{projectId}
/
journeys-overview
Project swarm roll-up
curl --request GET \
--url https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview', 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.mcpjam.com/api/v1/projects/{projectId}/journeys-overview",
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.mcpjam.com/api/v1/projects/{projectId}/journeys-overview"
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.mcpjam.com/api/v1/projects/{projectId}/journeys-overview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview")
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{
"runs": [
{
"runId": "<string>",
"journeyId": "<string>",
"journeyName": "<string>",
"journeyArchived": true,
"personaName": "<string>",
"status": "<string>",
"summary": {
"total": 123,
"succeeded": 123,
"failed": 123,
"rateLimited": 123
},
"goalCompletion": {
"gradedCount": 123,
"passedCount": 123,
"avgScore": 123,
"pendingCount": 123,
"failedCount": 123
},
"findings": [
{
"criterionId": "<string>",
"label": "<string>",
"kind": "<string>",
"failCount": 123,
"pendingCount": 123,
"failedGradingCount": 123,
"sessionsGraded": 123,
"runStreak": 123
}
],
"targets": [
{
"hostName": "<string>",
"modelId": "<string>",
"environmentName": "<string>"
}
],
"createdAt": 123,
"waveId": "<string>"
}
],
"runsConsidered": 123,
"goalCompletion": {
"gradedCount": 123,
"passedCount": 123,
"passRate": 123,
"runsWithGrades": 123,
"trend": [
{
"dayStartMs": 123,
"gradedCount": 123,
"passedCount": 123,
"passRate": 123
}
]
}
}
Authorizations
MCPJam API key (sk_…). Create one at Settings → API keys. Guest sessions cannot use the API, and API keys cannot manage other API keys.
Path Parameters
ID of the hosted project that contains the server.
Was this page helpful?
⌘I
Project swarm roll-up
curl --request GET \
--url https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview', 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.mcpjam.com/api/v1/projects/{projectId}/journeys-overview",
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.mcpjam.com/api/v1/projects/{projectId}/journeys-overview"
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.mcpjam.com/api/v1/projects/{projectId}/journeys-overview")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.mcpjam.com/api/v1/projects/{projectId}/journeys-overview")
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{
"runs": [
{
"runId": "<string>",
"journeyId": "<string>",
"journeyName": "<string>",
"journeyArchived": true,
"personaName": "<string>",
"status": "<string>",
"summary": {
"total": 123,
"succeeded": 123,
"failed": 123,
"rateLimited": 123
},
"goalCompletion": {
"gradedCount": 123,
"passedCount": 123,
"avgScore": 123,
"pendingCount": 123,
"failedCount": 123
},
"findings": [
{
"criterionId": "<string>",
"label": "<string>",
"kind": "<string>",
"failCount": 123,
"pendingCount": 123,
"failedGradingCount": 123,
"sessionsGraded": 123,
"runStreak": 123
}
],
"targets": [
{
"hostName": "<string>",
"modelId": "<string>",
"environmentName": "<string>"
}
],
"createdAt": 123,
"waveId": "<string>"
}
],
"runsConsidered": 123,
"goalCompletion": {
"gradedCount": 123,
"passedCount": 123,
"passRate": 123,
"runsWithGrades": 123,
"trend": [
{
"dayStartMs": 123,
"gradedCount": 123,
"passedCount": 123,
"passRate": 123
}
]
}
}

