MCP (stdio) server for Chile's SII (tax authority): exposes authenticated reads — RCV, F29, F22, boletas de honorarios, DTE-authorized, peticiones administrativas — plus factura borradores on the Portal MIPYME (never emission) and document downloads, as tools/resources for Claude Desktop and Claude Code.
Server has 4 tools with Spanish descriptions and basic schemas. Naming follows verb_noun pattern (auth_*, operate). Descriptions are present but lack LLM-optimized structure, they read as implementation notes rather than agent guidance. Parameters have types but descriptions are sparse or missing. No output schemas documented. Error handling delegates to domain layer via toolText() wrapper, which returns Spanish error messages but provides no recovery guidance. Tool composition is reasonable (auth_login, auth_status, auth_logout, operate are distinct concerns), but descriptions don't explain WHEN to call each or what prerequisites exist.
Abre el navegador en la página del SII para que el usuario escriba su Clave Tributaria. NUNCA recibe la Clave como argumento (ADR-006); persiste solo cookies. Idempotente sobre una sesión viva. www2=true añade además la sesión de la plataforma www2 (necesaria para carpeta_*): el mismo navegador abre la página OAuth del SII y el usuario vuelve a escribir su Clave ahí (ADR-026).
Cierra la sesión: intenta cerrarla en el servidor (mejor esfuerzo) y borra las cookies locales. No recibe argumentos. Para cambiar de cuenta: auth_logout y luego auth_login.
Lectura LOCAL de la sesión (quién soy, operando-como). refresh=true lee la identidad desde el portal (requiere sesión viva).
Selecciona el RUT bajo el que operas: una empresa representada (rut) o tú mismo (self=true). list=true LISTA los RUT que puedes operar (tú mismo + empresas representadas). Validado contra el conjunto operable. Sin argumentos, reporta el contexto actual.
Descriptions lack LLM-optimized structure. auth_login description reads as implementation detail ('NUNCA recibe la Clave como argumento') rather than agent guidance ('Opens browser for secure SII login; user enters tax ID directly'). No WHEN/WHY context for tool selection.
No output schemas documented. toolText() returns {content: [{type: 'text', text: string}], isError?: boolean} but callers cannot see what text content represents (JSON? CSV? plain text?). Agents cannot parse or chain results.
Error handling provides no recovery guidance. Spanish error messages surface verbatim but lack actionable next steps. E.g., 'Sesión expirada' tells agent nothing, should be 'Session expired. Call auth_login to re-authenticate.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Parameter descriptions are minimal or missing. 'www2' param in auth_login has description but 'refresh' in auth_status lacks context on what 'refresh' means or when to use it. 'rut', 'self', 'list' in operate are underdescribed.
No pagination or result limits documented. If operate list=true returns many RUTs, no indication of max results or how to paginate. Agents may receive unbounded lists.