Gripp MCP by usefulapi
Read projects, invoices, hours and contacts; register hours, create tasks in Gripp.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
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": {
"gripp": {
"url": "https://gripp.usefulapi.io/mcp"
}
}
}Puntos de conexión remotos
https://gripp.usefulapi.io/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (14)
🟢gripp_list_companies(filters, max_results, first_result, order_by, direction)
List companies in Gripp. Companies (customers, suppliers, prospects) with address, VAT/COC numbers, customer number and active flag. Supports filters, paging (max 250 per call) and ordering. Gripp API: company.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_contacts(filters, max_results, first_result, order_by, direction)
List contacts in Gripp. Contact persons with name, e-mail, phone, function and the company id. Supports filters, paging (max 250 per call) and ordering. Gripp API: contact.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_projects(filters, max_results, first_result, order_by, direction)
List projects in Gripp. Projects with name, number, phase, company, account manager, dates, totals and archived flag. Supports filters, paging (max 250 per call) and ordering. Gripp API: project.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_tasks(filters, max_results, first_result, order_by, direction)
List tasks in Gripp. Tasks with description, phase, deadline, estimated hours, company and completion state. Supports filters, paging (max 250 per call) and ordering. Gripp API: task.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_hours(filters, max_results, first_result, order_by, direction)
List hours in Gripp. Time registrations (hours) with date, amount, employee, task, status and description. Supports filters, paging (max 250 per call) and ordering. Gripp API: hour.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_invoices(filters, max_results, first_result, order_by, direction)
List invoices in Gripp. Sales invoices with number, date, status, company, totals, amount paid and open amount. Supports filters, paging (max 250 per call) and ordering. Gripp API: invoice.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_offers(filters, max_results, first_result, order_by, direction)
List offers in Gripp. Quotes (offers) with number, name, date, phase, company, totals and acceptance status. Supports filters, paging (max 250 per call) and ordering. Gripp API: offer.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_employees(filters, max_results, first_result, order_by, direction)
List employees in Gripp. Employees with name, e-mail, function, department, role and active flag. Supports filters, paging (max 250 per call) and ordering. Gripp API: employee.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_tags(filters, max_results, first_result, order_by, direction)
List tags in Gripp. Tags that Gripp uses to label companies, contacts, projects and invoices. Supports filters, paging (max 250 per call) and ordering. Gripp API: tag.get.
Esquema de entrada
{
"type": "object",
"properties": {
"filters": {
"description": "Optional filters, all combined with AND. Custom fields cannot be filtered.",
"type": "array",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$",
"description": "Full field name, for example project.archived or hour.date."
},
"operator": {
"type": "string",
"enum": [
"in",
"notin",
"equals",
"notequals",
"between",
"greaterequals",
"greater",
"lessequals",
"less",
"like",
"isnull",
"isnotnull"
],
"description": "Comparison operator. 'like' uses SQL wildcards, for example %Acme%."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "Value to compare. Use an array for in/notin."
},
"value2": {
"description": "Second value, only for 'between'.",
"type": [
"string",
"number"
]
}
},
"required": [
"field",
"operator",
"value"
]
}
},
"max_results": {
"description": "Rows per page (default 50, maximum 250).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"order_by": {
"description": "Field to sort by, for example company.id. Default: id.",
"type": "string",
"pattern": "^[a-z]+\\.[A-Za-z0-9_]+$"
},
"direction": {
"description": "Sort direction (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_get_record(entity, id)
Get one Gripp record by its numeric id, for companies, contacts, projects, tasks, hours, invoices, offers, employees or invoice lines. Gripp API: <entity>.getone.
Esquema de entrada
{
"type": "object",
"properties": {
"entity": {
"type": "string",
"enum": [
"company",
"contact",
"project",
"task",
"hour",
"invoice",
"invoiceline",
"offer",
"employee"
],
"description": "The record type."
},
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The numeric id (from a gripp_list_* tool)."
}
},
"required": [
"entity",
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢gripp_list_invoice_lines(invoice_id, max_results, first_result)
List invoice lines (description, amount, price, VAT) for one invoice id. Use this to see what an invoice contains. Gripp API: invoiceline.get.
Esquema de entrada
{
"type": "object",
"properties": {
"invoice_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The invoice id (from gripp_list_invoices)."
},
"max_results": {
"description": "Rows per page (default 50).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 250
},
"first_result": {
"description": "Offset of the first row (default 0).",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"invoice_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gripp_create_hour(offerprojectbase, task, employee, date, amount, ...)
WRITE: register hours on a project (and optionally a task) in Gripp. Creates a new time registration each call; a repeat creates a duplicate. Status CONCEPT keeps it editable. Gripp API: hour.create.
Esquema de entrada
{
"type": "object",
"properties": {
"offerprojectbase": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The project id (from gripp_list_projects) the hours belong to."
},
"task": {
"description": "Optional task id (from gripp_list_tasks).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"employee": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The employee id (from gripp_list_employees)."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date of the work, yyyy-mm-dd."
},
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 24,
"description": "Hours worked, for example 1.5."
},
"description": {
"description": "What was done.",
"type": "string",
"maxLength": 2000
},
"status": {
"description": "Default CONCEPT.",
"type": "string",
"enum": [
"CONCEPT",
"DEFINITIVE"
]
}
},
"required": [
"offerprojectbase",
"employee",
"date",
"amount"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gripp_create_task(description, company, content, deadlinedate, estimatedhours, ...)
WRITE: create a task in Gripp. Creates a new task each call; a repeat creates a duplicate. Gripp API: task.create.
Esquema de entrada
{
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Task title."
},
"company": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Company id the task belongs to (from gripp_list_companies)."
},
"content": {
"description": "Longer task text.",
"type": "string",
"maxLength": 10000
},
"deadlinedate": {
"description": "Deadline, yyyy-mm-dd.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"estimatedhours": {
"description": "Estimated hours.",
"type": "number",
"exclusiveMinimum": 0
},
"preferredemployee": {
"description": "Employee id to assign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"description",
"company"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴gripp_create_contact(company, lastname, firstname, email, phone, ...)
WRITE: create a contact person on a company in Gripp. Creates a new contact each call; a repeat creates a duplicate. Gripp API: contact.create.
Esquema de entrada
{
"type": "object",
"properties": {
"company": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Company id (from gripp_list_companies)."
},
"lastname": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Last name."
},
"firstname": {
"description": "First name.",
"type": "string",
"maxLength": 200
},
"email": {
"description": "E-mail address.",
"type": "string",
"maxLength": 320
},
"phone": {
"description": "Phone number.",
"type": "string",
"maxLength": 50
},
"function": {
"description": "Job title.",
"type": "string",
"maxLength": 200
}
},
"required": [
"company",
"lastname"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Comunidad
Evidencia