Tookan MCP by usefulapi

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

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
95%
Vollständigkeit des Schemas
91%
Qualität der Benennung
99%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'get_agent' description lacks action verbin get_agent

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~4,030Tokens (Tool-Definitionen)
~2.0 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (3.15% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

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

Remote-Endpunkte

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

Was es kann

Tool-Inventar

Tools (15)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢get_account

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

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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).

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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).

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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.

Eingabe-Schema

{
  "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"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet15 Tools