> ## Documentation Index
> Fetch the complete documentation index at: https://docs.yofacturo.es/llms.txt
> Use this file to discover all available pages before exploring further.

# Eines

> Referència de les eines MCP disponibles al servidor de YoFacturo.

# Eines

El servidor exposa **14 eines** agrupades per àrea funcional.

## Organització

### `get_user_organization_info`

Retorna el context de l'organització activa (NIF, règim fiscal i valors per defecte) perquè l'agent pugui operar amb context fiscal correcte quan necessiti context d'empresa o valors fiscals.

***

### `get_mcp_workflows_guidance`

Retorna una guia resumida de workflows MCP (nom del flux, descripció i passos d'arrencada) per ajudar l'agent a planificar o executar fluxos de diversos passos.

***

## Contactes

### `list_contacts`

Cerca contactes de l'organització amb filtres opcionals.

| Paràmetre         | Tipus   | Obligatori | Descripció                               |
| ----------------- | ------- | ---------- | ---------------------------------------- |
| `query`           | string  | No         | Cerca per nom (insensible a majúscules). |
| `document_number` | string  | No         | Filtre per número de document (NIF/CIF). |
| `email`           | string  | No         | Filtre per correu electrònic.            |
| `page`            | integer | No         | Número de pàgina.                        |

***

### `resolve_contact`

Resol de manera determinista un únic contacte. Retorna `status` (`unique` / `ambiguous` / `none`) i fins a 5 candidats. Utilitza-ho abans de qualsevol operació d'escriptura que necessiti un `contact_id`.

| Paràmetre         | Tipus   | Obligatori | Descripció                                          |
| ----------------- | ------- | ---------- | --------------------------------------------------- |
| `query`           | string  | No         | Cerca lliure per nom (insensible a majúscules).     |
| `document_number` | string  | No         | Coincidència exacta amb NIF/CIF.                    |
| `email`           | string  | No         | Coincidència exacta amb correu electrònic.          |
| `id`              | integer | No         | Id exacte del contacte. Ignora la resta de filtres. |

Cal almenys un dels quatre camps.

***

### `create_contact`

Crea un nou contacte a l'organització. Idempotent per `document_number`: si ja existeix un contacte amb aquell NIF/CIF, retorna l'existent en lloc de crear un duplicat.

***

### `update_contact`

Actualitza els camps d'un contacte existent. Només es modifiquen els camps que es passin (semàntica PATCH).

| Paràmetre | Tipus   | Obligatori | Descripció                     |
| --------- | ------- | ---------- | ------------------------------ |
| `id`      | integer | Sí         | Id del contacte a actualitzar. |

***

## Productes

### `resolve_product`

Resol de manera determinista un únic producte. Retorna `status` (`unique` / `ambiguous` / `none`) i candidats. Utilitza-ho abans de crear un esborrany de factura.

| Paràmetre | Tipus   | Obligatori | Descripció                 |
| --------- | ------- | ---------- | -------------------------- |
| `query`   | string  | No         | Cerca lliure per concepte. |
| `id`      | integer | No         | Id exacte del producte.    |

Cal almenys un dels dos camps.

***

### `create_product`

Afegeix un nou producte al catàleg de l'organització.

***

### `update_product`

Actualitza els camps d'un producte existent. Només es modifiquen els camps que es passin (semàntica PATCH).

| Paràmetre | Tipus   | Obligatori | Descripció                     |
| --------- | ------- | ---------- | ------------------------------ |
| `id`      | integer | Sí         | Id del producte a actualitzar. |

***

## Factures

### `resolve_invoice`

Localitza una factura emesa existent.

| Paràmetre               | Tipus   | Obligatori | Descripció                                           |
| ----------------------- | ------- | ---------- | ---------------------------------------------------- |
| `id`                    | integer | No         | Id exacte de la factura.                             |
| `full_number`           | string  | No         | Número complet de la factura (p. ex. `A-2025-0042`). |
| `latest_for_contact_id` | integer | No         | Retorna la factura més recent del contacte indicat.  |

***

### `create_invoice_draft`

Crea un esborrany de factura ordinària (F1). L'esborrany **no s'emet**; utilitza `issue_invoice_draft` per fer-lo fiscalment vinculant.

Retorna el `draft_id`, un `confirmation_token` i una vista prèvia per mostrar a l'usuari abans d'emetre.

| Paràmetre                  | Tipus   | Obligatori | Descripció                                                                           |
| -------------------------- | ------- | ---------- | ------------------------------------------------------------------------------------ |
| `contact_id`               | integer | Sí         | Id del contacte. Utilitza `resolve_contact` per obtenir-lo.                          |
| `lines`                    | array   | Sí         | Almenys una línia. Cada línia ha de tenir `product_id` o (`concept` + `unit_price`). |
| `lines[].product_id`       | integer | No         | Id del producte. Omple prèviament concepte, preu i tipus d'IVA.                      |
| `lines[].concept`          | string  | No\*       | Obligatori si no hi ha `product_id`. Sobreescriu el valor del producte si s'indica.  |
| `lines[].unit_price`       | number  | No\*       | Obligatori si no hi ha `product_id`. Sobreescriu el valor del producte si s'indica.  |
| `lines[].quantity`         | number  | No         | Per defecte `1`.                                                                     |
| `lines[].tax_rate`         | number  | No         | Sobreescriu l'IVA del producte o el de l'organització.                               |
| `lines[].discount_percent` | number  | No         | Descompte en percentatge.                                                            |
| `operation_date`           | string  | No         | Data ISO-8601.                                                                       |
| `operation_description`    | string  | No         | Descripció de l'operació.                                                            |
| `payment_method`           | string  | No         | Mètode de pagament.                                                                  |
| `payment_method_info`      | string  | No         | Informació addicional del mètode de pagament.                                        |

***

### `create_simplified_invoice_draft`

Crea un esborrany de factura simplificada (F2), sense contacte associat. Útil per a tiquets o vendes al públic en general.

Retorna `draft_id`, `confirmation_token` i vista prèvia.

***

### `issue_invoice_draft`

<Warning>
  **Operació destructiva i irreversible.** Un cop emesa, la factura queda encadenada amb hash i no es pot modificar ni eliminar.
</Warning>

<Warning>
  Tingues en compte que les factures **no s'enviaran a Verifactu** fins que no enviïs la sol·licitud des de la plataforma.
</Warning>

Emet un esborrany (F1 o F2), fent-lo fiscalment vinculant. La factura s'envia automàticament a VeriFactu.

| Paràmetre            | Tipus   | Obligatori | Descripció                                                                           |
| -------------------- | ------- | ---------- | ------------------------------------------------------------------------------------ |
| `draft_id`           | integer | Sí         | Id de l'esborrany a emetre.                                                          |
| `confirmation_token` | string  | No         | Token retornat pel pas de creació de l'esborrany. Ha de coincidir si va ser generat. |
| `send_email`         | boolean | No         | Si és `true`, envia la factura emesa per correu al contacte. Per defecte `false`.    |

***

### `send_invoice_email`

Envia o reenvía una factura emesa per correu electrònic al contacte associat.

| Paràmetre           | Tipus   | Obligatori | Descripció              |
| ------------------- | ------- | ---------- | ----------------------- |
| `issued_invoice_id` | integer | Sí         | Id de la factura emesa. |

***

## Prompt

### `create_invoice`

Flux guiat complet per emetre una factura. L'agent resol el contacte i els productes, crea l'esborrany, presenta la vista prèvia i sol·licita confirmació explícita abans d'emetre.
