curl --request POST \
--url https://api.mnemom.ai/v1/dojo/try-me/resolve \
--header 'Content-Type: application/json' \
--data '
{
"token": "<string>"
}
'import requests
url = "https://api.mnemom.ai/v1/dojo/try-me/resolve"
payload = { "token": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({token: '<string>'})
};
fetch('https://api.mnemom.ai/v1/dojo/try-me/resolve', 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.mnemom.ai/v1/dojo/try-me/resolve",
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([
'token' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.mnemom.ai/v1/dojo/try-me/resolve"
payload := strings.NewReader("{\n \"token\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.mnemom.ai/v1/dojo/try-me/resolve")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mnemom.ai/v1/dojo/try-me/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"directive": "<string>",
"version": "<string>",
"token": "<string>",
"human_beats": [
{
"id": "name",
"n": 123,
"title": "<string>",
"prompt": "<string>",
"one_click": true
}
],
"human_beats_note": "<string>",
"mission": {
"scenario_id": "<string>",
"name": "<string>",
"role_system_prompt": "<string>",
"failure_conditions": {}
},
"model": {
"provider": "<string>",
"name": "<string>"
},
"gateway": {
"endpoint": "<string>",
"provider": "anthropic",
"model": "<string>",
"key_header": "<string>",
"agent_header": "<string>",
"provider_key": "<string>",
"birth_token": "<string>"
},
"declare": {
"alignment_card": {},
"protection_card": {},
"protection_mode": "nudge"
},
"bind": {
"endpoint": "<string>",
"config_id": "<string>"
},
"handoff": {
"name_question": "<string>",
"name_options": [
"<string>"
],
"signup_url": "<string>",
"claim_url_template": "<string>",
"claim_hash_recipe": "<string>",
"dojo_url": "<string>",
"grant_url_template": "<string>",
"cli_install": "<string>"
},
"steps": [
{
"n": 123,
"title": "<string>",
"body": "<string>",
"human_handoff": true
}
],
"state_machine": {
"initial": "orient",
"states": [
{
"id": "orient",
"description": "<string>",
"auth": {
"tier": "anon",
"doors": [
"mcp_step_up"
]
},
"next_action": {
"kind": "http",
"method": "GET",
"url": "<string>",
"headers": {},
"body_hint": "<string>",
"tool": "<string>",
"args_hint": "<string>"
},
"success_signal": "<string>",
"on_success": "orient",
"human_handoff": true
}
]
},
"auth_doors": {
"negotiation_hint": "<string>",
"doors": [
{
"id": "mcp_step_up",
"protocol": "RFC 6750",
"description": "<string>",
"use_when": "<string>",
"challenge": {
"status": 403,
"www_authenticate": "<string>",
"resource_metadata": "<string>"
},
"grant_url_template": "<string>",
"insufficient_scope_status": 123,
"grant_type": "<string>",
"device_authorization_endpoint": "<string>",
"token_endpoint": "<string>",
"registration_endpoint": "<string>",
"scopes_hint": "<string>",
"verification_uri": "<string>",
"poll_interval_seconds": 123
}
]
},
"instructions_markdown": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}Resolve a single-use Try-Me token to its briefing manifest (POST form).
POST equivalent of GET /dojo/try-me/resolve — token supplied in the JSON body.
curl --request POST \
--url https://api.mnemom.ai/v1/dojo/try-me/resolve \
--header 'Content-Type: application/json' \
--data '
{
"token": "<string>"
}
'import requests
url = "https://api.mnemom.ai/v1/dojo/try-me/resolve"
payload = { "token": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({token: '<string>'})
};
fetch('https://api.mnemom.ai/v1/dojo/try-me/resolve', 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.mnemom.ai/v1/dojo/try-me/resolve",
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([
'token' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.mnemom.ai/v1/dojo/try-me/resolve"
payload := strings.NewReader("{\n \"token\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.mnemom.ai/v1/dojo/try-me/resolve")
.header("Content-Type", "application/json")
.body("{\n \"token\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mnemom.ai/v1/dojo/try-me/resolve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"token\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"directive": "<string>",
"version": "<string>",
"token": "<string>",
"human_beats": [
{
"id": "name",
"n": 123,
"title": "<string>",
"prompt": "<string>",
"one_click": true
}
],
"human_beats_note": "<string>",
"mission": {
"scenario_id": "<string>",
"name": "<string>",
"role_system_prompt": "<string>",
"failure_conditions": {}
},
"model": {
"provider": "<string>",
"name": "<string>"
},
"gateway": {
"endpoint": "<string>",
"provider": "anthropic",
"model": "<string>",
"key_header": "<string>",
"agent_header": "<string>",
"provider_key": "<string>",
"birth_token": "<string>"
},
"declare": {
"alignment_card": {},
"protection_card": {},
"protection_mode": "nudge"
},
"bind": {
"endpoint": "<string>",
"config_id": "<string>"
},
"handoff": {
"name_question": "<string>",
"name_options": [
"<string>"
],
"signup_url": "<string>",
"claim_url_template": "<string>",
"claim_hash_recipe": "<string>",
"dojo_url": "<string>",
"grant_url_template": "<string>",
"cli_install": "<string>"
},
"steps": [
{
"n": 123,
"title": "<string>",
"body": "<string>",
"human_handoff": true
}
],
"state_machine": {
"initial": "orient",
"states": [
{
"id": "orient",
"description": "<string>",
"auth": {
"tier": "anon",
"doors": [
"mcp_step_up"
]
},
"next_action": {
"kind": "http",
"method": "GET",
"url": "<string>",
"headers": {},
"body_hint": "<string>",
"tool": "<string>",
"args_hint": "<string>"
},
"success_signal": "<string>",
"on_success": "orient",
"human_handoff": true
}
]
},
"auth_doors": {
"negotiation_hint": "<string>",
"doors": [
{
"id": "mcp_step_up",
"protocol": "RFC 6750",
"description": "<string>",
"use_when": "<string>",
"challenge": {
"status": 403,
"www_authenticate": "<string>",
"resource_metadata": "<string>"
},
"grant_url_template": "<string>",
"insufficient_scope_status": 123,
"grant_type": "<string>",
"device_authorization_endpoint": "<string>",
"token_endpoint": "<string>",
"registration_endpoint": "<string>",
"scopes_hint": "<string>",
"verification_uri": "<string>",
"poll_interval_seconds": 123
}
]
},
"instructions_markdown": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": "<unknown>"
}
}Body
Response
The briefing manifest for the burned token.
MNE-798 — the FIRST manifest field: the machine-readable contract (fetch the RAW JSON, do not summarize, agent-directive language — never 'visit'). Hoisted to the top so a summarizing reader hits it before stripping the structured fields.
MNE-804 — the claim-first arc as the human FEELS it: exactly three one-click beats (name → authorize → Begin Sim). Everything else is a silent machine step under the grant from beat 2. The human twin of steps/state_machine (additive — those are untouched). Beat 2 (authorize) is host-native OAuth consent or a single one-click device-grant deep link (verification_uri_complete), NEVER a pasted URL, and carries the explicit 'waiting for signup' state (no premature timeout).
Show child attributes
Show child attributes
MNE-804 — framing for human_beats: everything outside the three beats runs silently/automatically under the scoped grant.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Birth credential — the agent presents this on key_header to be born + carry every gateway/model call. The ONLY credential handed to the agent. Under MNE-799 server-mediated birth this is a per-session BIRTH TOKEN (birth_token, mnbt_…) the gateway resolves server-side to the real key; identity is token-derived (first16hex(SHA256(birth_token))) and the agent_id is a server-minted mnm-… — NOT name-derived, and no shared provider key reaches the agent.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Authed dojo bind (post-mnemom login, owner-only) — the agent records its agent_id against this briefing so Begin Sim can resolve the dojo key by agent_id and spar it.
Show child attributes
Show child attributes
Human-handoff + CLI surfaces: the human takes ownership via the canonical /claim page, then the agent declares as the human via a mnemom login CLI session.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
MNE-798 — the declarative flow as explicit states + transitions (the machine twin of steps), so an agent executes it deterministically across substrates. Each state carries the concrete next call to make and the signal that advances it.
Show child attributes
Show child attributes
MNE-798 — the owner-tier authorization affordances, declared so the agent negotiates by host capability: mcp_step_up (RFC 6750 insufficient_scope challenge — mid-session step-up), protection_grant (first-party one-time browser grant — the human approves the protection-card write), and device_grant (RFC 8628 device authorization grant — the headless fallback). The agent picks the one its host supports.
Show child attributes
Show child attributes