dilem.

    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.

    REST v1.1.0 MCP · Streamable HTTP Markdown ↗

    MCP

    Für Assistenten und MCP-Clients. Server konfigurieren, dann Werkzeuge entdecken.

    REST API

    Für deine App oder dein Skript. HTTP, Bearer-Authentifizierung und JSON-Antworten.

    WebMCP

    Für Agenten in der geöffneten Seite. Nutzt Browseridentität und Verlauf.

    MCP-Verbindung

    MCP-Adresse
    https://dilem.si/api/v1/mcp

    Entfernter 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
    Terminal · Bash
    claude mcp add --transport http dilem https://dilem.si/api/v1/mcp

    Client-Dokumentation ↗

    Codex
    Konfigurationsdatei
    ~/.codex/config.toml
    Konfiguration · TOML
    [mcp_servers.dilem]
    url = "https://dilem.si/api/v1/mcp"
    tool_timeout_sec = 110

    Client-Dokumentation ↗

    Cursor
    Konfigurationsdatei
    .cursor/mcp.json
    Konfiguration · JSON
    {
      "mcpServers": {
        "dilem": {
          "url": "https://dilem.si/api/v1/mcp"
        }
      }
    }

    Client-Dokumentation ↗

    OpenCode
    Konfigurationsdatei
    opencode.json
    Konfiguration · JSON
    {
      "mcp": {
        "dilem": {
          "type": "remote",
          "url": "https://dilem.si/api/v1/mcp",
          "enabled": true,
          "oauth": false
        }
      }
    }

    Client-Dokumentation ↗

    Hermes Agent
    Terminal · Bash
    hermes mcp add dilem --url https://dilem.si/api/v1/mcp

    Client-Dokumentation ↗

    Mistral Vibe
    Konfigurationsdatei
    ~/.vibe/config.toml
    Konfiguration · 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 = {}

    Client-Dokumentation ↗

    OpenClaw
    Konfigurationsdatei
    ~/.openclaw/openclaw.json
    Konfiguration · JSON
    {
      "mcp": {
        "servers": {
          "dilem": {
            "url": "https://dilem.si/api/v1/mcp",
            "transport": "streamable-http",
            "enabled": true,
            "connectionTimeoutMs": 10000,
            "requestTimeoutMs": 110000
          }
        }
      }
    }

    Client-Dokumentation ↗

    Pi
    Konfigurationsdatei
    ~/.pi/agent/mcp.json
    Konfiguration · JSON
    {
      "mcpServers": {
        "dilem": {
          "url": "https://dilem.si/api/v1/mcp",
          "timeout": 110
        }
      }
    }

    Client-Dokumentation ↗

    MCP-Referenz

    start_session

    Schreiben

    Private Clientidentität erstellen oder verlängern.

    • session string | null optional · Standard null

    Antwort: Session

    POST /api/v1/session

    Eingabe

    Header
    • Authorization string

      Sitzungstoken im Format Bearer <session>.

    Kein Anfrageinhalt erforderlich.

    Antwort

    200 application/json
    Illustratives Beispiel · JSON
    {
      "session": "OPAQUE_SESSION_KEEP_PRIVATE",
      "expires_in": 7776000
    }
    • session string · erforderlich

      Privates Client-Token für nachfolgende Aufrufe.

    • expires_in integer · erforderlich

      Gültigkeitsdauer der Sitzung in Sekunden.

      Wert: 7776000

    Fehler und Wiederaufnahme

    403 · 408 · 409 · 413 · 422 · 429 · 503 application/json

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum und Uhrzeit der nächsten Guthabenerneuerung.

      Datum und Uhrzeit im ISO-8601-Format

    Guthaben, Erneuerung und optionalen Fallstatus lesen.

    • session string erforderlich
    • case_id string | null optional · Standard null

    Antwort: Usage

    GET /api/v1/usage

    Eingabe

    Header
    • Authorization string · erforderlich

      Sitzungstoken im Format Bearer <session>.

    • X-Dilem-Case-ID string

      Diese Kennung für alle Schritte desselben Dilemmas beibehalten.

      Technisches Format

      ^[a-zA-Z0-9_-]{1,80}$

    Kein Anfrageinhalt erforderlich.

    Antwort

    200 application/json
    Illustratives Beispiel · 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
      }
    }
    • day string · erforderlich

      UTC-Tag der Zähler.

      Datum im ISO-8601-Format

    • resets_at string · erforderlich

      Datum und Uhrzeit der nächsten Guthabenerneuerung.

      Datum und Uhrzeit im ISO-8601-Format

    • collective object · erforderlich

      Gemeinsamer Zähler abgeschlossener Dilemmas.

      Felder
      • completed integer · erforderlich

        Anzahl abgeschlossener Dilemmas im gemeinsamen Zähler.

    • dilemmas object · erforderlich

      Verbrauchtes, verbleibendes und erlaubtes Dilemma-Guthaben.

      Felder
      • used integer · erforderlich

        Bereits verbrauchtes Guthaben.

        Minimum: 0

      • limit integer · erforderlich

        Guthabenlimit der aktiven Richtlinie.

        Minimum: 0

      • remaining integer · erforderlich

        Noch verfügbares Guthaben.

        Minimum: 0

    • case object · erforderlich

      Status des durch die Case-ID bezeichneten Dilemmas.

      Felder
      • id string | null · erforderlich

        Angeforderte Case-ID oder null ohne Kennung.

      • admitted boolean · erforderlich

        Ob dieses Dilemma bereits im Kontingent zugelassen wurde.

      • completed boolean · erforderlich

        Ob eine erste Empfehlung dieses Dilemma abgeschlossen hat.

    • voice object · erforderlich

      Diktierdauer und Grenzen in Sekunden.

      Felder
      • seconds_used number

        Bereits verbrauchte Diktiersekunden.

      • seconds_reserved number

        Durch eine laufende Aufnahme vorübergehend reservierte Sekunden.

      • seconds_remaining number

        Noch verfügbare Diktiersekunden.

      • seconds_limit number

        Gesamtes Diktierlimit in Sekunden.

      • max_seconds number

        Maximale Aufnahmedauer in Sekunden.

    • budget object · erforderlich

      Gemeinsames Finanzbudget und Verfügbarkeit des Dienstes.

      Felder
      • daily_usd number · erforderlich

        Tägliches Finanzlimit des Dienstes in US-Dollar.

      • available boolean · erforderlich

        Ob das Budget weitere Berechnungen zulässt.

    Fehler und Wiederaufnahme

    403 · 408 · 409 · 413 · 422 · 429 · 503 application/json

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum und Uhrzeit der nächsten Guthabenerneuerung.

      Datum und Uhrzeit im ISO-8601-Format

    decide

    KI-Berechnung

    Entscheidungsschritt senden: Frage, Empfehlung oder Fehler.

    • session string erforderlich
    • case_id string erforderlich
    • text string erforderlich
    • language "fr" | "en" | "it" | "de" | "es" | "pt" optional · Standard "fr"
    • refinements string[] | null optional · Standard null
    • force_decision boolean optional · Standard false
    • clarification_count integer optional · Standard 0
    • clarification_version 2 optional · Standard 2

    Antwort: DecisionResponse

    POST /api/v1/decide

    Eingabe

    Header
    • Authorization string · erforderlich

      Sitzungstoken im Format Bearer <session>.

    • X-Dilem-Case-ID string · erforderlich

      Diese Kennung für alle Schritte desselben Dilemmas beibehalten.

      Technisches Format

      ^[a-zA-Z0-9_-]{1,80}$

    Anfrageinhalt application/json
    REST · Anfrage · Illustratives Beispiel · JSON
    {
      "text": "Train or bus for my commute?",
      "language": "en",
      "refinements": [],
      "clarification_version": 2
    }
    • text string · erforderlich

      Ursprüngliche Wahl bei jedem Aufruf beibehalten.

      1–6 000 Zeichen

    • language string · erforderlich

      Sprache der Oberfläche. Antworten folgen den Worten des Nutzers.

      Mögliche Werte: "fr", "en", "it", "de", "es", "pt"

    • refinements string[]

      Echte Fragen und Antworten in zeitlicher Reihenfolge.

      Höchstens 40 Einträge · Höchstens 6 000 Zeichen pro Eintrag · Standard: []

    • force_decision boolean

      Nur wenn der Nutzer eine Empfehlung ohne weitere Fragen verlangt.

      Standard: false

    • clarification_count integer

      Anzahl beantworteter Rückfragen.

      0–20 · Standard: 0

    • clarification_version integer

      Vertragsversion, immer 2.

      Standard: 2 · Wert: 2

    MCP · decide · Anfrage · JSON
    {
      "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.

    Illustratives Beispiel · JSON
    {
      "type": "clarification",
      "question": "How far is your commute?",
      "choices": [],
      "format": "number",
      "unit": "km",
      "summary": "Train or bus"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "clarification"

    • question string · erforderlich

      Rückfrage an den Nutzer vor dem Fortfahren.

    • choices string[] · erforderlich

      Vorgeschlagene Antworten, falls vorhanden.

      Höchstens 6 Einträge

    • format string · erforderlich

      Von der Frage erwartetes Antwortformat.

      Mögliche Werte: "single", "multiple", "text", "number"

    • unit string | null

      Einheit einer numerischen Antwort oder null.

    • summary string · erforderlich

      Zusammenfassung des Dilemmas.

    • purpose string

      Zweck der Frage oder des Umfangshinweises.

      Mögliche Werte: "decision_scope", "scope_notice", "insufficient_evidence"

    • metrics object

      Technische Messwerte der Verarbeitung.

    Empfehlung Result

    Empfehlung, Optionen, Gründe und Quellen. Gewichte sind relative Präferenzen, keine Erfolgswahrscheinlichkeiten. result_id kann fehlen.

    Illustratives Beispiel · JSON
    {
      "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"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "result"

    • summary string · erforderlich

      Zusammenfassung des Dilemmas.

    • context string

      Für die Empfehlung berücksichtigter Kontext.

    • assumptions string[]

      Annahmen für den Vergleich der Optionen.

    • criteria string[]

      Kriterien für den Vergleich der Optionen.

    • options object[] · erforderlich

      Verglichene Optionen mit zugehörigen Angaben.

      2–8 Einträge

    • selected string · erforderlich

      Kennung der empfohlenen Option.

    • sources object[] · erforderlich

      Mit der Empfehlung zurückgegebene Quellen.

    • caution string | null

      Besonderer Hinweis oder null.

    • timings object

      Dauer der Verarbeitungsschritte.

    • models object

      Modellinformationen für diesen Schritt.

    • metrics object

      Technische Messwerte der Verarbeitung.

    • result_id string

      Kennung eines diesem Client gehörenden Ergebnisses.

    Fehler Error

    Ablehnung oder Pipelinefehler. type auch bei HTTP 200 prüfen; MCP meldet zusätzlich isError.

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum 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

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum und Uhrzeit der nächsten Guthabenerneuerung.

      Datum und Uhrzeit im ISO-8601-Format

    Karte aus dem erhaltenen Ergebnis erstellen, ohne KI oder Bildspeicherung.

    • session string erforderlich
    • result CardResult erforderlich
    • language "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
    • Authorization string · erforderlich

      Sitzungstoken im Format Bearer <session>.

    Anfrageinhalt application/json
    REST · Anfrage · Illustratives Beispiel · 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"
    }
    • result CardResult · erforderlich

      Bereits erhaltenes Ergebnis für die PNG-Erstellung.

      Felder
      • summary string · erforderlich

        Zusammenfassung des Dilemmas.

        1–6 000 Zeichen

      • selected string · erforderlich

        Kennung der empfohlenen Option.

        Höchstens 32 Zeichen

      • options CardOption[] · erforderlich

        Verglichene Optionen mit zugehörigen Angaben.

        2–8 Einträge

        Felder
        • id string · erforderlich

          Eindeutige Kennung dieser Option im Ergebnis.

          Technisches Format

          ^[a-z][a-z0-9_]{0,31}$

        • label string · erforderlich

          Bezeichnung der Option auf der Karte.

          1–120 Zeichen

        • description string

          Kurze Beschreibung zur Option.

          Höchstens 240 Zeichen · Standard: ""

        • probability number · erforderlich

          Präferenzgewicht, keine Erfolgswahrscheinlichkeit.

          0–1

    • language string

      Anzeigesprache.

      Mögliche Werte: "fr", "en", "it", "de", "es", "pt" · Standard: "fr"

    • theme string

      Darstellungsthema 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

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum und Uhrzeit der nächsten Guthabenerneuerung.

      Datum und Uhrzeit im ISO-8601-Format

    Bewertung des ursprünglichen Clients lesen.

    • session string erforderlich
    • result_id string erforderlich

    Antwort: Feedback

    GET /api/v1/feedback/{result_id}

    Eingabe

    Header
    • Authorization string · erforderlich

      Sitzungstoken im Format Bearer <session>.

    Pfadparameter
    • result_id string · erforderlich

      Kennung eines diesem Client gehörenden Ergebnisses.

      Technisches Format

      ^[0-9a-f]{32}$

    Kein Anfrageinhalt erforderlich.

    Antwort

    200 application/json
    Illustratives Beispiel · JSON
    {
      "result_id": "0123456789abcdef0123456789abcdef",
      "helpful": false,
      "reason": "missing_constraint"
    }
    • result_id string · erforderlich

      Kennung eines diesem Client gehörenden Ergebnisses.

      Technisches Format

      ^[0-9a-f]{32}$

    • helpful boolean | null · erforderlich

      Gespeicherte Bewertung oder null ohne Bewertung.

    • reason null | string · erforderlich

      Grund 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

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum und Uhrzeit der nächsten Guthabenerneuerung.

      Datum und Uhrzeit im ISO-8601-Format

    Ausdrückliche Nutzerbewertung speichern, Zufriedenheit nicht ableiten.

    • session string erforderlich
    • result_id string erforderlich
    • helpful boolean erforderlich
    • reason "misunderstood" | "missing_constraint" | "too_many_questions" | "too_vague" | null optional · Standard null

    Antwort: Feedback

    POST /api/v1/feedback

    Eingabe

    Header
    • Authorization string · erforderlich

      Sitzungstoken im Format Bearer <session>.

    Anfrageinhalt application/json
    REST · Anfrage · Illustratives Beispiel · JSON
    {
      "result_id": "0123456789abcdef0123456789abcdef",
      "helpful": false,
      "reason": "missing_constraint"
    }
    • result_id string · erforderlich

      Kennung eines diesem Client gehörenden Ergebnisses.

      Technisches Format

      ^[0-9a-f]{32}$

    • helpful boolean · erforderlich

      Ausdrückliche Bewertung der Antwort durch den Nutzer.

    • reason null | string

      Grund einer negativen Bewertung oder null.

      Mögliche Werte: null, "misunderstood", "missing_constraint", "too_many_questions", "too_vague"

    Antwort

    200 application/json
    Illustratives Beispiel · JSON
    {
      "result_id": "0123456789abcdef0123456789abcdef",
      "helpful": false,
      "reason": "missing_constraint"
    }
    • result_id string · erforderlich

      Kennung eines diesem Client gehörenden Ergebnisses.

      Technisches Format

      ^[0-9a-f]{32}$

    • helpful boolean | null · erforderlich

      Gespeicherte Bewertung oder null ohne Bewertung.

    • reason null | string · erforderlich

      Grund 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

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum und Uhrzeit der nächsten Guthabenerneuerung.

      Datum und Uhrzeit im ISO-8601-Format

    Ausdrücklich erlaubte Nachricht oder Meldung senden.

    • session string erforderlich
    • request_id string erforderlich
    • message string erforderlich
    • language "fr" | "en" | "it" | "de" | "es" | "pt" optional · Standard "fr"
    • kind "general" | "response" optional · Standard "general"
    • email string optional · Standard ""
    • response object | null optional · Standard null

    Antwort: FeedbackAck

    POST /api/v1/user-feedback

    Eingabe

    Header
    • Authorization string · erforderlich

      Sitzungstoken im Format Bearer <session>.

    Anfrageinhalt application/json
    REST · Anfrage · Illustratives Beispiel · 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_id string · erforderlich

      Kennung zur Deduplizierung derselben Übermittlung.

      Technisches Format

      ^[0-9a-f]{32}$

    • kind string · erforderlich

      Allgemeine Nachricht oder Meldung zu einer Antwort.

      Mögliche Werte: "general", "response"

    • message string · erforderlich

      Vom Nutzer ausdrücklich übermittelter Kommentar.

      5–4 000 Zeichen

    • email string · erforderlich

      Kontaktadresse oder leere Zeichenfolge.

      Höchstens 254 Zeichen

    • language string · erforderlich

      Anzeigesprache.

      Mögliche Werte: "fr", "en", "it", "de", "es", "pt"

    • source string · erforderlich

      Einstiegspunkt der Nachricht.

      Mögliche Werte: "agent", "menu", "help", "response"

    • version string · erforderlich

      SHA der Anwendung oder unknown.

      Technisches Format

      ^[0-9a-f]{40}$|^unknown$

    • screen string · erforderlich

      Ansicht, aus der die Nachricht gesendet wird.

      Mögliche Werte: "home", "clarification", "result", "other"

    • response null | ReportedResponse · erforderlich

      Der Meldung beigefügte exakte Antwort, sonst null.

      Felder
      null

      null

      Beigefügte Antwort ReportedResponse
      • kind string · erforderlich

        Art der einer Meldung beigefügten Antwort.

        Mögliche Werte: "clarification", "recommendation"

      • text string · erforderlich

        Exakter Text der beigefügten Antwort.

        1–12 000 Zeichen

      • reference string · erforderlich

        Referenz der betreffenden Antwort.

        Technisches Format

        ^[A-Za-z0-9._:-]{1,80}$

    Antwort

    200 application/json
    Illustratives Beispiel · JSON
    {
      "ok": true
    }
    • ok boolean · erforderlich

      Bestätigt die Speicherung der Nachricht.

      Wert: true

    Fehler und Wiederaufnahme

    403 · 408 · 409 · 413 · 422 · 429 · 503 · 415 application/json

    Illustratives Beispiel · JSON
    {
      "type": "error",
      "code": "case_completed"
    }
    • type string · erforderlich

      Art der zurückgegebenen Antwort.

      Wert: "error"

    • code string · erforderlich

      Code zur Behandlung einer Ablehnung oder eines Fehlers.

    • message string

      Verständliche Erklärung der Ablehnung oder des Fehlers.

    • retryable boolean

      Ob ein weiterer Versuch in Betracht kommt.

    • resets_at string

      Datum 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.

    POST /api/v1/session · Bash
    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"])')
    GET /api/v1/usage · Bash
    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.

    POST /api/v1/decide · Bash
    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

    1. Ursprüngliche Wahl mit einer neuen Case-ID senden.
    2. 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.
    3. Bei result das JSON aufbewahren: Der Fall ist abgeschlossen. Für eine neue Berechnung eine neue Case-ID verwenden.
    4. 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

    • text erforderlich

      Ursprüngliche Wahl bei jedem Aufruf beibehalten.

      string · 1–6000
    • language erforderlich

      Sprache der Oberfläche. Antworten folgen den Worten des Nutzers.

      fr | en | it | de | es | pt
    • refinements optional

      Echte Fragen und Antworten in zeitlicher Reihenfolge.

      array · ≤40 × 6000
    • clarification_count optional

      Anzahl beantworteter Rückfragen.

      integer · 0–20
    • clarification_version optional

      Vertragsversion, immer 2.

      2
    • force_decision optional

      Nur 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

    Illustratives Beispiel · clarification · JSON
    {
      "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.

    Anfrage · Illustratives Beispiel · Bash
    python3 -c 'import json, sys; print(json.dumps({"result": json.load(sys.stdin), "language": "fr", "theme": "light"}))' < result.json > card-input.json
    POST /api/v1/result-card · Bash
    curl --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.png

    Bewertung 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}
    Anfrage · Illustratives Beispiel · JSON
    {"result_id": "<result_id from your result>", "helpful": false, "reason": "missing_constraint"}
    POST /api/v1/feedback · Bash
    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.json

    Nachricht 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.

    Anfrage · Illustratives Beispiel · JSON
    {
      "request_id": "<32 lowercase hex characters>",
      "kind": "general",
      "message": "<user-authorized message>",
      "email": "",
      "language": "fr",
      "source": "agent",
      "version": "unknown",
      "screen": "other",
      "response": null
    }
    POST /api/v1/user-feedback · Bash
    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.json

    Guthaben

    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

    Kontakt · [email protected]