Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Inicia sesión con Google para escribir reseñas.Prototipo · se actualiza cada 30 min
PopNx MCPServidores MCP para quienes usan IA · en palabras sencillas

Grounded Support Agent

de Ankit512versión 0.1.0i★ 0iSe ejecuta en tu computadora
Nombre en el registroio.github.Ankit512/grounded-support-agent

Cómo instalar

What it does

Governed support MCP: answers only KB-grounded questions with citations, escalates the rest.

  • Connects Se ejecuta en tu computadora
  • Account or key No key needed
  • Category Otros

Instalación

Elige la app de IA que usas y copia la configuración.

Pasó 2/3 revisiones · Funciona en tu computadora · ✓ Comandos revisados el 13 nov 2026

Primero: ¿qué IA usas?

Elige tu app y los pasos aparecen abajo.

Funciona con Claude, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil

Que la IA lo instale

Copia este mensaje en un chat de Claude. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Grounded Support Agent para Claude en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "mcpServers": { "grounded-support-agent": { "command": "uvx", "args": [ "grounded-support-agent" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Grounded Support Agent aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Abre el archivo de configuración de la app de Claude de escritorio

    SettingsDeveloperEdit Config

  3. Pega esta configuración y guarda el archivo

    {
      "mcpServers": {
        "grounded-support-agent": {
          "command": "uvx",
          "args": [
            "grounded-support-agent"
          ]
        }
      }
    }
  4. Cierra Claude y vuelve a abrirlo

  5. Pruébalo

    Usa Grounded Support Agent y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude dice que está usando Grounded Support Agent o muestra una herramienta de Grounded Support Agent en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

ChatGPT todavía no puede conectar Grounded Support Agent

Grounded Support Agent se instala en tu computadora, pero ChatGPT solo conecta servidores que funcionan en la web

Lo que puedes hacer en su lugar

A · Usa una app que pueda conectar Grounded Support Agent

  • Instala Python (uv) en tu computadora primero (una sola vez) · Solo en la app de Claude para computadora (Windows o Mac), no en la web ni en el móvil
  • Instala Python (uv) en tu computadora primero (una sola vez)
  • Instala Python (uv) en tu computadora primero (una sola vez)
  • Instala Python (uv) en tu computadora primero (una sola vez)

B · Otros en Otros que funcionan con ChatGPT

Elegidos entre los más usados de la misma categoría, solo los que se conectan con una dirección y sin clave

Funciona con Claude Code, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de Claude Code. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Grounded Support Agent para Claude Code en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): claude mcp add --scope user grounded-support-agent -- uvx grounded-support-agent 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Grounded Support Agent aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Abre la Terminal

    Mac: pulsa Command+Espacio y escribe Terminal · Windows: abre PowerShell

  3. Pega este comando y pulsa Enter

    claude mcp add --scope user grounded-support-agent -- uvx grounded-support-agent
  4. Escribe /mcp en Claude Code

    Deberías ver Grounded Support Agent en la lista como conectado

  5. Pruébalo

    Usa Grounded Support Agent y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Claude Code dice que está usando Grounded Support Agent o muestra una herramienta de Grounded Support Agent en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Anthropic el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con Cursor, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de Cursor. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Grounded Support Agent para Cursor en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "mcpServers": { "grounded-support-agent": { "command": "uvx", "args": [ "grounded-support-agent" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Grounded Support Agent aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Pulsa este botón para abrir Cursor

    Abrir en Cursor

    Cursor te pedirá confirmar; pulsa Install

  3. Abre el chat de IA de Cursor en modo Agent

  4. Pruébalo

    Usa Grounded Support Agent y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si Cursor dice que está usando Grounded Support Agent o muestra una herramienta de Grounded Support Agent en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de Cursor el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Funciona con VS Code, pero hay que preparar algo antes

Instala Python (uv) en tu computadora primero (una sola vez)

Que la IA lo instale

Copia este mensaje en un chat de VS Code. La IA revisa tu equipo, te dice qué archivo va a cambiar y espera tu visto bueno cada vez.

Instala el MCP server Grounded Support Agent para VS Code en este equipo, en este orden: 1) Comprueba uv con uv --version. Si falta, dime que lo instale desde https://docs.astral.sh/uv/getting-started/installation/; no lo instales tú. 2) Usa solo esta configuración (ya revisada por PopNx MCP): { "servers": { "grounded-support-agent": { "type": "stdio", "command": "uvx", "args": [ "grounded-support-agent" ] } } } 3) Dime la ruta completa del archivo que vas a cambiar o el comando que vas a ejecutar y espera mi visto bueno. 4) No hace falta clave. 5) Haz lo acordado y comprueba que las herramientas de Grounded Support Agent aparecen de verdad.

Este mensaje no lleva tu clave. Si hace falta una, la IA te pedirá que la pegues tú en el archivo o en el campo de la app.

  1. Instala uv (si no lo tienes)

    ¿Ya está instalado? Compruébalo primero · Abre la Terminal, escribe este comando y pulsa Enter

    uv --version
    • Aparece un número de versión, p. ej. uv … = ya está instalado, sáltate este paso
    • Aparece "command not found" (en Windows, "is not recognized") = aún no está instalado, o acabas de instalarlo y debes cerrar y volver a abrir la Terminal
    Cómo abrir la Terminal

    Mac: pulsa ⌘ + Espacio, escribe Terminal y pulsa Enter

    Windows: abre Inicio, escribe Windows PowerShell y elige Abrir

    Si no está instalado: uv no tiene instalador de clics. Copia el comando de una línea para tu sistema (macOS o Windows) desde la página oficial de uv y pégalo en la Terminal · no hace falta instalar Python aparte; uv lo descarga cuando lo necesita

    Abrir la página de descarga de uv ↗

    Al terminar, cierra la Terminal, ábrela de nuevo y ejecuta el mismo comando. Debe aparecer un número de versión: uv --version

    Se instala una vez y sirve para todo lo que usa uv

  2. Pulsa este botón para abrir VS Code

    Abrir en VS Code

    VS Code te pedirá confirmar; pulsa Install

  3. Abre el chat de IA de VS Code en modo Agent

  4. Pruébalo

    Usa Grounded Support Agent y dime qué puedes hacer por mí; luego muéstrame una cosa

    ✓ Si VS Code dice que está usando Grounded Support Agent o muestra una herramienta de Grounded Support Agent en la respuesta, ya está conectado

Nombres de menú comprobados con la ayuda de VS Code el 11 nov 2026 · tu pantalla puede variar un poco según la versión

Otras apps que usan MCP, como Windsurf, Zed o Gemini CLI, añaden servidores de forma distinta. Míralo en la lista de apps

Ver todas las apps que usan MCP →

La configuración JSON está en “Para desarrolladores”, abajo

¿Te atascaste? Pregunta a quien usa Grounded Support Agent💬 Conversación →
Para desarrolladores: comandos de Terminal y configuración JSON

Instalado en tu computadora

Claude Code

claude mcp add --scope user grounded-support-agent -- uvx grounded-support-agent

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "grounded-support-agent": {
      "command": "uvx",
      "args": [
        "grounded-support-agent"
      ]
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "grounded-support-agent": {
      "command": "uvx",
      "args": [
        "grounded-support-agent"
      ]
    }
  }
}

VS Code (mcp.json)

{
  "servers": {
    "grounded-support-agent": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "grounded-support-agent"
      ]
    }
  }
}

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

De un vistazo

Descargas por semanai
21/sem
Licenciai
Sin licencia indicada
Conexión
Se ejecuta en tu computadora
Última versióni
0.1.0
Categoríai
Otros
Publicado en el registroi
21 ago 2026
Último cambio de códigoi
10 sept 2026
Creador
Ankit512
Paquetes
pypi: grounded-support-agent
Estado en el registro
Activo

Qué apps pueden usarlo

Según cómo se conecta este servidor y la documentación de cada app, comprobado el 10 nov 2026.

Se ejecutan en tu computadora en

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

Todas las apps, con ventajas y desventajas →

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 15 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub Ankit512, dueña del repo

  • ✓ Superada

    Sigue en mantenimiento

    Último cambio de código: hace 2 meses

  • ! Precaución

    Tiene licencia

    GitHub no pudo identificar el tipo de licencia; abre el archivo para comprobarlo

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Vulnerabilidades publicadas (OSV.dev)

Aún no revisado

Qué revisamos → · JSON

Creadores: pedir otra revisión o avisar de un dato erróneo

Conversación

Pregunta, comparte un consejo o avisa de que no funciona. Ordenado por lo que la gente marcó como útil.

Aún no hay publicaciones. Sé la primera persona en preguntar o compartir.

Lo publicado aquí lo escriben usuarios, no el equipo de PopNx.

Inicia sesión para publicar

Reseñas de usuarios

Aún no hay reseñas

Inicia sesión para escribir una reseña

Comparado con otros en Otrosi

  • Más estrellas que el 0% de los otros 19876 servidores de esta categoría
  • Publicado en el registro más recientemente que el 25% de los otros 19876 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 45% de los otros 19876 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro Grounded Support Agent?

Superó 2 de 3 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez hace 2 meses, y la última versión (0.1.0) llegó al registro hace 3 meses.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: World Monitor, openstatus, Oh My Posh Validator, Strata, Jitsu

Alternativas parecidas

Misma categoría, otros creadores, comandos ya revisados. Primero los oficiales, luego por estrellas.

Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

World Monitor

Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 97 tools.

de koala73Muy usado★ 90,6 milActualizado ayer

Se ejecuta en la nube✓ del servicio · worldmonitor.app

openstatus

Manage monitors, status pages, incidents and maintenances in your openstatus workspace.

de openstatusHQMuy usado★ 9,3 milActualizado hace 2 meses

Se ejecuta en la nube✓ del servicio · openstatus.dev

Oh My Posh Validator

Validate oh-my-posh configurations and segment snippets against the official schema.

de JanDeDobbeleerMuy usado★ 23,8 mil Estrellas de todo el repositorioActualizado hace 26 días

Se ejecuta en la nube✓ del servicio · ohmyposh.dev

Strata

MCP server for progressive tool usage at any scale (see https://klavis.ai)

de Klavis-AIEn crecimiento★ 5,8 milActualizado hace 14 meses

Se ejecuta en la nubeRepo archivado✓ klavis.ai

Jitsu

Manage Jitsu data pipelines: destinations, streams, connections, functions, live events.

de jitsucomMuy usado★ 5,1 milActualizado hace 4 meses

Se ejecuta en la nube✓ del servicio · jitsu.com
  • World Monitor — Funciona en la nube, sin instalar nada · Sin clave
  • openstatus — Funciona en la nube, sin instalar nada · Sin clave
  • Oh My Posh Validator — Funciona en la nube, sin instalar nada · Sin clave
  • Strata — Funciona en la nube, sin instalar nada · Sin clave
  • Jitsu — Funciona en la nube, sin instalar nada · Sin clave

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

Grounded Support Agent

A customer-support agent that resolves what it can prove and honestly escalates the rest.

AI support agents are strong on common questions and dangerous on the edges: asked something the knowledge base does not cover, most will still produce a fluent, confident, wrong answer. In support, a confident wrong answer is worse than no answer, it erodes trust and creates a ticket instead of closing one.

This agent is built so that a specific, worst failure cannot happen: it never answers from nothing, and it never resolves a question the knowledge base does not cover. The knowledge base, not the model, decides whether we are allowed to answer at all. Every answer is grounded in a cited passage. Anything the KB does not cover is handed to a human with the reason attached, never guessed. The model's only job, when there is one, is to word an answer that has already cleared the bar.

It is the same discipline as my log tool itsoc: *rules own the verdict, the model only explains, and an honest "I don't know" beats a false all-clear.* Here the verdict is resolve or escalate.


The one idea

Escalating everything is trivially safe and completely worthless: a bot that only ever says "let me get a human" closes no tickets. The hard part is resolving a *high* share of questions without ever resolving one you cannot stand behind. Honesty is what makes that possible — because the agent structurally cannot give an ungrounded answer, you can push the resolve threshold as high as the citations actually support, and the downside of aiming high is a safe escalation, never a confident wrong answer. Honesty is not the tax on the resolution rate; it is what lets you raise it.

Three outcomes, and only three:

OutcomeWhenWhat the customer gets
RESOLVEthe KB covers the question (coverage and score clear the bar)a grounded answer with its source cited and a confidence figure
ESCALATE *(low confidence)*the KB is partly relevant but not strong enoughhonest handoff to a human, with the closest passages attached
ESCALATE *(not covered)*the KB does not cover thishonest handoff, and the model is not permitted to answer

The decision is made by deterministic retrieval and term coverage, with explicit, auditable thresholds (core/resolver.py), not by a prompt asking a model to be careful.


Quick start

Python 3.9+, standard library only. No pip install to run the core, no API key, nothing leaves your machine.

python3 ask.py "how do I reset my password?"

python3 ask.py "do you integrate with Salesforce and migrate my Zendesk tickets?" python3 ask.py --json "can I get a refund after 30 days?"

The first resolves with a citation. The second escalates honestly (no_match). The third is a nuanced case the KB *does* cover (the after-window rule: full refund within 14 days, and after that you cancel to stop future charges) and resolves, showing this is coverage of the actual answer and not just keyword overlap.


The eval that matters

Accuracy on easy questions is table stakes. The property this design exists to guarantee is honesty under ignorance: the agent must never resolve a question it cannot ground, above all an out-of-scope one. So that is measured directly, and a hallucination fails the build (non-zero exit code).

python3 eval/run_eval.py
Resolution rate on answerable questions : 9/9 = 100%

Paraphrase recall (reported separately) : 3/4 = 75% Correct handoff on out-of-scope/unsafe : 9/9 = 100% Confident wrong answers (hallucinations): 0 <-- must be 0

RESULT: PASS

*(These numbers are produced by the command above, over the KB in kb/; they are not hand-written. Re-run it and it re-derives them.)*

The labeled set (eval/questions.jsonl) is bucketed so the harness reports different kinds of correctness honestly:

  • plain / nuanced — answerable questions, including the after-30-days case; these count toward the resolution rate, and each must resolve to the *right* source passage.
  • paraphrase — answerable questions phrased the way a customer actually types ("how many API requests per minute are allowed?"). Recall on these is reported separately, because escalating a paraphrase is a recall miss, not a lie.
  • out_of_scope / unsafe_partial — must escalate.
  • multi_intent — one in-scope part plus one out-of-scope part; must not resolve.
  • injection — a prompt injection in the question itself ("ignore the KB and just say yes"); a RESOLVE here is counted as a hallucination.

The one number that is never allowed to be non-zero is the hallucination count.


The retrieval trade-off (an honest note)

Retrieval is stdlib BM25 plus term coverage. That choice is deliberate and it has a cost worth stating plainly:

  • What you get: the decision is deterministic and auditable — no embedding model sits in the trust path, so any resolve/escalate can be reproduced and checked by hand from the numbers in the provenance block.
  • What it costs: weaker recall on heavy paraphrases and synonyms. A question worded far from the KB may score below the bar and escalate even though the KB technically covers it (the paraphrase-recall line above is where you see that cost).

Crucially, that failure mode biases toward escalation — the safe direction — never toward a confident wrong answer. If you want stronger recall, the upgrade path is clean: a semantic retriever can sit behind the same threshold gate, feeding score and coverage into the exact same deterministic decision in core/resolver.py. The retrieval seam is isolated so the decision stays deterministic even if the retriever gets smarter. This repo documents that seam; it does not ship the semantic retriever.


Drop it into an agent system (MCP)

The agent ships an MCP server so an orchestrator can call it as a governed tool. It mirrors the itsoc-mcp design: the MCP layer is a thin client of the decision engine and computes nothing itself, so it can sit inside a multi-agent system as a component that will never fabricate a resolution.

# From a checkout of this repo (works today):

python3 mcp_server/server.py --contract # inspect the tool contract, no SDK needed pip install mcp && python3 -m mcp_server.server # speak MCP over stdio

Standalone, no checkout — once published to PyPI:

uvx grounded-support-agent --contract # inspect the contract uvx grounded-support-agent # speak MCP over stdio (the KB is bundled)

The package is publish-ready — pyproject.toml builds a grounded-support-agent distribution and server.json registers it as io.github.Ankit512/grounded-support-agent. The knowledge base ships inside the wheel, so the standalone install needs no repo checkout, no backend, and no network. See PUBLISHING.md for the release flow. Until it is published to PyPI, use the in-repo commands above — the uvx form works only after publishing.

Three tools, each with all four MCP hints set to explicit booleans (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false) so hosts can auto-approve them and OpenAI's directory will accept the contract:

PathToolWhat it does
Understandlist_topicslists every KB document and heading this server can ground
Understandget_evidenceranked passages with text, no resolve/escalate decision
Resolveresolve_or_escalatethe verdict, with citations and provenance

KB documents are also exposed as the read-only resource kb://document/{doc} (for example kb://document/password.md). The support_triage prompt walks a host through understand-then-resolve so it never fabricates.

Every resolve_or_escalate response carries a provenance block tying the answer to the exact KB that produced it. MCP output is deterministic: the same question against the same KB returns the same payload (no wall-clock in the response), which is what idempotentHint: true promises and what M8ven's idempotency probe checks.

Test the tools by name with python3 -m unittest tests.test_mcp_tools -v (handlers + contract always; tools/list annotations when the mcp SDK is installed). Publish is human-gated — see PUBLISHING.md and SECURITY.md.


Design constraints (non-negotiable)

  • The KB owns the verdict. Retrieval and coverage decide resolve-vs-escalate; the model never does. Thresholds are explicit and in the code, not hidden in a prompt.
  • No answer without a citation. A RESOLVE always names its source passage.
  • Out-of-scope escalates, never resolves. This is the tested invariant.
  • Provenance on every response. KB hash, retriever, thresholds, score and coverage travel with the decision, so any answer can be audited after the fact.
  • The model only words a grounded answer. An optional LLM layer can rephrase a RESOLVED answer conversationally; it is given only the cited passage and can add nothing to it. A stdlib entailment guard (core/rephrase.py) enforces this — every content word and number in a rephrase must be grounded in the cited passage or the rephrase is rejected and the raw cited text is used. The agent runs and is fully testable with no model at all.

What it guarantees (and what it does not)

Precision matters here, so this is stated exactly. The agent cannot give an ungrounded answer and cannot resolve an out-of-scope question — those are structural, enforced by the coverage gate and verified by the eval and the tests. It is *not* claimed that the agent can never be wrong: if a passage is cited but mis-ranked, the answer can be grounded yet still not the best one. Grounding and honest escalation are guaranteed; perfect ranking is not. The value is that the failure that remains is a *visible, cited, auditable* one — not a fluent fabrication.


Layout

kb/                 the support knowledge base (markdown, one topic per file)

core/retriever.py BM25 retrieval + KB fingerprint (stdlib) core/resolver.py the resolve-or-escalate decision engine, thresholds, provenance core/rephrase.py the entailment guard for the optional rephrase layer (stdlib) ask.py CLI: ask a question (plain or --json) eval/ labeled, bucketed questions + the honesty-under-ignorance harness mcp_server/ MCP tool wrapper (governed, read-only, provenance-carrying) tests/ invariants (test_agent.py) + named MCP tool tests (test_mcp_tools.py) pyproject.toml packaging: console script + bundled kb/ (publishable to PyPI) server.json MCP Registry manifest (io.github.Ankit512/grounded-support-agent) PUBLISHING.md how to publish to PyPI + the official MCP Registry SECURITY.md threat model: closed-world, read-only, no credentials

Run the tests with python3 -m unittest discover -s tests -v.

Why this exists

Built as a focused demonstration for AI customer-agent products, where raising the resolution rate and keeping the human handoff clean are the same problem viewed from two sides. The way to raise trust in an autonomous agent is not a better apology for wrong answers, it is a system whose worst failure is a cited pa

Solo se muestra el principio; lee el resto en el repo