Developer Preview MCP Protocol

Fulfillment MCP Server

Make fulfillment operations data queryable by AI agents. Handoff time, SLA compliance, provider comparison. Works with Claude, ChatGPT, and any MCP client.

Developer Preview: We're piloting this with a small group of Shopify merchants. The spec below reflects real data we already collect. Request early access if you want to connect your fulfillment data to AI agents.

Overview

AI agents can browse your Shopify store, manage carts, and complete checkout. Ask one how your 3PL performed last week and you get nothing. Not because the AI isn't capable. Because the data isn't connected.

This MCP server exposes the same fulfillment metrics you see in the 3PL Pulse dashboard: handoff time, SLA compliance, provider scorecards. It uses the Model Context Protocol, so any MCP-compatible AI agent can query them.

The data layer already exists. 3PL Pulse connects to ShipBob, Amazon MCF, and other providers through direct API integrations, normalizes the events, and calculates the metrics. This MCP server wraps that data in a protocol AI agents understand. For direct programmatic access, see the REST API.

What you can ask

  • "How's fulfillment looking this week?"
  • "Which orders missed their 2-day SLA?"
  • "Compare ShipBob and Amazon MCF on handoff time"
  • "Show me the timeline for order #1847"
  • "Are any providers trending worse this month?"

Prerequisites

  • A 3PL Pulse account with at least one provider connected (ShipBob, Amazon MCF, etc.)
  • An MCP-compatible AI client (Claude Desktop, Claude Code, ChatGPT, or any MCP client)
  • An API key from your 3PL Pulse dashboard

Connect to the Server

