Tookan MCP by usefulapi

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

我該用這個嗎

品質與安全性

A
說明品質
95%
結構描述完整度
91%
命名品質
99%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(1)

  • LOWTool 'get_agent' description lacks action verb在 get_agent 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,030Token(工具定義)
~2.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.15%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

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

遠端端點

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

它能做什麼

工具清單

工具(15)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢get_account

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

輸入結構描述

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

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本15 個工具