# WeedUs Agent API Cannabis B2B wholesale marketplace (vendors <-> retailers) — API for LLM/CLI agents. Base URL: https://commerce.weedus.app/api Auth: X-API-Key: wus_live_... (create at https://commerce.weedus.app/developers, requires a WeedUs account) MCP endpoint: https://commerce.weedus.app/api/mcp (Streamable HTTP, stateless JSON-RPC 2.0, send the X-API-Key header) Docs: https://commerce.weedus.app/developers A key acts as the account that minted it: same role (VENDOR/RETAILER/OTHER/ADMIN), same organization scoping, same team-tier permissions. Only the operations listed below are callable with a key; everything else returns 403. MCP client config: { "mcpServers": { "weedus": { "type": "http", "url": "https://commerce.weedus.app/api/mcp", "headers": { "X-API-Key": "wus_live_YOUR_KEY" } } } } REST usage: standard JSON over HTTPS. Send Content-Type: application/json on writes. Responses are plain JSON objects; errors are { "error": "message", "code"?: "..." }. Errors: 401 invalid/revoked key · 403 operation not allowed for this key/role/tier · 429 rate limited. Operations (name / METHOD path / [roles] / description; {x} = path parameter): cart_get GET /api/cart [RETAILER] View the current shopping cart with items grouped by vendor. cart_add_item POST /api/cart/items [RETAILER] Add a catalog product to the cart. WRITE: modifies the cart. cart_update_item PATCH /api/cart/items/{id} [RETAILER] Change the quantity of a cart item. WRITE: modifies the cart. order_submit POST /api/cart/submit [RETAILER] Submit cart items to a vendor as a real wholesale order request. WRITE: creates an order the vendor will see — confirm with the user before calling. order_list GET /api/cart/requests [RETAILER] List the retailer's submitted order requests. order_get GET /api/cart/requests/{id} [RETAILER] Get one order request with its items and status. vendor_order_list GET /api/cart/vendor-requests [VENDOR] List order requests received from retailers. vendor_order_get GET /api/cart/vendor-requests/{id} [VENDOR] Get one incoming order request. Note: viewing marks the request as VIEWED for the retailer. catalog_list GET /api/catalog/products [VENDOR] List the vendor's own catalog products with filters. catalog_get GET /api/catalog/products/{id} [VENDOR] Get one of the vendor's catalog products. catalog_create POST /api/catalog/products [VENDOR] Create a catalog product manually. WRITE: adds a product to the catalog. catalog_toggle_publish POST /api/catalog/products/{id}/toggle-publish [VENDOR] Toggle a product between published (visible to retailers) and unpublished. WRITE: changes visibility. catalog_categories GET /api/catalog/categories [VENDOR] List the vendor's catalog categories. catalog_product_types GET /api/catalog/product-types [VENDOR] List the vendor's catalog product types. catalog_visibility GET /api/catalog/visibility [VENDOR] List retailers currently blocked from seeing the vendor's catalog. catalog_block_retailer POST /api/catalog/visibility/block [VENDOR] Hide the vendor's catalog from a retailer. WRITE: reversible via catalog_unblock_retailer. catalog_unblock_retailer DELETE /api/catalog/visibility/{retailerId} [VENDOR] Re-allow a blocked retailer to see the vendor's catalog. WRITE: removes the block entry. catalog_retailer_directory GET /api/catalog/retailers [VENDOR,OTHER] Search the retailer directory (for visibility management and outreach). browse_catalog GET /api/catalog-browse [RETAILER,OTHER] Browse published wholesale products across all visible vendors. browse_vendors GET /api/catalog-browse/vendors [RETAILER,OTHER] List vendors with visible published catalogs. browse_vendor_catalog GET /api/catalog-browse/vendor/{vendorId} [RETAILER,OTHER] Browse one vendor's published catalog. browse_product GET /api/catalog-browse/product/{id} [RETAILER,OTHER] Get one published product's details. delivery_list GET /api/deliveries [VENDOR,RETAILER] List deliveries for the caller's organization. delivery_get GET /api/deliveries/{id} [VENDOR,RETAILER] Get one delivery with its line items and workflow state. delivery_schedule_list GET /api/deliveries/schedules [VENDOR,RETAILER,ADMIN] List recurring delivery schedules. delivery_schedule_slots GET /api/deliveries/schedules/{id}/available-slots [VENDOR,RETAILER] List available delivery slots for a schedule on a date. retailer_list GET /api/retailers [VENDOR,RETAILER,ADMIN] List retailers with their active delivery schedules. invoice_list GET /api/invoices [VENDOR,RETAILER] List invoices for the caller's organization. vendorday_list GET /api/vendor-days [VENDOR,RETAILER,OTHER] List vendor day events for the caller's organization. vendorday_get GET /api/vendor-days/{id} [VENDOR,RETAILER,OTHER] Get one vendor day event. vendorday_schedule_list GET /api/vendor-days/schedules [RETAILER] List the retailer's vendor day schedules. vendorday_available GET /api/vendor-days/available [VENDOR,OTHER] List retailers with bookable vendor day schedules. vendorday_slot_availability GET /api/vendor-days/schedules/{id}/availability [VENDOR,RETAILER,OTHER] List slot availability for a schedule on a date. Use this to find the slotId required by vendorday_reserve. vendorday_reserve POST /api/vendor-days/reserve [VENDOR] Book a vendor day slot at a retailer. WRITE: creates a real booking — confirm with the user before calling. vendorday_requests GET /api/vendor-days/requests [VENDOR,RETAILER,OTHER] List vendor day booking requests (sent or received). vendorday_checklist GET /api/vendor-days/checklist [VENDOR,RETAILER] Get a retailer's vendor day checklist. vendorday_attendance GET /api/vendor-days/attendance [RETAILER] Get vendor day attendance stats for the retailer. appointment_list GET /api/appointments [VENDOR,RETAILER] List appointments for the caller's organization. appointment_get GET /api/appointments/{id} [VENDOR,RETAILER] Get one appointment. appointment_businesses GET /api/appointments/businesses [VENDOR,RETAILER,OTHER] Search businesses that can be invited to an appointment. Use this to find the participant IDs required by appointment_create. appointment_create POST /api/appointments [VENDOR,RETAILER,OTHER] Request an appointment with one or more businesses. WRITE: sends a real appointment request — confirm with the user before calling. inventory_list GET /api/inventory [RETAILER] List the retailer's POSaBIT inventory items. inventory_get GET /api/inventory/{id} [RETAILER] Get one inventory item. inventory_filters GET /api/inventory/filters [RETAILER] List available inventory filter values (brands, categories, ...). inventory_status GET /api/inventory/status [RETAILER] Get POSaBIT integration status for the retailer. inventory_sync_status GET /api/inventory/sync/status [RETAILER] Get the status of the latest inventory sync job. vendor_inventory_retailers GET /api/vendor-inventory/retailers [VENDOR] List retailers whose inventory the vendor can browse. vendor_inventory_items GET /api/vendor-inventory/retailers/{retailerId}/items [VENDOR] Browse a retailer's inventory as a vendor. vendor_inventory_filters GET /api/vendor-inventory/retailers/{retailerId}/filters [VENDOR] List filter values for a retailer's inventory. notification_list GET /api/notifications [VENDOR,RETAILER,OTHER,ADMIN] List in-app notifications for the caller. analytics_dashboard GET /api/analytics/dashboard [VENDOR,RETAILER,ADMIN] Get dashboard statistics for the caller's organization. idcard_list GET /api/id-cards [VENDOR,RETAILER] List vendor ID cards. message_unread_count GET /api/messaging/unread-count [VENDOR,RETAILER] Get the unread company-messaging count. Operations marked WRITE in their description perform real business actions (orders, bookings, catalog changes) — agents should confirm with their user first.