Recommand MCP by usefulapi

Read documents and the inbox, verify Peppol recipients and send invoices in Recommand.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
88%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,088Tokens (definiciones de herramientas)
~3.0 KBTamaño de respuesta típico
Impacto significativo en la atención (2.41% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "recommand": {
      "url": "https://recommand.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://recommand.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (9)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢recommand_list_companies(enterpriseNumber, vatNumber)

List every company registered under the team, with its verification and Peppol registration status. Start here to get company ids. Not paginated. Recommand API: GET /api/v1/companies.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "enterpriseNumber": {
      "description": "Filter by enterprise number.",
      "type": "string"
    },
    "vatNumber": {
      "description": "Filter by VAT number.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recommand_get_company(companyId)

Get one company with its verification and Peppol registration status. Recommand API: GET /api/v1/companies/{companyId}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "companyId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Company id, for example c_01JQZ8X0M4T7RB6K9V2NDHW3PA (from recommand_list_companies)."
    }
  },
  "required": [
    "companyId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recommand_list_labels

List every label in the team. Use a label id with recommand_list_documents (labelId). Recommand API: GET /api/v1/labels.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recommand_list_documents(limit, page, companyId, labelId, direction, ...)

List sent and received documents, one page at a time. Filter by company, direction, read status, dates, label or failed delivery (deliveryFailed true finds sends that need attention). Recommand API: GET /api/v1/documents.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Items per page.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "page": {
      "description": "Page number, starting at 1.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "companyId": {
      "description": "One company id or a list.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Company id, for example c_01JQZ8X0M4T7RB6K9V2NDHW3PA (from recommand_list_companies)."
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Company id, for example c_01JQZ8X0M4T7RB6K9V2NDHW3PA (from recommand_list_companies)."
          }
        }
      ]
    },
    "labelId": {
      "description": "One label id or a list.",
      "anyOf": [
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "Label id (from recommand_list_labels)."
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Label id (from recommand_list_labels)."
          }
        }
      ]
    },
    "direction": {
      "description": "incoming = received, outgoing = sent.",
      "type": "string",
      "enum": [
        "incoming",
        "outgoing"
      ]
    },
    "search": {
      "description": "Free text search.",
      "type": "string"
    },
    "from": {
      "description": "Created at or after this ISO 8601 timestamp.",
      "type": "string"
    },
    "to": {
      "description": "Created before this ISO 8601 timestamp.",
      "type": "string"
    },
    "isUnread": {
      "description": "true = unread only, false = read only.",
      "type": "boolean"
    },
    "deliveryFailed": {
      "description": "true = only documents with at least one failed delivery.",
      "type": "boolean"
    },
    "excludeAttachments": {
      "description": "true = leave attachments out of the parsed data.",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recommand_get_document(documentId)

Get one sent or received document with its parsed content and delivery status. Recommand API: GET /api/v1/documents/{documentId}.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "documentId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Document id, for example doc_01JQZ8X0M4T7RB6K9V2NDHW3PA (from recommand_list_documents or recommand_get_inbox)."
    }
  },
  "required": [
    "documentId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recommand_get_inbox(companyId)

List incoming documents that are not marked as read yet. Process a document, then call recommand_mark_document_read so it leaves the inbox. Not paginated. Recommand API: GET /api/v1/inbox.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "companyId": {
      "description": "Only this company's inbox.",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢recommand_verify_recipient(peppolAddress, includeEndpointDetails, includeBusinessCard)

Look up a Peppol address in the directory before sending. Reports whether it is registered, the company name and the document types it accepts. isValid false means the lookup failed. Recommand API: POST /api/v1/verify.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "peppolAddress": {
      "type": "string",
      "pattern": "^[^\\s:]+:[^\\s]+$",
      "description": "Peppol address as scheme:identifier, for example \"0208:0123456789\" (Belgian enterprise number)."
    },
    "includeEndpointDetails": {
      "description": "true = add the endpoint details of each document type.",
      "type": "boolean"
    },
    "includeBusinessCard": {
      "description": "true = add the company name and country from the business card.",
      "type": "boolean"
    }
  },
  "required": [
    "peppolAddress"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴recommand_send_invoice(companyId, recipient, email, pdfGeneration, invoice)

SENDS A REAL INVOICE over the Peppol network, by email, or both. This cannot be undone, and each send counts toward the subscription usage. Check the buyer with recommand_verify_recipient first. Do NOT retry after a timeout: list the outgoing documents first, because the invoice may already be sent. If Peppol delivery fails and no email fallback applies, the call returns HTTP 422 and stores nothing. Recommand API: POST /api/v1/{companyId}/send.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "companyId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "The company that sends the invoice."
    },
    "recipient": {
      "anyOf": [
        {
          "type": "string",
          "pattern": "^[^\\s:]+:[^\\s]+$",
          "description": "Peppol address as scheme:identifier, for example \"0208:0123456789\" (Belgian enterprise number)."
        },
        {
          "type": "null"
        }
      ],
      "description": "Buyer's Peppol address. Null sends by email only (then email.to is required)."
    },
    "email": {
      "description": "Email delivery. Optional when a Peppol recipient is given.",
      "type": "object",
      "properties": {
        "when": {
          "description": "\"always\" sends the email with the Peppol transmission. \"on_peppol_failure\" sends it only when Peppol delivery fails.",
          "type": "string",
          "enum": [
            "always",
            "on_peppol_failure"
          ]
        },
        "to": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "string",
            "format": "email",
            "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
          },
          "description": "Email addresses. Required when recipient is null."
        },
        "subject": {
          "type": "string"
        },
        "htmlBody": {
          "type": "string"
        },
        "replyTo": {
          "description": "Where replies go. Defaults to the seller's email address.",
          "type": "string",
          "format": "email",
          "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
        }
      },
      "required": [
        "to"
      ]
    },
    "pdfGeneration": {
      "description": "Attach a generated PDF of the invoice.",
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "filename": {
          "type": "string"
        }
      }
    },
    "invoice": {
      "type": "object",
      "properties": {
        "invoiceNumber": {
          "type": "string",
          "minLength": 1,
          "maxLength": 100,
          "description": "The invoice number the seller assigned."
        },
        "issueDate": {
          "description": "Defaults to today.",
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "dueDate": {
          "description": "Defaults to one month after the issue date.",
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "note": {
          "type": [
            "string",
            "null"
          ]
        },
        "buyerReference": {
          "description": "Buyer routing reference. Defaults to the invoice number.",
          "type": [
            "string",
            "null"
          ]
        },
        "purchaseOrderReference": {
          "description": "The buyer's purchase order number.",
          "type": [
            "string",
            "null"
          ]
        },
        "buyer": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 300,
              "description": "Registered name of the party."
            },
            "street": {
              "type": "string",
              "minLength": 1,
              "description": "Street and number."
            },
            "street2": {
              "description": "Extra address line, for example a suite.",
              "type": [
                "string",
                "null"
              ]
            },
            "city": {
              "type": "string",
              "minLength": 1
            },
            "postalZone": {
              "type": "string",
              "minLength": 1,
              "description": "Postal code."
            },
            "country": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2,
              "description": "ISO 3166-1 alpha-2 country code, for example BE."
            },
            "vatNumber": {
              "description": "VAT number with its country prefix, for example BE0123456789.",
              "type": [
                "string",
                "null"
              ]
            },
            "enterpriseNumber": {
              "description": "National registration number without the country prefix.",
              "type": [
                "string",
                "null"
              ]
            },
            "enterpriseNumberScheme": {
              "description": "Scheme of enterpriseNumber, for example \"0208\" for a Belgian enterprise number.",
              "type": [
                "string",
                "null"
              ]
            },
            "email": {
              "type": [
                "string",
                "null"
              ]
            },
            "phone": {
              "description": "At least 3 digits.",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "name",
            "street",
            "city",
            "postalZone",
            "country"
          ]
        },
        "seller": {
          "description": "Defaults to the company that sends the invoice.",
          "type": "object",
          "properties": {
            "name": {
              "type": "string",
              "minLength": 1,
              "maxLength": 300,
              "description": "Registered name of the party."
            },
            "street": {
              "type": "string",
              "minLength": 1,
              "description": "Street and number."
            },
            "street2": {
              "description": "Extra address line, for example a suite.",
              "type": [
                "string",
                "null"
              ]
            },
            "city": {
              "type": "string",
              "minLength": 1
            },
            "postalZone": {
              "type": "string",
              "minLength": 1,
              "description": "Postal code."
            },
            "country": {
              "type": "string",
              "minLength": 2,
              "maxLength": 2,
              "description": "ISO 3166-1 alpha-2 country code, for example BE."
            },
            "vatNumber": {
              "description": "VAT number with its country prefix, for example BE0123456789.",
              "type": [
                "string",
                "null"
              ]
            },
            "enterpriseNumber": {
              "description": "National registration number without the country prefix.",
              "type": [
                "string",
                "null"
              ]
            },
            "enterpriseNumberScheme": {
              "description": "Scheme of enterpriseNumber, for example \"0208\" for a Belgian enterprise number.",
              "type": [
                "string",
                "null"
              ]
            },
            "email": {
              "type": [
                "string",
                "null"
              ]
            },
            "phone": {
              "description": "At least 3 digits.",
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "name",
            "street",
            "city",
            "postalZone",
            "country"
          ]
        },
        "lines": {
          "minItems": 1,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 500,
                "description": "The item or service billed."
              },
              "description": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "sellersId": {
                "description": "The seller's item code or SKU.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "quantity": {
                "description": "Units billed. Default \"1.00\".",
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d{1,4})?$"
              },
              "unitCode": {
                "description": "UN/ECE Rec 20 unit code. Default \"C62\" (one unit), \"HUR\" for hours.",
                "type": "string"
              },
              "netPriceAmount": {
                "type": "string",
                "pattern": "^-?\\d+(\\.\\d{1,4})?$",
                "description": "Price of one unit, excluding VAT, for example \"12.40\"."
              },
              "vat": {
                "type": "object",
                "properties": {
                  "percentage": {
                    "type": "string",
                    "pattern": "^-?\\d+(\\.\\d{1,4})?$",
                    "description": "VAT rate in percent, for example \"21.00\". Use \"0.00\" for zero rate."
                  }
                },
                "required": [
                  "percentage"
                ]
              }
            },
            "required": [
              "name",
              "netPriceAmount",
              "vat"
            ]
          },
          "description": "At least one invoice line."
        }
      },
      "required": [
        "invoiceNumber",
        "buyer",
        "lines"
      ],
      "description": "Invoice in Peppol BIS 3 terms. Currency is EUR. Payment means, discounts and attachments are not part of this tool."
    }
  },
  "required": [
    "companyId",
    "recipient",
    "invoice"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡recommand_mark_document_read(documentId, read)

Mark a document as read, which removes it from the inbox. Pass read false to mark it unread again. Calling it again with the same value does no harm. Recommand API: POST /api/v1/documents/{documentId}/mark-as-read.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "documentId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Document id, for example doc_01JQZ8X0M4T7RB6K9V2NDHW3PA (from recommand_list_documents or recommand_get_inbox)."
    },
    "read": {
      "description": "true (default) = read. false = unread.",
      "type": "boolean"
    }
  },
  "required": [
    "documentId"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada9 herramientas