3 · AgentFleet platformTools & MCP integrations

Tools & MCP integrations

At a glance

  • 18 registered tools in the tool registry (data/tool/tools.json)
  • MCP server mounted at /mcp on the FastAPI app (streamable HTTP transport)
  • Single entry point: ToolService.execute() → factory → provider-specific implementation
  • Tools connect agents to ProjectX (TMS), LIA (ticket management), Atlas (address intelligence), and communication channels

Why this matters

Tools are how agents do things beyond generating text. When a WISMO agent fetches a shipment status, it calls fetch_information. When an address intelligence agent updates a score, it calls update_atlas_score. Understanding the tool registry tells you what an agent can and cannot do — and helps you scope new deployments.

The tool registry

All tools are defined in data/tool/tools.json. Each tool has an ID, name, type, description, and input schema.

IDTool nameWhat it does
13send_whatsapp_message_toolSend WhatsApp messages via the communication engine
18fetch_informationFetch trip/consignment details from ProjectX
22lia_post_commentPost a comment to a LIA/Query Builder ticket
26update_analysisUpdate DIA result status in ProjectX
30lia_update_ticket_statusUpdate ticket status (acknowledged, actionTaken, closed)
32schedule_followupSchedule a follow-up call/message, set opt-out or preferences
33lia_update_ticket_custom_fieldUpdate custom fields on LIA tickets
40register_atlas_orderRegister a consignment in Atlas (address intelligence)
41update_atlas_statusSet resolution status on an Atlas address
42update_atlas_scoreWrite confidence score + structured address to Atlas
44update_consignment_addressBatch-update consignment addresses via ProjectX
48object_actionGeneric ProjectX object action (fetch, update, status change)
105update_hub_stateUpdate hub rain mode state

How tools work

  1. An agent node’s LLM decides to call a tool (via function calling).
  2. ToolService.execute() looks up the tool in the registry.
  3. Routes to the Python function implementation in app/functions/.
  4. The function calls the external system (ProjectX API, LIA API, Atlas, etc.).
  5. Result flows back to the agent as a tool response message.

Tool types

TypeDescription
functionPython function tool — the standard type. Defined in app/functions/, registered in tools.json.
external_safeA function tool also exposed via MCP and the HMAC external API. Set external_safe: true in the tool definition.

MCP server

The platform runs a Model Context Protocol server using FastMCP, mounted at /mcp on the main FastAPI app.

What it does

Exposes external_safe tools over streamable HTTP transport, allowing external AI systems (Claude Code, other agents, third-party integrations) to call platform tools without going through the full agent workflow.

How it works

  • Auth: API key-based (MCP_API_KEY env var). Currently provisional — gated by ALLOW_API_KEY_BASED_MCP_UNSAFE_FOR_PRODUCTION flag.
  • Tool registration: All tools in tools.json with external_safe: true are auto-registered on startup.
  • Dispatch: Uses the same invoke_function_at_path() as the HMAC callback route.
  • Security: DNS rebinding protection, configurable allowed hosts/origins via MCP_ALLOWED_HOSTS / MCP_ALLOWED_ORIGINS.

External integrations

IntegrationWhat the platform connects toTools involved
ProjectXShipsy’s main logistics platform — auth, consignment, trip, geocodingfetch_information, update_consignment_address, object_action, update_analysis
LIA / Query BuilderTicket management systemlia_post_comment, lia_update_ticket_status, lia_update_ticket_custom_field
Project AtlasAddress intelligence serviceregister_atlas_order, update_atlas_status, update_atlas_score
Communication providersWhatsApp (Meta, Novomind, Twilio), SMS (Twilio, AWS SNS), Voice (ElevenLabs, ReachAll, LiveKit, Twilio), Emailsend_whatsapp_message_tool, schedule_followup

How to add a new tool

  1. Define the tool in data/tool/tools.json — give it a unique ID, name, description, and JSON schema for inputs.
  2. Implement the Python function in app/functions/. Follow the pattern of existing tools (receive input dict, call external API, return result dict).
  3. Mark as external (optional): set external_safe: true if the tool should be exposed via MCP and the HMAC API.
  4. Assign the tool to agent nodes in a workflow definition — agents can only call tools explicitly assigned to them.

Sources

Changelog

  • 26 May 2026: Full content from GitHub repo exploration. Tool registry, MCP server, integration mapping.