Tookan MCP by usefulapi

Read Tookan tasks, agents, teams and customers; create delivery tasks and assign agents.

¿Debería usar esto?

Calidad y seguridad

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

Hallazgos (1)

  • LOWTool 'get_agent' description lacks action verben get_agent

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

Costo de contexto

~4,030Tokens (definiciones de herramientas)
~2.0 KBTamaño de respuesta típico
Impacto significativo en la atención (3.15% 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": {
    "tookan": {
      "url": "https://tookan.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

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

Qué puede hacer

Inventario de herramientas

Herramientas (15)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢get_account

The connected Tookan account (admin user): user_id, email, name, company name and address. Good first call. POST /v2/get_user_details.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_tasks(job_type, start_date, end_date, job_status, fleet_id, ...)

List tasks (Tookan calls them jobs) of one task type within a date range of the task date (at most 31 days, within the last 31 days). Paginated: one Tookan page per call (page, default 1). Filter by status, agent (fleet_id), team, customer, job ids or your order ids. Task status codes: 0 assigned, 1 started, 2 successful, 3 failed, 4 in progress/arrived, 6 unassigned, 7 accepted/acknowledged, 8 declined, 9 cancelled, 10 deleted. POST /v2/get_all_tasks.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "job_type": {
      "anyOf": [
        {
          "type": "number",
          "const": 0
        },
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 3
        }
      ],
      "description": "Task type: 0 = pickup, 1 = delivery, 2 = appointment, 3 = field workforce (FOS)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start of the task-date range, YYYY-MM-DD."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End of the task-date range, YYYY-MM-DD (at most 31 days after start_date)."
    },
    "job_status": {
      "description": "Only tasks in this status. Task status codes: 0 assigned, 1 started, 2 successful, 3 failed, 4 in progress/arrived, 6 unassigned, 7 accepted/acknowledged, 8 declined, 9 cancelled, 10 deleted.",
      "anyOf": [
        {
          "type": "number",
          "const": 0
        },
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 3
        },
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 6
        },
        {
          "type": "number",
          "const": 7
        },
        {
          "type": "number",
          "const": 8
        },
        {
          "type": "number",
          "const": 9
        },
        {
          "type": "number",
          "const": 10
        }
      ]
    },
    "fleet_id": {
      "description": "Only tasks of this agent (from list_agents).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "team_id": {
      "description": "Only tasks of this team (from list_teams).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "customer_id": {
      "description": "Only tasks of this customer (from list_customers).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "job_ids": {
      "description": "Only these task (job) ids.",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "order_ids": {
      "description": "Only tasks with these order ids (your own reference).",
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "custom_fields": {
      "description": "Include the tasks' custom-field data.",
      "type": "boolean"
    },
    "page": {
      "default": 1,
      "description": "Page number (default 1). Tookan pages are a fixed size.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10000
    }
  },
  "required": [
    "job_type",
    "start_date",
    "end_date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_tasks(job_ids, include_task_history, include_additional_info)

Full details of up to 100 tasks by job id: customer, addresses, agent (fleet_id/fleet_name), status, timestamps (started/arrived/completed), tracking link, custom fields; optionally the status history. Task status codes: 0 assigned, 1 started, 2 successful, 3 failed, 4 in progress/arrived, 6 unassigned, 7 accepted/acknowledged, 8 declined, 9 cancelled, 10 deleted. POST /v2/get_job_details.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "job_ids": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      },
      "description": "Task (job) ids, e.g. [5145]."
    },
    "include_task_history": {
      "description": "Include each task's status history.",
      "type": "boolean"
    },
    "include_additional_info": {
      "description": "Include the job's additional info.",
      "type": "boolean"
    }
  },
  "required": [
    "job_ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_tasks_by_order_id(order_ids, include_task_history)

Full details of the tasks carrying the given order ids (the reference you set when creating a task). POST /v2/get_job_details_by_order_id.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "order_ids": {
      "minItems": 1,
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1
      },
      "description": "Order ids, e.g. [\"P000469\"]."
    },
    "include_task_history": {
      "description": "Include each task's status history.",
      "type": "boolean"
    }
  },
  "required": [
    "order_ids"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_task_stats(job_status, job_type, start_date, end_date, team_id)

Task counts per status (e.g. successful vs failed), optionally for one task type, one team and a date range. Task status codes: 0 assigned, 1 started, 2 successful, 3 failed, 4 in progress/arrived, 6 unassigned, 7 accepted/acknowledged, 8 declined, 9 cancelled, 10 deleted. POST /v2/user_task_stats.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "job_status": {
      "description": "Only these statuses, e.g. [2, 3].",
      "type": "array",
      "items": {
        "anyOf": [
          {
            "type": "number",
            "const": 0
          },
          {
            "type": "number",
            "const": 1
          },
          {
            "type": "number",
            "const": 2
          },
          {
            "type": "number",
            "const": 3
          },
          {
            "type": "number",
            "const": 4
          },
          {
            "type": "number",
            "const": 6
          },
          {
            "type": "number",
            "const": 7
          },
          {
            "type": "number",
            "const": 8
          },
          {
            "type": "number",
            "const": 9
          },
          {
            "type": "number",
            "const": 10
          }
        ]
      }
    },
    "job_type": {
      "anyOf": [
        {
          "type": "number",
          "const": 0
        },
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 3
        }
      ],
      "description": "Task type: 0 = pickup, 1 = delivery, 2 = appointment, 3 = field workforce (FOS)."
    },
    "start_date": {
      "description": "Start date, YYYY-MM-DD.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "end_date": {
      "description": "End date, YYYY-MM-DD.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "team_id": {
      "description": "Only tasks of this team.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_agents(name, tags, match_any_tag, status, fleet_type, ...)

List agents (drivers / field workers; Tookan calls them fleets) with fleet_id, name, phone, tags, team and live status (0 available, 1 offline, 2 busy). Filter by name, tags, availability or fleet ids. The API returns the whole list; this tool returns a window (limit/offset, next_offset). POST /v2/get_all_fleets.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Only agents whose name matches this text.",
      "type": "string"
    },
    "tags": {
      "description": "Comma-separated agent tags, e.g. \"mini,suv\".",
      "type": "string"
    },
    "match_any_tag": {
      "description": "With tags: true = agents having ANY of the tags, false = ALL of them.",
      "type": "boolean"
    },
    "status": {
      "description": "0 = only free agents, 1 = only busy agents.",
      "anyOf": [
        {
          "type": "number",
          "const": 0
        },
        {
          "type": "number",
          "const": 1
        }
      ]
    },
    "fleet_type": {
      "description": "1 = captive agents, 2 = freelancers.",
      "anyOf": [
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        }
      ]
    },
    "fleet_ids": {
      "description": "Only these agent ids.",
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "include_team_id": {
      "description": "Include each agent's team id.",
      "type": "boolean"
    },
    "limit": {
      "default": 50,
      "description": "Max items to return (default 50, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "default": 0,
      "description": "Items to skip (use next_offset from the previous call).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_agent(fleet_id)

One agent's profile (name, email, phone, tags, transport, location, rating, active state) and current tasks. Only profile fields are returned; app tokens and password hashes never are. POST /v2/view_fleet_profile.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "fleet_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Agent id (fleet_id from list_agents)."
    }
  },
  "required": [
    "fleet_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_agent_location(fleet_id)

An agent's last known coordinates (latitude/longitude). POST /v2/get_fleet_location.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "fleet_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Agent id (fleet_id from list_agents)."
    }
  },
  "required": [
    "fleet_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_teams(include_agents, limit, offset)

List teams (team_id, name, address, tags). With include_agents, each team also lists its agents. Returns a window (limit/offset, next_offset). POST /v2/view_all_team_only (or /v2/view_teams with agents).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "include_agents": {
      "description": "Also return each team's agents (larger reply).",
      "type": "boolean"
    },
    "limit": {
      "default": 50,
      "description": "Max items to return (default 50, max 200).",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "default": 0,
      "description": "Items to skip (use next_offset from the previous call).",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_customers(name, phone, page)

List customers (customer_id, name, phone, email, address), optionally searched by name or phone. Paginated: one Tookan page per call (page, default 1). POST /v2/get_all_customers.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Search by customer name.",
      "type": "string"
    },
    "phone": {
      "description": "Search by customer phone number.",
      "type": "string"
    },
    "page": {
      "default": 1,
      "description": "Page number (default 1). Tookan pages are a fixed size.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_customer_by_phone(phone)

Find customers by exact phone number. POST /v2/find_customer_with_phone.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "phone": {
      "type": "string",
      "minLength": 3,
      "description": "Phone number, e.g. \"9897416008\" or \"+19897416008\"."
    }
  },
  "required": [
    "phone"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_customer(customer_id)

One customer's profile (contact details, address, coordinates). POST /v2/view_customer_profile.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "customer_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Customer id (from list_customers)."
    }
  },
  "required": [
    "customer_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴create_delivery_task(customer_address, job_delivery_datetime, timezone, customer_username, customer_phone, ...)

WRITE: create a delivery task (job) for a customer address, due by job_delivery_datetime in the given timezone. Optionally assign it to an agent (fleet_id) or team, or let Tookan auto-assign it within the team. Returns job_id and tracking link. Always uses the address given here, not one saved for the customer's phone (ignore_customer_lat_long 1). POST /v2/create_task (has_pickup 0, has_delivery 1, layout_type 0).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "customer_address": {
      "type": "string",
      "minLength": 1,
      "description": "Delivery address."
    },
    "job_delivery_datetime": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}(:\\d{2})?$",
      "description": "Deliver before this local time, YYYY-MM-DD HH:MM:SS."
    },
    "timezone": {
      "type": "integer",
      "minimum": -840,
      "maximum": 720,
      "description": "Minutes to ADD to local time to get UTC (Tookan's convention): IST = -330, CET = -60, EST = 300, PST = 480."
    },
    "customer_username": {
      "description": "Customer name.",
      "type": "string"
    },
    "customer_phone": {
      "description": "Customer phone, e.g. \"+12015555555\".",
      "type": "string"
    },
    "customer_email": {
      "description": "Customer email.",
      "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,}$"
    },
    "order_id": {
      "description": "Your own reference for the task.",
      "type": "string"
    },
    "job_description": {
      "description": "What is to be delivered.",
      "type": "string"
    },
    "latitude": {
      "description": "Delivery latitude (else Tookan geocodes the address).",
      "type": "string"
    },
    "longitude": {
      "description": "Delivery longitude.",
      "type": "string"
    },
    "team_id": {
      "description": "Team to put the task in (from list_teams).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "fleet_id": {
      "description": "Agent to assign the task to (from list_agents).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "auto_assignment": {
      "description": "Let Tookan auto-assign the task to an agent of team_id.",
      "type": "boolean"
    },
    "tags": {
      "description": "Comma-separated agent tags used by auto-assignment.",
      "type": "string"
    },
    "notify": {
      "description": "Send the customer/agent notifications.",
      "type": "boolean"
    }
  },
  "required": [
    "customer_address",
    "job_delivery_datetime",
    "timezone"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴assign_agent_to_task(job_id, fleet_id, team_id, notify)

WRITE: assign (or reassign) a task to an agent of a team; replaces any previous agent. Notifies the agent unless notify is false (so repeating the call notifies again). POST /v2/assign_fleet_to_task.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Task (job) id."
    },
    "fleet_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Agent id (from list_agents)."
    },
    "team_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "The agent's team id (from list_teams)."
    },
    "notify": {
      "description": "Notify the agent (default true).",
      "type": "boolean"
    }
  },
  "required": [
    "job_id",
    "fleet_id",
    "team_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🔴update_task_status(job_id, job_status)

WRITE (DESTRUCTIVE): force a task's status, overriding the agent app. Completing (2 successful, 3 failed) or cancelling (9) closes the task and notifies per the account's settings; confirm with the user first. Deleting (10) is not offered. Settable: 0 assigned, 1 started, 2 successful, 3 failed, 4 arrived, 6 unassigned, 7 accepted, 8 declined, 9 cancelled. POST /v2/update_task_status.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991,
      "description": "Task (job) id."
    },
    "job_status": {
      "anyOf": [
        {
          "type": "number",
          "const": 0
        },
        {
          "type": "number",
          "const": 1
        },
        {
          "type": "number",
          "const": 2
        },
        {
          "type": "number",
          "const": 3
        },
        {
          "type": "number",
          "const": 4
        },
        {
          "type": "number",
          "const": 6
        },
        {
          "type": "number",
          "const": 7
        },
        {
          "type": "number",
          "const": 8
        },
        {
          "type": "number",
          "const": 9
        }
      ],
      "description": "New status code (0-4, 6-9; 10 deleted is not allowed)."
    }
  },
  "required": [
    "job_id",
    "job_status"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada15 herramientas