{"serverId":"mcp-registry/io.github.heusai/notsy-facturacion","tools":[{"name":"preview_factura","fixed":{"name":"preview_factura","description":"DRY-RUN: valida la factura y calcula los totales (subtotal, IVA, retenciones, total) SIN\n    timbrar, reservar ni cobrar. También devuelve la cotización canónica de créditos y el saldo\n    proyectado. Úsalo SIEMPRE antes de emitir_cfdi para confirmar el monto, el costo y que los datos\n    pasen la validación. Aplicar un anticipo cotiza dos CFDI (ingreso + egreso).\n\n    Args:\n        conceptos: lista de conceptos. Cada uno: {descripcion, clave_prodserv, clave_unidad,\n            cantidad, valor_u","inputSchema":{"type":"object","title":"preview_facturaArguments","required":["conceptos"],"properties":{"cliente":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Cliente","default":null},"conceptos":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Conceptos"},"emisor_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emisor Id","default":null},"cliente_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cliente Id","default":null},"forma_pago":{"type":"string","title":"Forma Pago","default":"03"},"anticipo_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Anticipo Id","default":null},"metodo_pago":{"type":"string","title":"Metodo Pago","default":"PUE"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":361,"tokensAfter":361},{"name":"resolver_claves_sat","fixed":{"name":"resolver_claves_sat","description":"Convierte una descripción en lenguaje natural a las claves del SAT necesarias para facturar.\n\n    Devuelve `sugerencia` con clave_prodserv, clave_unidad, objeto_imp, tasa_iva y uso_cfdi, más\n    `candidatos` por si quieres elegir otra. Llámalo antes de armar un concepto si no conoces las claves.\n\n    Args:\n        descripcion: qué se vende, p.ej. \"consultoría de marketing\" o \"laptop Dell\".\n        unidad_hint: opcional, unidad de medida en palabras (\"servicio\", \"hora\", \"pieza\", \"kg\").\n        co","inputSchema":{"type":"object","title":"resolver_claves_satArguments","required":["descripcion"],"properties":{"con_iva":{"type":"boolean","title":"Con Iva","default":true},"descripcion":{"type":"string","title":"Descripcion"},"unidad_hint":{"type":"string","title":"Unidad Hint","default":""}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":240,"tokensAfter":240}],"toolsChanged":2,"tokensSaved":0,"todo":[{"tool":"emitir_cfdi","params":["cliente","conceptos","emisor_id","cliente_id","forma_pago","anticipo_id","metodo_pago","observaciones","idempotency_key"]},{"tool":"preview_factura","params":["cliente","conceptos","emisor_id","cliente_id","forma_pago","anticipo_id","metodo_pago"]},{"tool":"resolver_claves_sat","params":["con_iva","descripcion","unidad_hint"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}