API, MCP und Agenten
Entwicklerdokumentation
Ein Agent kann eine Entscheidung einreichen, eine Rückfrage erhalten und anschließend eine begründete Empfehlung bekommen. Kein Konto und kein Anbieterschlüssel erforderlich.
MCP-Verbindung
https://dilem.si/api/v1/mcpEntfernter HTTP-Transport ohne OAuth. Der Anwendungstoken wird an Werkzeuge übergeben, nicht in der Serverkonfiguration gespeichert. Für einen Entscheidungsaufruf 110 Sekunden vorsehen.
Wähle deinen Client. Ergänze die vorhandene Konfiguration mit dem Beispiel, ohne sie zu ersetzen. Lade die MCP-Werkzeuge neu und prüfe, ob start_session, get_usage und decide verfügbar sind.
Claude Code
claude mcp add --transport http dilem https://dilem.si/api/v1/mcpCodex
~/.codex/config.toml[mcp_servers.dilem]
url = "https://dilem.si/api/v1/mcp"
tool_timeout_sec = 110Cursor
.cursor/mcp.json{
"mcpServers": {
"dilem": {
"url": "https://dilem.si/api/v1/mcp"
}
}
}OpenCode
opencode.json{
"mcp": {
"dilem": {
"type": "remote",
"url": "https://dilem.si/api/v1/mcp",
"enabled": true,
"oauth": false
}
}
}Hermes Agent
hermes mcp add dilem --url https://dilem.si/api/v1/mcpMistral Vibe
~/.vibe/config.toml[[mcp_servers]]
name = "dilem"
transport = "streamable-http"
url = "https://dilem.si/api/v1/mcp"
tool_timeout_sec = 110
[mcp_servers.auth]
type = "static"
headers = {}OpenClaw
~/.openclaw/openclaw.json{
"mcp": {
"servers": {
"dilem": {
"url": "https://dilem.si/api/v1/mcp",
"transport": "streamable-http",
"enabled": true,
"connectionTimeoutMs": 10000,
"requestTimeoutMs": 110000
}
}
}
}Pi
~/.pi/agent/mcp.json{
"mcpServers": {
"dilem": {
"url": "https://dilem.si/api/v1/mcp",
"timeout": 110
}
}
}MCP-Referenz
start_session
SchreibenPrivate Clientidentität erstellen oder verlängern.
sessionstring | nulloptional · Standard null
Antwort: Session
POST /api/v1/session
Eingabe
Header
AuthorizationSitzungstoken im Format Bearer <session>.
Kein Anfrageinhalt erforderlich.
Antwort
200 application/json
{
"session": "OPAQUE_SESSION_KEEP_PRIVATE",
"expires_in": 7776000
}sessionPrivates Client-Token für nachfolgende Aufrufe.
expires_inGültigkeitsdauer der Sitzung in Sekunden.
Wert:
7776000
Fehler und Wiederaufnahme
403 · 408 · 409 · 413 · 422 · 429 · 503 application/json
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
get_usage
LesenGuthaben, Erneuerung und optionalen Fallstatus lesen.
sessionstringerforderlichcase_idstring | nulloptional · Standard null
Antwort: Usage
GET /api/v1/usage
Eingabe
Header
AuthorizationSitzungstoken im Format Bearer <session>.
X-Dilem-Case-IDDiese Kennung für alle Schritte desselben Dilemmas beibehalten.
Technisches Format
^[a-zA-Z0-9_-]{1,80}$
Kein Anfrageinhalt erforderlich.
Antwort
200 application/json
{
"day": "2026-01-01",
"resets_at": "2026-01-02T00:00:00Z",
"collective": {
"completed": 42
},
"dilemmas": {
"used": 1,
"limit": 20,
"remaining": 19
},
"case": {
"id": "my-unique-dilemma-id",
"admitted": true,
"completed": false
},
"voice": {
"seconds_used": 0,
"seconds_reserved": 0,
"seconds_remaining": 1200,
"seconds_limit": 1200,
"max_seconds": 60
},
"budget": {
"daily_usd": 5,
"available": true
}
}dayUTC-Tag der Zähler.
Datum im ISO-8601-Format
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
collectiveGemeinsamer Zähler abgeschlossener Dilemmas.
Felder
completedAnzahl abgeschlossener Dilemmas im gemeinsamen Zähler.
dilemmasVerbrauchtes, verbleibendes und erlaubtes Dilemma-Guthaben.
Felder
usedBereits verbrauchtes Guthaben.
Minimum: 0
limitGuthabenlimit der aktiven Richtlinie.
Minimum: 0
remainingNoch verfügbares Guthaben.
Minimum: 0
caseStatus des durch die Case-ID bezeichneten Dilemmas.
Felder
idAngeforderte Case-ID oder null ohne Kennung.
admittedOb dieses Dilemma bereits im Kontingent zugelassen wurde.
completedOb eine erste Empfehlung dieses Dilemma abgeschlossen hat.
voiceDiktierdauer und Grenzen in Sekunden.
Felder
seconds_usedBereits verbrauchte Diktiersekunden.
seconds_reservedDurch eine laufende Aufnahme vorübergehend reservierte Sekunden.
seconds_remainingNoch verfügbare Diktiersekunden.
seconds_limitGesamtes Diktierlimit in Sekunden.
max_secondsMaximale Aufnahmedauer in Sekunden.
budgetGemeinsames Finanzbudget und Verfügbarkeit des Dienstes.
Felder
daily_usdTägliches Finanzlimit des Dienstes in US-Dollar.
availableOb das Budget weitere Berechnungen zulässt.
Fehler und Wiederaufnahme
403 · 408 · 409 · 413 · 422 · 429 · 503 application/json
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
decide
KI-BerechnungEntscheidungsschritt senden: Frage, Empfehlung oder Fehler.
sessionstringerforderlichcase_idstringerforderlichtextstringerforderlichlanguage"fr" | "en" | "it" | "de" | "es" | "pt"optional · Standard "fr"refinementsstring[] | nulloptional · Standard nullforce_decisionbooleanoptional · Standard falseclarification_countintegeroptional · Standard 0clarification_version2optional · Standard 2
Antwort: DecisionResponse
POST /api/v1/decide
Eingabe
Header
AuthorizationSitzungstoken im Format Bearer <session>.
X-Dilem-Case-IDDiese Kennung für alle Schritte desselben Dilemmas beibehalten.
Technisches Format
^[a-zA-Z0-9_-]{1,80}$
Anfrageinhalt application/json
{
"text": "Train or bus for my commute?",
"language": "en",
"refinements": [],
"clarification_version": 2
}textUrsprüngliche Wahl bei jedem Aufruf beibehalten.
1–6 000 Zeichen
languageSprache der Oberfläche. Antworten folgen den Worten des Nutzers.
Mögliche Werte:
"fr","en","it","de","es","pt"refinementsEchte Fragen und Antworten in zeitlicher Reihenfolge.
Höchstens 40 Einträge · Höchstens 6 000 Zeichen pro Eintrag · Standard:
[]force_decisionNur wenn der Nutzer eine Empfehlung ohne weitere Fragen verlangt.
Standard:
falseclarification_countAnzahl beantworteter Rückfragen.
0–20 · Standard:
0clarification_versionVertragsversion, immer 2.
Standard:
2· Wert:2
{
"session": "<session from start_session>",
"case_id": "my-unique-dilemma-id",
"text": "Train or car for a weekend trip?",
"language": "en"
}Antwort
200 application/json
Rückfrage Clarification
Eine Frage oder ein Hinweis gemäß purpose. insufficient_evidence bedeutet, dass eine begründete Rangfolge nicht möglich ist; ohne neue Angaben des Nutzers nicht erneut aufrufen.
{
"type": "clarification",
"question": "How far is your commute?",
"choices": [],
"format": "number",
"unit": "km",
"summary": "Train or bus"
}typeArt der zurückgegebenen Antwort.
Wert:
"clarification"questionRückfrage an den Nutzer vor dem Fortfahren.
choicesVorgeschlagene Antworten, falls vorhanden.
Höchstens 6 Einträge
formatVon der Frage erwartetes Antwortformat.
Mögliche Werte:
"single","multiple","text","number"unitEinheit einer numerischen Antwort oder null.
summaryZusammenfassung des Dilemmas.
purposeZweck der Frage oder des Umfangshinweises.
Mögliche Werte:
"decision_scope","scope_notice","insufficient_evidence"metricsTechnische Messwerte der Verarbeitung.
Empfehlung Result
Empfehlung, Optionen, Gründe und Quellen. Gewichte sind relative Präferenzen, keine Erfolgswahrscheinlichkeiten. result_id kann fehlen.
{
"type": "result",
"summary": "Train or bus for my commute?",
"options": [
{
"id": "train",
"label": "Take the train",
"description": "Use the direct rail connection.",
"probability": 0.7
},
{
"id": "bus",
"label": "Take the bus",
"description": "Use the bus stop near home.",
"probability": 0.3
}
],
"selected": "train",
"sources": [],
"result_id": "0123456789abcdef0123456789abcdef"
}typeArt der zurückgegebenen Antwort.
Wert:
"result"summaryZusammenfassung des Dilemmas.
contextFür die Empfehlung berücksichtigter Kontext.
assumptionsAnnahmen für den Vergleich der Optionen.
criteriaKriterien für den Vergleich der Optionen.
optionsVerglichene Optionen mit zugehörigen Angaben.
2–8 Einträge
selectedKennung der empfohlenen Option.
sourcesMit der Empfehlung zurückgegebene Quellen.
cautionBesonderer Hinweis oder null.
timingsDauer der Verarbeitungsschritte.
modelsModellinformationen für diesen Schritt.
metricsTechnische Messwerte der Verarbeitung.
result_idKennung eines diesem Client gehörenden Ergebnisses.
Fehler Error
Ablehnung oder Pipelinefehler. type auch bei HTTP 200 prüfen; MCP meldet zusätzlich isError.
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
Fehler und Wiederaufnahme
403 · 408 · 409 · 413 · 422 · 429 · 503 application/json
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
export_result_card
LesenKarte aus dem erhaltenen Ergebnis erstellen, ohne KI oder Bildspeicherung.
sessionstringerforderlichresultCardResulterforderlichlanguage"fr" | "en" | "it" | "de" | "es" | "pt"optional · Standard "fr"theme"light" | "dark"optional · Standard "light"
Antwort: image/png
POST /api/v1/result-card
Eingabe
Header
AuthorizationSitzungstoken im Format Bearer <session>.
Anfrageinhalt application/json
{
"result": {
"summary": "Train or bus for my commute?",
"selected": "train",
"options": [
{
"id": "train",
"label": "Take the train",
"description": "Use the direct rail connection.",
"probability": 0.7
},
{
"id": "bus",
"label": "Take the bus",
"description": "Use the bus stop near home.",
"probability": 0.3
}
]
},
"language": "en",
"theme": "light"
}resultBereits erhaltenes Ergebnis für die PNG-Erstellung.
Felder
summaryZusammenfassung des Dilemmas.
1–6 000 Zeichen
selectedKennung der empfohlenen Option.
Höchstens 32 Zeichen
optionsVerglichene Optionen mit zugehörigen Angaben.
2–8 Einträge
Felder
idEindeutige Kennung dieser Option im Ergebnis.
Technisches Format
^[a-z][a-z0-9_]{0,31}$labelBezeichnung der Option auf der Karte.
1–120 Zeichen
descriptionKurze Beschreibung zur Option.
Höchstens 240 Zeichen · Standard:
""probabilityPräferenzgewicht, keine Erfolgswahrscheinlichkeit.
0–1
languageAnzeigesprache.
Mögliche Werte:
"fr","en","it","de","es","pt"· Standard:"fr"themeDarstellungsthema der PNG-Karte.
Mögliche Werte:
"light","dark"· Standard:"light"
Antwort
200 image/png
Privater PNG-Anhang. Der Dateiname steht in Content-Disposition.
Fehler und Wiederaufnahme
403 · 408 · 409 · 413 · 422 · 429 · 503 · 415 application/json
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
get_result_feedback
LesenBewertung des ursprünglichen Clients lesen.
sessionstringerforderlichresult_idstringerforderlich
Antwort: Feedback
GET /api/v1/feedback/{result_id}
Eingabe
Header
AuthorizationSitzungstoken im Format Bearer <session>.
Pfadparameter
result_idKennung eines diesem Client gehörenden Ergebnisses.
Technisches Format
^[0-9a-f]{32}$
Kein Anfrageinhalt erforderlich.
Antwort
200 application/json
{
"result_id": "0123456789abcdef0123456789abcdef",
"helpful": false,
"reason": "missing_constraint"
}result_idKennung eines diesem Client gehörenden Ergebnisses.
Technisches Format
^[0-9a-f]{32}$helpfulGespeicherte Bewertung oder null ohne Bewertung.
reasonGrund einer negativen Bewertung oder null.
Mögliche Werte:
null,"misunderstood","missing_constraint","too_many_questions","too_vague"
Fehler und Wiederaufnahme
403 · 408 · 409 · 413 · 422 · 429 · 503 · 404 application/json
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
set_result_feedback
SchreibenAusdrückliche Nutzerbewertung speichern, Zufriedenheit nicht ableiten.
sessionstringerforderlichresult_idstringerforderlichhelpfulbooleanerforderlichreason"misunderstood" | "missing_constraint" | "too_many_questions" | "too_vague" | nulloptional · Standard null
Antwort: Feedback
POST /api/v1/feedback
Eingabe
Header
AuthorizationSitzungstoken im Format Bearer <session>.
Anfrageinhalt application/json
{
"result_id": "0123456789abcdef0123456789abcdef",
"helpful": false,
"reason": "missing_constraint"
}result_idKennung eines diesem Client gehörenden Ergebnisses.
Technisches Format
^[0-9a-f]{32}$helpfulAusdrückliche Bewertung der Antwort durch den Nutzer.
reasonGrund einer negativen Bewertung oder null.
Mögliche Werte:
null,"misunderstood","missing_constraint","too_many_questions","too_vague"
Antwort
200 application/json
{
"result_id": "0123456789abcdef0123456789abcdef",
"helpful": false,
"reason": "missing_constraint"
}result_idKennung eines diesem Client gehörenden Ergebnisses.
Technisches Format
^[0-9a-f]{32}$helpfulGespeicherte Bewertung oder null ohne Bewertung.
reasonGrund einer negativen Bewertung oder null.
Mögliche Werte:
null,"misunderstood","missing_constraint","too_many_questions","too_vague"
Fehler und Wiederaufnahme
403 · 408 · 409 · 413 · 422 · 429 · 503 · 415 · 404 application/json
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
send_user_feedback
SchreibenAusdrücklich erlaubte Nachricht oder Meldung senden.
sessionstringerforderlichrequest_idstringerforderlichmessagestringerforderlichlanguage"fr" | "en" | "it" | "de" | "es" | "pt"optional · Standard "fr"kind"general" | "response"optional · Standard "general"emailstringoptional · Standard ""responseobject | nulloptional · Standard null
Antwort: FeedbackAck
POST /api/v1/user-feedback
Eingabe
Header
AuthorizationSitzungstoken im Format Bearer <session>.
Anfrageinhalt application/json
{
"request_id": "0123456789abcdef0123456789abcdef",
"kind": "general",
"message": "Please explain how the recommendation uses my constraints.",
"email": "",
"language": "en",
"source": "agent",
"version": "unknown",
"screen": "other",
"response": null
}request_idKennung zur Deduplizierung derselben Übermittlung.
Technisches Format
^[0-9a-f]{32}$kindAllgemeine Nachricht oder Meldung zu einer Antwort.
Mögliche Werte:
"general","response"messageVom Nutzer ausdrücklich übermittelter Kommentar.
5–4 000 Zeichen
emailKontaktadresse oder leere Zeichenfolge.
Höchstens 254 Zeichen
languageAnzeigesprache.
Mögliche Werte:
"fr","en","it","de","es","pt"sourceEinstiegspunkt der Nachricht.
Mögliche Werte:
"agent","menu","help","response"versionSHA der Anwendung oder unknown.
Technisches Format
^[0-9a-f]{40}$|^unknown$screenAnsicht, aus der die Nachricht gesendet wird.
Mögliche Werte:
"home","clarification","result","other"responseDer Meldung beigefügte exakte Antwort, sonst null.
Felder
nullnullBeigefügte Antwort
ReportedResponsekindArt der einer Meldung beigefügten Antwort.
Mögliche Werte:
"clarification","recommendation"textExakter Text der beigefügten Antwort.
1–12 000 Zeichen
referenceReferenz der betreffenden Antwort.
Technisches Format
^[A-Za-z0-9._:-]{1,80}$
Antwort
200 application/json
{
"ok": true
}okBestätigt die Speicherung der Nachricht.
Wert:
true
Fehler und Wiederaufnahme
403 · 408 · 409 · 413 · 422 · 429 · 503 · 415 application/json
{
"type": "error",
"code": "case_completed"
}typeArt der zurückgegebenen Antwort.
Wert:
"error"codeCode zur Behandlung einer Ablehnung oder eines Fehlers.
messageVerständliche Erklärung der Ablehnung oder des Fehlers.
retryableOb ein weiterer Versuch in Betracht kommt.
resets_atDatum und Uhrzeit der nächsten Guthabenerneuerung.
Datum und Uhrzeit im ISO-8601-Format
Schnellstart
Benötigt curl und Python 3. Erstelle die Identität einmal, speichere den Token privat und verwende ihn bei späteren Besuchen erneut.
Erstelle eine Sitzung und speichere den Wert session. Sende ihn bei weiteren Aufrufen als Authorization: Bearer *** Er gilt 90 Tage; erneuere ihn mit demselben Aufruf und Token.
DILEM_SESSION=$(curl --fail-with-body --silent --show-error --max-time 15 \
https://dilem.si/api/v1/session \
-H 'Content-Type: application/json' -d '{}' | \
python3 -c 'import json, sys; print(json.load(sys.stdin)["session"])')curl --fail-with-body --max-time 15 https://dilem.si/api/v1/usage \
-H "Authorization: Bearer ${DILEM_SESSION:?}" \
-H 'X-Dilem-Case-ID: my-unique-dilemma-id'Wähle eine Case-ID für dein Dilemma und behalte sie im Gespräch bei. Du erhältst eine Frage oder eine Empfehlung. Hänge zum Antworten Frage und Antwort an refinements an und erhöhe clarification_count um 1.
curl --fail-with-body --max-time 110 --output result.json https://dilem.si/api/v1/decide \
-H "Authorization: Bearer ${DILEM_SESSION:?}" \
-H 'X-Dilem-Case-ID: my-unique-dilemma-id' \
-H 'Content-Type: application/json' \
-d '{"text":"Train or car for a weekend trip?","language":"en","refinements":[],"clarification_count":0,"clarification_version":2}'Sitzung und Authentifizierung
Ohne Token erstellt start_session eine Identität. Mit session wird dieselbe Identität um 90 Tage verlängert. Ungültige oder abgelaufene Token werden abgelehnt, nie still ersetzt. REST und MCP teilen den Token; Browser-Cookies werden nicht gelesen.
Eine eindeutige Case-ID pro Dilemma bis zum Ergebnis: 1 bis 80 Zeichen aus a-z, A-Z, 0-9, _ und -. Sie identifiziert den Fall, macht Berechnungen aber nicht idempotent.
Ablauf eines Dilemmas
- Ursprüngliche Wahl mit einer neuen Case-ID senden.
- Bei clarification zuerst purpose prüfen: insufficient_evidence ist ein Hinweis, keine Frage und keine Aufforderung zu einer erfundenen Rangfolge. Sonst die Frage stellen und die echte Antwort abwarten; Frage + Antwort an refinements anhängen und clarification_count erhöhen.
- Bei result das JSON aufbewahren: Der Fall ist abgeschlossen. Für eine neue Berechnung eine neue Case-ID verwenden.
- Bei error code und retryable prüfen. Berechnungen mit unklarem Ausgang nicht automatisch wiederholen.
Der Agent stellt dir die Fragen und wartet auf deine Antworten, ohne fehlende Angaben zu erfinden. Du kannst eine Empfehlung ohne weitere Fragen anfordern.
Entscheidungsparameter
texterforderlichUrsprüngliche Wahl bei jedem Aufruf beibehalten.
string · 1–6000languageerforderlichSprache der Oberfläche. Antworten folgen den Worten des Nutzers.
fr | en | it | de | es | ptrefinementsoptionalEchte Fragen und Antworten in zeitlicher Reihenfolge.
array · ≤40 × 6000clarification_countoptionalAnzahl beantworteter Rückfragen.
integer · 0–20clarification_versionoptionalVertragsversion, immer 2.
2force_decisionoptionalNur wenn der Nutzer eine Empfehlung ohne weitere Fragen verlangt.
boolean
Text + Ergänzungen: insgesamt 24 000 Zeichen. HTTP-Anfrage: 300 000 Byte in 10 Sekunden; zu große Anbieter-Payloads können vor dem Verbrauch abgelehnt werden.
Antworten
Rückfrage type: clarification
Eine Frage oder ein Hinweis gemäß purpose. insufficient_evidence bedeutet, dass eine begründete Rangfolge nicht möglich ist; ohne neue Angaben des Nutzers nicht erneut aufrufen.
type, question, choices, format, unit, summary, purpose, metrics
Empfehlung type: result
Empfehlung, Optionen, Gründe und Quellen. Gewichte sind relative Präferenzen, keine Erfolgswahrscheinlichkeiten. result_id kann fehlen.
type, summary, context, assumptions, criteria, options, selected, sources, caution, timings, models, metrics, result_id
Fehler type: error
Ablehnung oder Pipelinefehler. type auch bei HTTP 200 prüfen; MCP meldet zusätzlich isError.
type, code, message, retryable, resets_at
{
"type": "clarification",
"question": "How far is your commute?",
"choices": [],
"format": "number",
"unit": "km",
"summary": "Train or bus"
}Ergebnisse und Rückmeldungen
Ergebnis als PNG exportieren
Erhaltenes Ergebnis als result mit language und theme (light oder dark) übergeben. Privates PNG, Dateiname in Content-Disposition, Cache-Control: no-store. Kein Guthabenverbrauch und keine Veröffentlichung. MCP liefert ein natives Bild mit Dateimetadaten.
python3 -c 'import json, sys; print(json.dumps({"result": json.load(sys.stdin), "language": "fr", "theme": "light"}))' < result.json > card-input.jsoncurl --fail-with-body --max-time 15 https://dilem.si/api/v1/result-card \
-H "Authorization: Bearer ${DILEM_SESSION:?}" \
-H "Content-Type: application/json" \
--data-binary @card-input.json --output dilem.pngBewertung lesen oder speichern
result_id gehört zu dieser Identität. helpful ist boolesch; reason nur bei negativer Bewertung optional: misunderstood, missing_constraint, too_many_questions oder too_vague. Fehlende, abgelaufene und fremde Ergebnisse liefern denselben 404.
GET /api/v1/feedback/{result_id}{"result_id": "<result_id from your result>", "helpful": false, "reason": "missing_constraint"}curl --fail-with-body --max-time 15 https://dilem.si/api/v1/feedback \
-H "Authorization: Bearer ${DILEM_SESSION:?}" \
-H "Content-Type: application/json" \
--data-binary @feedback-input.jsonNachricht senden oder Antwort melden
request_id: 32 hexadezimale Kleinbuchstaben/Ziffern. message: mindestens 5 Nicht-Leerzeichen, höchstens 4 000 Zeichen. kind=general für Nachrichten; kind=response für Meldungen mit exakter Antwort. E-Mail optional. ID und Inhalt beibehalten; nach unklarem Fehler nicht automatisch wiederholen.
{
"request_id": "<32 lowercase hex characters>",
"kind": "general",
"message": "<user-authorized message>",
"email": "",
"language": "fr",
"source": "agent",
"version": "unknown",
"screen": "other",
"response": null
}curl --fail-with-body --max-time 15 https://dilem.si/api/v1/user-feedback \
-H "Authorization: Bearer ${DILEM_SESSION:?}" \
-H "Content-Type: application/json" \
--data-binary @user-feedback-input.jsonGuthaben
Ein Guthaben deckt ein Dilemma bis zur ersten Empfehlung ab, einschließlich Rückfragen. Jede weitere Berechnung nach dieser Empfehlung verbraucht ein neues Guthaben.
Mit get_usage über MCP oder GET /api/v1/usage über REST siehst du dein verbleibendes Guthaben und den Zeitpunkt der Erneuerung.
Grenzen stammen aus der aktiven Richtlinie, nicht aus festen Werten in diesem Leitfaden. PNG und Feedback verbrauchen kein Dilemma-Guthaben, behalten aber technische und Missbrauchsgrenzen.
Fehler und Wiederaufnahme
403: fehlende, ungültige oder abgelaufene Sitzung, abgelehnte Herkunft oder unzulässige Cookies. 408/413/422: Zeitlimit, Größe oder ungültige Eingabe. 409: abgeschlossener Fall. 429: Kontingent, Budget oder Kapazität. 503: Dienst nicht verfügbar. Auch type prüfen: Fehler können nach Zulassung auftreten. Nach einem mehrdeutigen Fehler keine Berechnung automatisch wiederholen; die Case-ID ist kein Idempotenzschlüssel.
Eine Trennung kann bereits verbrauchte Arbeit hinterlassen. Verbrauchsdaten stellen eine verlorene Antwort nicht wieder her.
Agenten im Browser
In einem kompatiblen Browser kann dein Agent über WebMCP die offene Seite mit deinem Verlauf und Guthaben nutzen. Andernfalls verwende MCP oder die API. Der Fernzugriff nimmt Text entgegen; Diktieren bleibt in der App verfügbar.
Zuerst get_dilemma lesen. submit_dilemma sendet eine Wahl oder Antwort; recommend_dilemma fordert eine Empfehlung ohne weitere Frage an. Aktionen nutzen den sichtbaren Fall, nicht den entfernten Token.
WebMCP ergänzt lokalen Bildexport mit Vorschau, Bewertungen und Meldungen sowie list_saved_dilemmas und get_saved_dilemma für diesen Browserverlauf. Die Bild-URL verfällt beim Schließen der Vorschau. Verlauf und Browser-Cookies werden nicht mit MCP remote geteilt.
Technische Referenz
OpenAPI-Schemata beschreiben vollständige Anfragen und Antworten. Der Markdown-Leitfaden dient Agenten als Einstieg; Katalog und Server Card ermöglichen MCP-Erkennung.
Der Dienst speichert Textgespräche 30 Tage lang. Der Browserverlauf bleibt auf deinem Gerät und wird nicht mit einem entfernten Agenten geteilt.
Datenschutz und Anbieter