Add the 3PL Pulse MCP server to your AI agent's configuration:

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "3pl-pulse": {
      "url": "https://mcp.3plpulse.com/sse",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "3pl-pulse": {
      "type": "sse",
      "url": "https://mcp.3plpulse.com/sse",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Other MCP Clients

Any client that supports the MCP SSE transport can connect. The server endpoint is https://mcp.3plpulse.com/sse with Bearer token authentication.

Tools

Tools are functions your AI agent can call. Each returns structured JSON. The server provides four tools covering performance metrics, SLA monitoring, provider comparison, and order-level timelines.

get_fulfillment_metrics

Retrieve aggregate fulfillment performance metrics for a given period.

Parameters

Name Type Required Description
period string Yes "today", "last_7_days", "last_30_days", or "custom"
start_date string No ISO 8601 date. Required when period is "custom"
end_date string No ISO 8601 date. Required when period is "custom"
provider string No Filter to a specific provider: "shipbob", "amazon_mcf", etc.

Example Response

{
  "period": "last_7_days",
  "order_volume": 847,
  "avg_handoff_time_hours": 16.3,
  "handoff_time_p95_hours": 28.1,
  "on_time_rate": 0.94,
  "sla_compliance_rate": 0.91,
  "sla_breaches": 8,
  "providers": {
    "shipbob": {
      "order_volume": 612,
      "avg_handoff_time_hours": 18.3,
      "on_time_rate": 0.92,
      "sla_compliance_rate": 0.89
    },
    "amazon_mcf": {
      "order_volume": 235,
      "avg_handoff_time_hours": 11.2,
      "on_time_rate": 0.98,
      "sla_compliance_rate": 0.97
    }
  }
}

check_sla_breaches

Get orders that have breached or are at risk of breaching their SLA threshold.

Parameters

Name Type Required Description
threshold string No SLA threshold. Default: "2_business_days". Options: "1_business_day", "2_business_days", "3_business_days"
status string No "breached" (already past SLA) or "at_risk" (approaching). Default: both
provider string No Filter to a specific provider
limit number No Max results. Default: 25

Example Response

{
  "threshold": "2_business_days",
  "total_breaches": 8,
  "total_at_risk": 3,
  "by_provider": {
    "shipbob": {
      "breached": 7,
      "at_risk": 2
    },
    "amazon_mcf": {
      "breached": 1,
      "at_risk": 1
    }
  },
  "orders": [
    {
      "order_id": "5765432",
      "shopify_order_number": "#1847",
      "provider": "shipbob",
      "warehouse": "Cicero, IL",
      "status": "breached",
      "ordered_at": "2026-02-14T08:00:00Z",
      "handoff_time_hours": 52.3,
      "current_stage": "packed",
      "sla_threshold_hours": 48
    }
  ]
}

compare_providers

Side-by-side performance comparison across 3PL providers.

Parameters

Name Type Required Description
providers string[] No Providers to compare. Default: all connected providers
metric string No "handoff_time", "on_time_rate", "sla_compliance". Default: all metrics
period string No Default: "last_30_days"

Example Response

{
  "period": "last_30_days",
  "providers": {
    "shipbob": {
      "order_volume": 2403,
      "handoff_time": {
        "p50_hours": 14.1,
        "p95_hours": 26.8,
        "trend": "worsening"
      },
      "on_time_rate": {
        "rate": 0.92,
        "trend": "stable"
      },
      "sla_compliance": {
        "rate": 0.89,
        "trend": "worsening"
      }
    },
    "amazon_mcf": {
      "order_volume": 891,
      "handoff_time": {
        "p50_hours": 8.4,
        "p95_hours": 14.2,
        "trend": "improving"
      },
      "on_time_rate": {
        "rate": 0.98,
        "trend": "stable"
      },
      "sla_compliance": {
        "rate": 0.97,
        "trend": "stable"
      }
    }
  }
}

get_order_timeline

Full fulfillment timeline for a specific order, from Shopify checkout through carrier delivery.

Parameters

Name Type Required Description
order_id string Yes Shopify order ID or order number (e.g., "#1847" or "5765432")

Example Response

{
  "order_id": "5765432",
  "shopify_order_number": "#1847",
  "provider": "shipbob",
  "warehouse": "Cicero, IL",
  "handoff_time_hours": 18.3,
  "sla_status": "on_track",
  "timeline": [
    {
      "stage": "order_placed",
      "occurred_at": "2026-02-14T08:00:00Z",
      "source": "shopify"
    },
    {
      "stage": "received_by_3pl",
      "occurred_at": "2026-02-14T08:15:00Z",
      "source": "shipbob"
    },
    {
      "stage": "picking_started",
      "occurred_at": "2026-02-14T13:45:00Z",
      "source": "shipbob"
    },
    {
      "stage": "packed",
      "occurred_at": "2026-02-14T14:23:00Z",
      "source": "shipbob"
    },
    {
      "stage": "carrier_pickup",
      "occurred_at": "2026-02-14T17:00:00Z",
      "source": "shipbob"
    },
    {
      "stage": "in_transit",
      "occurred_at": "2026-02-14T19:30:00Z",
      "source": "carrier"
    },
    {
      "stage": "delivered",
      "occurred_at": "2026-02-16T14:12:00Z",
      "source": "carrier"
    }
  ],
  "carrier": {
    "name": "FedEx Ground",
    "tracking_number": "794644790138"
  }
}

Resources

Resources are data your AI agent can read without calling a function. They update automatically.

fulfillment://daily-metrics

Today's key fulfillment numbers, updated hourly. Your agent can check this as a quick health pulse without running a full query.

Example Payload

{
  "date": "2026-02-18",
  "updated_at": "2026-02-18T13:00:00Z",
  "orders_today": 127,
  "avg_handoff_time_hours": 15.8,
  "sla_breaches_today": 2,
  "on_time_rate_7d": 0.94,
  "providers_connected": [
    "shipbob",
    "amazon_mcf"
  ]
}

fulfillment://active-breaches

Orders currently past their SLA threshold. Updated in real time as orders progress through fulfillment.

Example Payload

{
  "updated_at": "2026-02-18T13:00:00Z",
  "total_active_breaches": 3,
  "orders": [
    {
      "order_id": "5765432",
      "shopify_order_number": "#1847",
      "provider": "shipbob",
      "warehouse": "Cicero, IL",
      "hours_past_sla": 4.3,
      "current_stage": "picking_started"
    }
  ]
}

fulfillment://provider-scorecard

Rolling 30-day performance summary by provider. Gives your agent the context to answer "how's fulfillment looking?" without querying every metric individually.

Example Payload

{
  "period": "last_30_days",
  "updated_at": "2026-02-18T06:00:00Z",
  "providers": {
    "shipbob": {
      "order_volume": 2403,
      "avg_handoff_time_hours": 16.1,
      "on_time_rate": 0.92,
      "sla_compliance_rate": 0.89,
      "trend": "stable"
    },
    "amazon_mcf": {
      "order_volume": 891,
      "avg_handoff_time_hours": 9.8,
      "on_time_rate": 0.98,
      "sla_compliance_rate": 0.97,
      "trend": "improving"
    }
  }
}

What This Looks Like in Practice

The same AI, the same question. The only difference is whether the data is connected.

Without the fulfillment MCP server:

How's fulfillment looking?

I don't have access to that information.

With the fulfillment MCP server:

How's fulfillment looking?

ShipBob's handoff time averaged 18.3 hours this week, up from 14.1 last week. Seven orders breached the 2-day SLA, all from the Cicero warehouse. Amazon MCF is steady at 11.2 hours. Want me to pull the details on the breached orders?

Supported Providers

Connects to the same providers as 3PL Pulse. Raw data from each provider is normalized into a consistent format, so your agent gets uniform metrics regardless of which 3PL you use.

Provider Integration Data Available
ShipBob Direct API Full timeline: received, picked, packed, shipped, delivered
Amazon MCF Direct API Order status, shipping events, delivery confirmation
SFTP Providers SFTP file sync Varies by provider export format

We add providers regularly. If yours isn't listed, get in touch. We may already support it or can add it.

Authentication

Bearer token authentication. Each API key is tied to your 3PL Pulse account and has access to the providers you've connected.

Authorization: Bearer pulse_live_abc123...

API keys are generated from your 3PL Pulse dashboard. Keys can be revoked at any time.

How It Works

  1. Connect your 3PLs in 3PL Pulse. Install the app, connect ShipBob, Amazon MCF, or other providers.
  2. 3PL Pulse normalizes the data. Raw events from each provider are unified into consistent metrics.
  3. Add the MCP server to your AI agent. Use the config snippets above to connect Claude, ChatGPT, or any MCP client.
  4. Ask questions in natural language. Your agent calls the tools and resources to answer with real data.

Request Early Access

We're piloting this with a small group of Shopify merchants. Join the developer preview to connect your fulfillment data to AI agents.

Get in Touch

Or read the blog post: AI Agents Can Shop for You. They Can't Check Your Warehouse.