Skip to main content
Glama

list_services

List all APC Overnight delivery services including friendly key, label, and ProductCode to find available services for your account and routing.

Instructions

List every APC Overnight delivery service with friendly key, label and ProductCode. Service availability depends on your APC account and routing — confirm with your depot before relying on an unusual service.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The 'list_services' tool handler: registered via server.tool() with schema (no params) and inline async function that returns the hardcoded list of APC delivery services with friendly keys, labels, and ProductCodes.
    server.tool(
      'list_services',
      'List every APC Overnight delivery service with friendly key, label and ProductCode. Service availability depends on your APC account and routing — confirm with your depot before relying on an unusual service.',
      {},
      async () => ({
        content: [{
          type: 'text',
          text: JSON.stringify({
            carrier: 'APC Overnight',
            services: [
              // Weekday parcel
              { key: 'next-day',                        label: 'Next Day Parcel by 16:00',           code: 'ND16' },
              { key: 'next-day-1200',                   label: 'Next Day Parcel by 12:00',           code: 'ND12' },
              { key: 'next-day-1000',                   label: 'Next Day Parcel by 10:00',           code: 'ND10' },
              { key: 'next-day-0900',                   label: 'Next Day Parcel by 09:00',           code: 'ND09' },
              { key: 'two-five-day',                    label: '2-5 Day Parcel (economy)',           code: 'TDAY' },
              // Weekday lightweight
              { key: 'next-day-light',                  label: 'Next Day Lightweight by 16:00',      code: 'LW16' },
              { key: 'next-day-light-1200',             label: 'Next Day Lightweight by 12:00',      code: 'LW12' },
              { key: 'next-day-light-1000',             label: 'Next Day Lightweight by 10:00',      code: 'LW10' },
              { key: 'next-day-light-0900',             label: 'Next Day Lightweight by 09:00',      code: 'LW09' },
              { key: 'two-five-day-light',              label: '2-5 Day Lightweight',                code: 'TDLW' },
              // Weekday courier pack (pre-printed, up to 5kg)
              { key: 'courier-pack',                    label: 'Next Day Courier Pack by 16:00',     code: 'CP16' },
              { key: 'courier-pack-1200',               label: 'Next Day Courier Pack by 12:00',     code: 'CP12' },
              { key: 'courier-pack-1000',               label: 'Next Day Courier Pack by 10:00',     code: 'CP10' },
              { key: 'courier-pack-0900',               label: 'Next Day Courier Pack by 09:00',     code: 'CP09' },
              { key: 'two-five-day-courier-pack',       label: '2-5 Day Courier Pack',               code: 'TDCP' },
              // Weekday mail pack (pre-printed, up to 1kg)
              { key: 'mail-pack',                       label: 'Next Day Mail Pack by 16:00',        code: 'MP16' },
              { key: 'mail-pack-1200',                  label: 'Next Day Mail Pack by 12:00',        code: 'MP12' },
              { key: 'mail-pack-1000',                  label: 'Next Day Mail Pack by 10:00',        code: 'MP10' },
              { key: 'mail-pack-0900',                  label: 'Next Day Mail Pack by 09:00',        code: 'MP09' },
              { key: 'two-five-day-mail-pack',          label: '2-5 Day Mail Pack',                  code: 'TDMP' },
              // Weekday liquid
              { key: 'liquid',                          label: 'Next Day Liquid Product by 16:00',   code: 'LP16' },
              { key: 'liquid-1200',                     label: 'Next Day Liquid Product by 12:00',   code: 'LP12' },
              { key: 'liquid-1000',                     label: 'Next Day Liquid Product by 10:00',   code: 'LP10' },
              { key: 'liquid-0900',                     label: 'Next Day Liquid Product by 09:00',   code: 'LP09' },
              { key: 'two-five-day-liquid',             label: '2-5 Day Liquid Product',             code: 'TDLP' },
              // Weekday limited quantity (DG under LQ exemption)
              { key: 'limited-quantity',                label: 'Next Day Limited Quantity by 16:00', code: 'LQ16' },
              { key: 'limited-quantity-1200',           label: 'Next Day Limited Quantity by 12:00', code: 'LQ12' },
              { key: 'limited-quantity-1000',           label: 'Next Day Limited Quantity by 10:00', code: 'LQ10' },
              { key: 'limited-quantity-0900',           label: 'Next Day Limited Quantity by 09:00', code: 'LQ09' },
              // Weekday non-conveyable
              { key: 'non-conveyable',                  label: 'Next Day Non-Conveyable by 16:00',   code: 'NC16' },
              { key: 'non-conveyable-1200',             label: 'Next Day Non-Conveyable by 12:00',   code: 'NC12' },
              { key: 'non-conveyable-1000',             label: 'Next Day Non-Conveyable by 10:00',   code: 'NC10' },
              { key: 'non-conveyable-0900',             label: 'Next Day Non-Conveyable by 09:00',   code: 'NC09' },
              { key: 'two-five-day-non-conveyable',     label: '2-5 Day Non-Conveyable',             code: 'TDNC' },
              // Weekday excess
              { key: 'excess',                          label: 'Next Day Excess Parcel by 16:00',    code: 'XS16' },
              { key: 'excess-1200',                     label: 'Next Day Excess Parcel by 12:00',    code: 'XS12' },
              { key: 'excess-1000',                     label: 'Next Day Excess Parcel by 10:00',    code: 'XS10' },
              { key: 'excess-0900',                     label: 'Next Day Excess Parcel by 09:00',    code: 'XS09' },
              // Saturday parcel
              { key: 'saturday-1200',                   label: 'Saturday Parcel by 12:00',           code: 'NS12' },
              { key: 'saturday-1000',                   label: 'Saturday Parcel by 10:00',           code: 'NS10' },
              { key: 'saturday-0900',                   label: 'Saturday Parcel by 09:00',           code: 'NS09' },
              // Saturday lightweight
              { key: 'saturday-light-1200',             label: 'Saturday Lightweight by 12:00',      code: 'LS12' },
              { key: 'saturday-light-1000',             label: 'Saturday Lightweight by 10:00',      code: 'LS10' },
              { key: 'saturday-light-0900',             label: 'Saturday Lightweight by 09:00',      code: 'LS09' },
              // Saturday courier pack
              { key: 'saturday-courier-pack-1200',      label: 'Saturday Courier Pack by 12:00',     code: 'CS12' },
              { key: 'saturday-courier-pack-1000',      label: 'Saturday Courier Pack by 10:00',     code: 'CS10' },
              { key: 'saturday-courier-pack-0900',      label: 'Saturday Courier Pack by 09:00',     code: 'CS09' },
              // Saturday mail pack
              { key: 'saturday-mail-pack-1200',         label: 'Saturday Mail Pack by 12:00',        code: 'MS12' },
              { key: 'saturday-mail-pack-1000',         label: 'Saturday Mail Pack by 10:00',        code: 'MS10' },
              { key: 'saturday-mail-pack-0900',         label: 'Saturday Mail Pack by 09:00',        code: 'MS09' },
              // Saturday liquid
              { key: 'saturday-liquid-1200',            label: 'Saturday Liquid Product by 12:00',   code: 'SL12' },
              { key: 'saturday-liquid-1000',            label: 'Saturday Liquid Product by 10:00',   code: 'SL10' },
              { key: 'saturday-liquid-0900',            label: 'Saturday Liquid Product by 09:00',   code: 'SL09' },
              // Saturday limited quantity
              { key: 'saturday-limited-quantity-1200',  label: 'Saturday Limited Quantity by 12:00', code: 'SQ12' },
              { key: 'saturday-limited-quantity-1000',  label: 'Saturday Limited Quantity by 10:00', code: 'SQ10' },
              { key: 'saturday-limited-quantity-0900',  label: 'Saturday Limited Quantity by 09:00', code: 'SQ09' },
              // Saturday non-conveyable
              { key: 'saturday-non-conveyable-1200',    label: 'Saturday Non-Conveyable by 12:00',   code: 'SN12' },
              { key: 'saturday-non-conveyable-1000',    label: 'Saturday Non-Conveyable by 10:00',   code: 'SN10' },
              { key: 'saturday-non-conveyable-0900',    label: 'Saturday Non-Conveyable by 09:00',   code: 'SN09' },
              // Saturday excess
              { key: 'saturday-excess-1200',            label: 'Saturday Excess Parcel by 12:00',    code: 'SX12' },
              { key: 'saturday-excess-1000',            label: 'Saturday Excess Parcel by 10:00',    code: 'SX10' },
              { key: 'saturday-excess-0900',            label: 'Saturday Excess Parcel by 09:00',    code: 'SX09' },
              // Ireland road service
              { key: 'ireland-road',                    label: '2-5 Day Road Service to Ireland',    code: 'ROAD' },
              { key: 'ireland-road-return',             label: '2-5 Day Road Service from Ireland',  code: 'RD16' },
              // 2nd class mail (via Whistl)
              { key: 'second-class-mail',               label: '2nd Class Mail (Whistl)',            code: 'POST' },
            ],
            note: 'Pass either the friendly key (e.g. "next-day") or the raw ProductCode (e.g. "ND16") to book_shipment. Service availability depends on your APC contract and destination — confirm with your depot.',
          }, null, 2),
        }],
      })
    );
  • src/index.js:321-419 (registration)
    The 'list_services' tool is registered with the MCP server via server.tool('list_services', ...) at line 321-419.
    server.tool(
      'list_services',
      'List every APC Overnight delivery service with friendly key, label and ProductCode. Service availability depends on your APC account and routing — confirm with your depot before relying on an unusual service.',
      {},
      async () => ({
        content: [{
          type: 'text',
          text: JSON.stringify({
            carrier: 'APC Overnight',
            services: [
              // Weekday parcel
              { key: 'next-day',                        label: 'Next Day Parcel by 16:00',           code: 'ND16' },
              { key: 'next-day-1200',                   label: 'Next Day Parcel by 12:00',           code: 'ND12' },
              { key: 'next-day-1000',                   label: 'Next Day Parcel by 10:00',           code: 'ND10' },
              { key: 'next-day-0900',                   label: 'Next Day Parcel by 09:00',           code: 'ND09' },
              { key: 'two-five-day',                    label: '2-5 Day Parcel (economy)',           code: 'TDAY' },
              // Weekday lightweight
              { key: 'next-day-light',                  label: 'Next Day Lightweight by 16:00',      code: 'LW16' },
              { key: 'next-day-light-1200',             label: 'Next Day Lightweight by 12:00',      code: 'LW12' },
              { key: 'next-day-light-1000',             label: 'Next Day Lightweight by 10:00',      code: 'LW10' },
              { key: 'next-day-light-0900',             label: 'Next Day Lightweight by 09:00',      code: 'LW09' },
              { key: 'two-five-day-light',              label: '2-5 Day Lightweight',                code: 'TDLW' },
              // Weekday courier pack (pre-printed, up to 5kg)
              { key: 'courier-pack',                    label: 'Next Day Courier Pack by 16:00',     code: 'CP16' },
              { key: 'courier-pack-1200',               label: 'Next Day Courier Pack by 12:00',     code: 'CP12' },
              { key: 'courier-pack-1000',               label: 'Next Day Courier Pack by 10:00',     code: 'CP10' },
              { key: 'courier-pack-0900',               label: 'Next Day Courier Pack by 09:00',     code: 'CP09' },
              { key: 'two-five-day-courier-pack',       label: '2-5 Day Courier Pack',               code: 'TDCP' },
              // Weekday mail pack (pre-printed, up to 1kg)
              { key: 'mail-pack',                       label: 'Next Day Mail Pack by 16:00',        code: 'MP16' },
              { key: 'mail-pack-1200',                  label: 'Next Day Mail Pack by 12:00',        code: 'MP12' },
              { key: 'mail-pack-1000',                  label: 'Next Day Mail Pack by 10:00',        code: 'MP10' },
              { key: 'mail-pack-0900',                  label: 'Next Day Mail Pack by 09:00',        code: 'MP09' },
              { key: 'two-five-day-mail-pack',          label: '2-5 Day Mail Pack',                  code: 'TDMP' },
              // Weekday liquid
              { key: 'liquid',                          label: 'Next Day Liquid Product by 16:00',   code: 'LP16' },
              { key: 'liquid-1200',                     label: 'Next Day Liquid Product by 12:00',   code: 'LP12' },
              { key: 'liquid-1000',                     label: 'Next Day Liquid Product by 10:00',   code: 'LP10' },
              { key: 'liquid-0900',                     label: 'Next Day Liquid Product by 09:00',   code: 'LP09' },
              { key: 'two-five-day-liquid',             label: '2-5 Day Liquid Product',             code: 'TDLP' },
              // Weekday limited quantity (DG under LQ exemption)
              { key: 'limited-quantity',                label: 'Next Day Limited Quantity by 16:00', code: 'LQ16' },
              { key: 'limited-quantity-1200',           label: 'Next Day Limited Quantity by 12:00', code: 'LQ12' },
              { key: 'limited-quantity-1000',           label: 'Next Day Limited Quantity by 10:00', code: 'LQ10' },
              { key: 'limited-quantity-0900',           label: 'Next Day Limited Quantity by 09:00', code: 'LQ09' },
              // Weekday non-conveyable
              { key: 'non-conveyable',                  label: 'Next Day Non-Conveyable by 16:00',   code: 'NC16' },
              { key: 'non-conveyable-1200',             label: 'Next Day Non-Conveyable by 12:00',   code: 'NC12' },
              { key: 'non-conveyable-1000',             label: 'Next Day Non-Conveyable by 10:00',   code: 'NC10' },
              { key: 'non-conveyable-0900',             label: 'Next Day Non-Conveyable by 09:00',   code: 'NC09' },
              { key: 'two-five-day-non-conveyable',     label: '2-5 Day Non-Conveyable',             code: 'TDNC' },
              // Weekday excess
              { key: 'excess',                          label: 'Next Day Excess Parcel by 16:00',    code: 'XS16' },
              { key: 'excess-1200',                     label: 'Next Day Excess Parcel by 12:00',    code: 'XS12' },
              { key: 'excess-1000',                     label: 'Next Day Excess Parcel by 10:00',    code: 'XS10' },
              { key: 'excess-0900',                     label: 'Next Day Excess Parcel by 09:00',    code: 'XS09' },
              // Saturday parcel
              { key: 'saturday-1200',                   label: 'Saturday Parcel by 12:00',           code: 'NS12' },
              { key: 'saturday-1000',                   label: 'Saturday Parcel by 10:00',           code: 'NS10' },
              { key: 'saturday-0900',                   label: 'Saturday Parcel by 09:00',           code: 'NS09' },
              // Saturday lightweight
              { key: 'saturday-light-1200',             label: 'Saturday Lightweight by 12:00',      code: 'LS12' },
              { key: 'saturday-light-1000',             label: 'Saturday Lightweight by 10:00',      code: 'LS10' },
              { key: 'saturday-light-0900',             label: 'Saturday Lightweight by 09:00',      code: 'LS09' },
              // Saturday courier pack
              { key: 'saturday-courier-pack-1200',      label: 'Saturday Courier Pack by 12:00',     code: 'CS12' },
              { key: 'saturday-courier-pack-1000',      label: 'Saturday Courier Pack by 10:00',     code: 'CS10' },
              { key: 'saturday-courier-pack-0900',      label: 'Saturday Courier Pack by 09:00',     code: 'CS09' },
              // Saturday mail pack
              { key: 'saturday-mail-pack-1200',         label: 'Saturday Mail Pack by 12:00',        code: 'MS12' },
              { key: 'saturday-mail-pack-1000',         label: 'Saturday Mail Pack by 10:00',        code: 'MS10' },
              { key: 'saturday-mail-pack-0900',         label: 'Saturday Mail Pack by 09:00',        code: 'MS09' },
              // Saturday liquid
              { key: 'saturday-liquid-1200',            label: 'Saturday Liquid Product by 12:00',   code: 'SL12' },
              { key: 'saturday-liquid-1000',            label: 'Saturday Liquid Product by 10:00',   code: 'SL10' },
              { key: 'saturday-liquid-0900',            label: 'Saturday Liquid Product by 09:00',   code: 'SL09' },
              // Saturday limited quantity
              { key: 'saturday-limited-quantity-1200',  label: 'Saturday Limited Quantity by 12:00', code: 'SQ12' },
              { key: 'saturday-limited-quantity-1000',  label: 'Saturday Limited Quantity by 10:00', code: 'SQ10' },
              { key: 'saturday-limited-quantity-0900',  label: 'Saturday Limited Quantity by 09:00', code: 'SQ09' },
              // Saturday non-conveyable
              { key: 'saturday-non-conveyable-1200',    label: 'Saturday Non-Conveyable by 12:00',   code: 'SN12' },
              { key: 'saturday-non-conveyable-1000',    label: 'Saturday Non-Conveyable by 10:00',   code: 'SN10' },
              { key: 'saturday-non-conveyable-0900',    label: 'Saturday Non-Conveyable by 09:00',   code: 'SN09' },
              // Saturday excess
              { key: 'saturday-excess-1200',            label: 'Saturday Excess Parcel by 12:00',    code: 'SX12' },
              { key: 'saturday-excess-1000',            label: 'Saturday Excess Parcel by 10:00',    code: 'SX10' },
              { key: 'saturday-excess-0900',            label: 'Saturday Excess Parcel by 09:00',    code: 'SX09' },
              // Ireland road service
              { key: 'ireland-road',                    label: '2-5 Day Road Service to Ireland',    code: 'ROAD' },
              { key: 'ireland-road-return',             label: '2-5 Day Road Service from Ireland',  code: 'RD16' },
              // 2nd class mail (via Whistl)
              { key: 'second-class-mail',               label: '2nd Class Mail (Whistl)',            code: 'POST' },
            ],
            note: 'Pass either the friendly key (e.g. "next-day") or the raw ProductCode (e.g. "ND16") to book_shipment. Service availability depends on your APC contract and destination — confirm with your depot.',
          }, null, 2),
        }],
      })
    );
  • Empty schema for list_services — no parameters required.
    {},
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It correctly notes that service availability depends on account and routing, advising confirmation with the depot, which adds important behavioral context beyond a simple list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main purpose, no unnecessary words, and the caveat is efficiently included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description covers the essential return fields (key, label, ProductCode) and the critical caveat about availability, making it complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so baseline is 4. The description adds no additional parameter information, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'List' and the resource 'every APC Overnight delivery service', and it distinguishes from sibling tools that perform different actions like booking or tracking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool should be used to retrieve available services before booking, but it does not explicitly state when to use it versus alternatives or provide exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/catrinmdonnelly/apc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server