Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the QLS in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Pakketdienst QLS (Netherlands): parcel shipments with labels and tracking, shipping products and service points, fulfilment orders picked from the QLS warehouse, fulfilment products and stock, backorders, returns and inbound purchase orders. Deleting products and cancelling orders install switched off.
Try asking
Example prompts for QLS
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → QLS, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
QLS + Microsoft Copilot
Pakketdienst QLS (Netherlands): parcel shipments with labels and tracking, shipping products and service points, fulfilment orders picked from the QLS warehouse, fulfilment products and stock, backorders, returns and inbound purchase orders. Deleting products and cancelling orders install switched off.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
QLS_USERNAME, QLS_PASSWORD
Step 1 — Get credentials
Setting up takes about 5 minutes. You need an account on mijn.pakketdienstqls.nl.
- QLS authenticates the API with HTTP Basic and the login details of the mijn.pakketdienstqls.nl portal. Where your account allows it, use a separate user for the API (ask QLS IT support at [email protected]), so that a person changing their password does not break the connector.
- Put the user name (usually an email address) in
QLS_USERNAMEand the password inQLS_PASSWORD. - Install the connector and run
qls_list_companies. It returns the company id (a UUID) that every other tool takes ascompany_id;qls_get_companyshows one company.
Which API: the QLS Fulfilment and Parcel Service API on https://api.pakketdienstqls.nl (OpenAPI at https://api.pakketdienstqls.nl/swagger/). QLS publishes a v1 and a v2; the connector uses v2 where QLS offers it (shipment creation, returns, purchase orders) and v1 for the rest.
Ids you need first: the company id from qls_list_companies; the brand id from qls_list_brands (a brand carries the sender, return and customs addresses and is needed for shipments and orders); the shipping products from qls_list_shipping_products, with combinations[].id as the product_combination_id, options[].tag as delivery options, prices per country and weight band and maximum dimensions. Pick-up points come from qls_list_service_points or, for one shipping product, qls_list_product_service_points; their servicepoint_code goes on the shipment or order.
What it reads: parcel shipments with status (created, printed, pre_transit, in_transit, delivered, returned_to_sender), barcode, tracking id and tracking URL, filtered by reference, barcode, status, brand, receiver fields, dates or free search; one shipment with its weight and, with with_label, the PDF and ZPL label URLs; the return shipment of a parcel; fulfilment orders with status, ordered, reserved and delivered amounts, receiver, deliveries and the shipments that left the warehouse; fulfilment products with EAN, SKU, article number, prices, stock totals and warehouse locations (zone, rack, shelf, best-before); stock per product (total, reserved, available, salable, sold, backorder, incoming, forecast) and per warehouse location with batch; backorders; returns with status, consumer, original shipment and order and the returned products with reason; purchase orders (announced inbound deliveries) with status, products, suppliers and deliveries, including those in transit; suppliers.
What it writes: qls_create_shipment books a parcel with the carrier and returns barcode, tracking URL and label_pdf_url; sender and return address default to the brand. qls_create_fulfillment_order lets QLS pick, pack and ship products from your stock. qls_update_fulfillment_order puts an order on hold, releases it or changes the processable date, reference, remarks or service point. qls_create_fulfillment_product and qls_update_fulfillment_product maintain articles; qls_create_return_from_order announces a return; qls_create_purchase_order announces goods coming to the warehouse. A shipment costs money and a fulfilment order ships real stock, so before every write the AI shows receiver, products and amounts and shipping product and waits for your yes.
Switched off at install: qls_delete_fulfillment_product and qls_cancel_fulfillment_order, which cannot be undone. An administrator switches them on when the team needs them.
Data formats: every answer is wrapped as {"meta": {"code": 200}, "errors": [], "data": ..., "pagination": ...}; the data is under data. Weights are in grams, prices and cash on delivery in euros, dimensions in millimetres. Ids of companies, brands, orders, products and shipments are UUID strings; shipping product and combination ids are integers. Fulfilment order statuses are error_validation, concept, received, pending, partically_sent (QLS's spelling) and sent. Stock and purchase order date filters take d-m-Y H:i (e.g. 1-10-2026 00:00); the other date filters take a date or date-time such as 2026-10-01 00:00:00.
Paging: lists return up to 100 entries per page. pagination carries page, pageCount, count and nextPage; the AI asks for the next page while nextPage is true.
Common errors: 401 means wrong user name or password: they are the mijn.pakketdienstqls.nl login. 404 (Niet Gevonden) means an unknown id or a company id that is not yours: take ids from the list tools. 422 or a filled errors list is a validation problem; QLS answers in Dutch.
The connector does not cancel parcel shipments, read QLS invoices or change brands and company settings: there are no tools for that.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Microsoft Copilot
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Microsoft Copilot uses MCP servers through agents built in Copilot Studio: you add AnythingMCP to an agent as a tool, then publish the agent to Microsoft 365 Copilot and Teams. Copilot Studio connects from Microsoft's cloud over Streamable HTTP, which AnythingMCP supports.
- In Copilot Studio, open your agent (or create one), go to Tools and choose Add a tool → New tool → Model Context Protocol.
- Enter a Server name (for example
AnythingMCP), a Server description that says what the connector does, and the Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID. Copilot Studio uses the description to decide when to call the server. - Under authentication, choose API key, set Type to Header and the header name to
X-API-Key, then select Create. - In Add tool, choose Create a new connection, paste an MCP API key from AnythingMCP (MCP Servers → your server → API keys) and select Add to agent.
- Try it in the agent's Test pane: ask for something that needs the
QLStools. - Select Publish, then Channels → Microsoft 365 and Microsoft Teams, keep Make agent available in Microsoft Copilot selected and choose Add channel. See agent in Teams installs it for you; in Microsoft 365 Copilot, type @ and pick the agent.
Prefer per-user sign-in? Choose OAuth 2.0 → Dynamic discovery instead of an API key: each user then signs in to AnythingMCP the first time the agent calls it.
Self-hosting? Use your instance's public HTTPS address instead of https://cloud.anythingmcp.com. Copilot Studio connects from Microsoft's cloud, so localhost does not work.
Available tools
| Tool | What it does |
|---|---|
qls_list_companies | List the QLS companies the API user may act for, with their id and name |
qls_get_company | Get one QLS company (id and name) by its id, to confirm which account the API user works on |
qls_list_brands | List the brands (trade names) of a company |
qls_get_brand | Get one brand (trade name) of a company by its id, with its name |
qls_list_shipping_products | List the shipping products (shipping methods such as DHL or PostNL parcel, mailbox or service point) the company may use, with their price… |
qls_list_service_points | Find carrier service points (pick-up points) near a postal code for every service point product the company has enabled, with address… |
qls_list_product_service_points | Find service points near a postal code for one shipping product (for example only DHL service points), with address, opening times and… |
qls_list_shipments | List the parcel shipments of a company with status (created, printed, pre_transit, in_transit, delivered, returned_to_sender), barcode… |
qls_get_shipment | Get one shipment with status, weight in grams, barcode, tracking id and URL |
qls_get_shipment_return | Get the return shipment created for a shipment (status, barcode, tracking), when the consumer sent the parcel back with a return label |
qls_list_fulfillment_orders | List fulfilment orders (orders QLS picks, packs and ships from its warehouse) with status (error_validation, concept, received, pending… |
qls_get_fulfillment_order | Get one fulfilment order with status, amounts ordered, reserved and delivered, receiver, products, deliveries and the shipments (barcode… |
qls_list_fulfillment_products | List the fulfilment products (articles stored at QLS) with name, EAN, SKU, article number, total, reserved and blocked stock and prices |
qls_get_fulfillment_product | Get one fulfilment product with EAN, SKU, prices, stock totals and the warehouse locations (zone, rack, shelf, best-before) where it is… |
qls_list_stock | List stock per fulfilment product only: total, reserved, available, salable, sold, backorder, incoming and forecast amounts. 100 products… |
qls_get_product_stock | Get the warehouse stock records of one fulfilment product: per location the current and reserved amount, batch and best-before date |
qls_list_backorders | List the fulfilment products that are in backorder (ordered but not in stock) with the missing amount, to see what to replenish |
qls_list_returns | List returns handled by QLS (v2) with status (created, approved, rejected, partially_rejected, quarantine, incomplete, completed and more)… |
qls_get_return | Get one return (v2) with status, consumer, original shipment and order and the returned products with expected and received amounts and… |
qls_list_purchase_orders | List purchase orders (announced inbound deliveries of goods to the QLS warehouse, v2) with status (created, in_transit, arrived… |
qls_list_purchase_orders_in_transit | List the purchase orders whose goods are on their way to the QLS warehouse (v2), with deliveries, products and estimated arrival |
qls_get_purchase_order | Get one purchase order (v2) with its products and amounts, suppliers, deliveries (barcode, estimated arrival, received) and labels |
qls_list_suppliers | List the suppliers of a company (id and name), used on purchase orders and linked to fulfilment products for reports |
qls_create_shipment | Create a parcel shipment (v2) and get its barcode, tracking URL and label URLs (label_pdf_url, label_zpl_url) |
qls_create_fulfillment_order | Create a fulfilment order: QLS picks the products from its stock, packs and ships them to the receiver |
qls_update_fulfillment_order | Change a fulfilment order that has not left the warehouse: put it on hold or release it, change the processable date, your reference, the… |
qls_cancel_fulfillment_order | Cancel a fulfilment order that has not been shipped yet; its reserved stock is released |
qls_create_fulfillment_product | Create a fulfilment product (an article QLS will store and ship) with name, EAN, SKU, image and prices |
qls_update_fulfillment_product | Update a fulfilment product: EAN, SKU, image or prices |
qls_delete_fulfillment_product | Delete a fulfilment product that has no stock or open orders |
qls_create_return_from_order | Announce a return for a fulfilment order (v2): QLS expects the listed products back and processes them on arrival |
qls_create_purchase_order | Announce an inbound delivery of goods to the QLS warehouse (v2 purchase order) with the products and amounts, suppliers and the expected… |
Example prompts
- "Which QLS shipping products can we use for the Netherlands and Belgium, with their price per weight band?"
- "Find the DHL service points near postal code 3011 AB."
- "Create a PostNL parcel for order 1042 to Jan de Vries, Rotterdam, 1,200 grams. Show me receiver, product and weight first."
- "Which fulfilment products have fewer than 20 units available, and what is incoming?"
- "List the fulfilment orders that are still pending or partically_sent from this week."
FAQ
Which Copilot is this for? Microsoft 365 Copilot at work, through agents built in Copilot Studio. The Microsoft Copilot app for personal accounts has no option to add your own MCP server.
What do I need? A work account with access to Copilot Studio (a license or a trial) to build the agent. People who use it in Microsoft 365 Copilot or Teams need access to the agent: share it with them, or ask an admin to publish it to the organization. If your organization applies data policies to Power Platform connectors, they cover MCP servers too.
The agent doesn't call the tools. Check that the header name is exactly X-API-Key and that the key belongs to the same MCP server as the URL, and make the server description specific: Copilot Studio uses it to decide when to call the server. Publish the agent again after each change; in an open chat, type "start over" to get the new version.
Next steps
- Connector landing page
- Connect to Claude
- Connect to ChatGPT
- Connect to Cursor
- Connect to Gemini
- Connect to Meta Muse
Was this guide helpful?