Frigg MCP Server
A Model Context Protocol (MCP) server that lets an AI assistant read and act on Frigg customer data and connected systems — for support, troubleshooting and back-office tasks. Connect once, then switch between customers in conversation.
1. Connect
| Endpoint | https://mcp.friggcms.no/mcp (Streamable HTTP) |
|---|---|
| Auth | Authorization: Bearer <secret> — shared access secret. Ask your administrator. |
Claude Code
claude mcp add --transport http frigg https://mcp.friggcms.no/mcp \ --header "Authorization: Bearer <shared-secret>"
…or in .mcp.json:
{
"mcpServers": {
"frigg": {
"type": "http",
"url": "https://mcp.friggcms.no/mcp",
"headers": { "Authorization": "Bearer <shared-secret>" }
}
}
}
Codex / other clients
Any client supporting the Streamable HTTP transport works: point it at
https://mcp.friggcms.no/mcp and send the Authorization: Bearer header.
2. Pick the customer
One connection works across every customer. Tell the assistant which customer to work on
and it calls the use_customer tool with that customer's Frigg API key:
"We're working on customer <FriggApiKey>" → use_customer("<FriggApiKey>")
All following tool calls operate on that customer until you switch again. Use
get_active_customer to check the current one.
Single-customer setups may instead send a fixed X-Frigg-Api-Key
header; it is used as the default when no customer has been selected with use_customer.
Several callers on one connection
The selection belongs to the connection, not to whoever made it. One assistant
working through one conversation is safe. But if you run several agents or parallel tasks
over the same connection, they share the one selection: whichever calls
use_customer last wins, and the others keep working - on the wrong customer,
without an error.
For that case every tool takes an optional friggApiKey. Pass it and the call
is pinned to that customer no matter what the others do. Omit it and nothing changes.
get_orders(friggApiKey: "<FriggApiKey>", limit: 10)
Every result also ends with the customer it belongs to, so a wrong one is visible rather than silent:
[customer] SystemId=19000 EcommerceSystemId=6000 IntegrationSystemId=600
3. Use it
Once a customer is selected, ask in natural language — e.g. "show the last 10 orders", "find the customer with email …", "what does the integration log say for order 12345", "how many products are in Shopify". The Integrations menu lists every available tool, grouped by system.
Tools that write or delete change live customer data — use with care. Duell, Visma Global, Shopify and Tripletex tools only work for customers configured with those integrations.
The Zendesk tools are the exception: they work against Kreatif's own
support desk, not a customer, so they ignore use_customer and friggApiKey and
their results carry no [customer] line. update_zendesk_ticket can change a
ticket (assignee, status, comments visible to the requester, fields) - only call it after the
exact change has been confirmed.
Frigg core
72 tools.
| Tool | Description |
|---|---|
change_order_status | Change the status of an order. Status values: 1=New, 2=Processing, 3=Shipped, 4=Completed, 5=Cancelled. |
create_customer | Create a new customer in Frigg. Returns the created customer with its new ID. |
create_invoice | Create an invoice. Provide the invoice as a JSON object matching InvoiceDto. Returns the new invoice id, or -1 if an invoice with the same order/external id already exists. |
create_invoice_detail | Create an invoice detail line. Provide the line as a JSON object matching InvoiceDetailDto. |
create_order | Create a new order in Frigg. Provide order lines as a JSON array, e.g. [{"sku":"ABC","description":"Item","price":80,"quantity":1,"vatPercent":25}]. Returns the created order with its new ID. |
create_product | Create a new product in Frigg. Returns the created product with its new ID. |
create_shipment | Create a shipment. Provide the shipment as a JSON object matching ShipmentDto. Returns the new shipment id. |
delete_contact_person | Delete (soft-delete) a contact person by its ID. |
delete_customer | Delete (soft-delete) a customer in Frigg by ID. The row is flagged as deleted, not physically removed. |
delete_customer_shipping_address | Delete a shipping address from a customer by its address number. |
delete_filter_item | Delete a product filter item. Provide the filter to delete as a JSON object matching FilterDto (the identifying fields must be present). |
delete_invoice | Delete an invoice (and its detail lines) by its table id. This is a hard delete. |
delete_invoice_detail | Delete a single invoice detail line by its id. This is a hard delete. |
delete_order | Delete an order in Frigg by ID. This is a hard delete (order lines and header are removed). |
delete_price | Delete (soft-delete) a customer price row by customer, product and min quantity. |
delete_product | Delete (soft-delete) a product in Frigg by ID. The row is flagged as deleted, not physically removed. |
delete_product_variant_type | Delete a product variant type by its ID. |
delete_shipment | Delete a shipment and all its child rows (parcels, details, deliveries). This is a hard delete. |
delete_shipment_parcel | Delete a single parcel (and its deliveries/details) from a shipment. This is a hard delete. |
find_customer_by_zendesk_org | Find the Frigg customer mapped to a Zendesk organization id (stored as PartnerPortal_ZendeskOrganizationId in the customer's settings). Returns the customer's FriggApiKey and resolved system ids, which can be passed to other tools such as get_logs. Returns found=false if no customer is mapped to that organization. |
get_contact_persons | Get the contact persons (sub-customers) registered under a parent customer. |
get_customer_by_id | Get a specific customer by ID. |
get_customer_prices | Look up customer prices by currency, customer number, SKU and/or customer price groups. |
get_customer_revenue_per_day | Get customer revenue aggregated per day for an optional date range. |
get_customer_revenue_per_month | Get customer revenue aggregated per month for an optional date range. |
get_customer_setting_by_key | Get a single configuration setting value for the customer by its exact key (e.g. 'WooCommerce_Url', 'FriggApiKey'). |
get_customer_settings | Get all configuration settings (integration/ERP config values) for the customer, including key, value and description. This is the customer's full settings list. Optionally filter by a search text on the key. |
get_customer_shipping_addresses | Get shipping addresses for a customer. |
get_customers | Get customers from Frigg. Can be searched and paginated. |
get_integration_log_by_id | Get a specific integration log entry by ID. |
get_integration_logs | Get integration system log entries. Useful for debugging errors and exceptions in the integration layer. |
get_integration_rest_api_logs | Get REST API call log entries for the integration. Shows outbound HTTP calls made by the integration. |
get_invoice_details | Get the detail lines for a specific invoice. |
get_invoices | Get invoices, paginated, with optional search and date range. |
get_invoices_for_order | Get invoices for a specific Frigg order, optionally including detail lines. |
get_logs | Get a unified log view for the customer across all log sources (IntegrationLog, OrderSync, RestApiCall, ApiCall, Event), normalised into one shape with Source, Level (Info/Warning/Error), Timestamp, Summary, Details, Reference, User and Classification. Sorted newest first. Each source is queried independently; unavailable sources are reported in the 'sources' section rather than failing the call. Pass friggApiKey to look up a specific customer without reconnecting the server. |
get_order | Get a specific order by Frigg order ID, including all order lines. |
get_order_details | Get line item details for a specific order. |
get_order_meta_values | Get meta values (custom key-value data) for an order. |
get_order_sync_log_by_ecommerce_order_id | Get order sync log entry by ecommerce order ID (e.g. Shopify order number). |
get_order_sync_log_by_frigg_order_id | Get order sync log entry by Frigg order ID. |
get_order_sync_logs | Get order sync log entries. Shows the transfer status of orders between ecommerce, Frigg and ERP. |
get_order_sync_transactions | Get transaction history for an order sync log entry. Shows each step of the order transfer process. |
get_orders | Get orders from Frigg. Can be filtered by date, status and paginated. |
get_price_list | Get the customer price list, optionally filtered by customer and/or product, paginated. |
get_product | Get a specific product from Frigg by ID or SKU. |
get_product_filters | Get product filters for the customer's system, optionally for a specific SKU. |
get_product_stock | Get stock status for a specific product. |
get_product_variant_types | Get all product variant types for the customer's system. |
get_products | Get products from Frigg. Paginated list with optional search. |
get_products_most_sold | Get the most-sold products for an optional date range. |
get_service_task_by_id | Get a specific service task by ID. |
get_service_tasks | Get service tasks for the integration. Shows background jobs and their status. |
get_shipment | Get a single shipment by its ID. |
get_shipment_parcels | Get the parcels for a shipment. |
get_shipments | Get all shipments for a Frigg order. |
get_stock | Get stock status for all products. |
get_system_info | Get system info for the customer resolved from the FriggApiKey: SystemId, EcommerceSystemId and IntegrationSystemId. Useful as a starting point to confirm which customer/system the current key points to. |
get_webshop_daily_stats | Get webshop daily order statistics for an optional date range. |
save_contact_person | Create or update a contact person under a parent customer. Pass contactId=0 to create a new one. |
save_customer_shipping_address | Create or update a shipping address for a customer. Pass addressId=0 to create a new one. Returns the saved address. |
save_price | Create or update a customer price. Provide the price as a JSON object matching CustomerPriceDto (CustomerID, ProductID, MinQuantity, NetPrice, ...). Existing rows (same customer+product+minQuantity) are updated. Returns the saved price. |
save_product_filter_item | Create or update a product filter item. Provide the filter as a JSON object matching FilterDto. Returns the saved filter item. |
save_product_variant_type | Create or update a product variant type. Provide the variant type as a JSON object matching VariantTypeDto (include the id to update an existing one, omit/0 to create). Returns the saved variant type. |
send_erp_command | Queue a raw ERP integration command for the active customer by inserting a row into the ecommerce database's dbo.VismaKomTodo queue — the 'todo' queue the Visma Global / Heimdall importer polls and processes asynchronously. Use for commands the importer understands, e.g. 'customer:<customerId>' (queue a customer update), 'senddatafil:<table>;<sql>;...' (push a data file to Visma), or 'multisoftsendfil' (Multisoft export). The command string is stored verbatim in the Todo column. Returns the new VismaKomTodo row ID, or a rejection message if the customer's system has no ERP integration configured (Salgssystemer_Integration) — such rows would never be picked up by the importer, so nothing is queued. |
set_order_external_order_id | Set the order's ExternalOrderId (the ERP / Visma Global order number) on Order_net. Primary use: RESET to 0 to re-trigger an ERP transfer — the order then reappears in the Visma Global integration log (get_visma_kom_status) for a fresh transfer. Reads the order before and after so the old and new value are confirmed. Note: re-transfer will fail again if the underlying cause (e.g. a missing B2B customer in the ERP client) is not fixed first. |
set_order_meta_value | Set or update a meta value (custom key-value) on an order. |
set_shipment_processed | Mark a shipment as processed (or not processed). |
update_customer | Update an existing customer in Frigg. Only specified fields will be changed. |
update_customer_setting | Create or update a configuration setting for the customer. If the key exists it will be updated; if not, it will be created. |
update_invoice | Update an invoice. Provide the invoice as a JSON object matching InvoiceDto (Id is required). |
update_product | Update an existing product in Frigg. Only specified fields will be changed. |
Duell POS Kasseservice
13 tools.
| Tool | Description |
|---|---|
find_duell_customer_by_company_number | Find a Duell customer by organisation/company number. |
find_duell_customer_by_mobile | Find a Duell customer by mobile phone number. |
get_duell_customer_by_id | Get a specific Duell customer by their Duell customer ID. |
get_duell_customers | Get all customers from Duell POS. |
get_duell_order_by_id | Get a specific Duell logistics order by its Duell order ID, including all line items. |
get_duell_orders | Get all logistics orders from Duell POS, including full order details and line items. |
get_duell_product_by_id | Get a specific Duell product by its Duell product ID. |
get_duell_products | Get all products from Duell POS catalogue. |
save_duell_customer | Create or update a Duell customer (PUT customer). Pass fields as a flat JSON object with string key-value pairs. Required for new customers: customer_name. Common fields: customer_name, company_number, phone, email, ref, comment. Example: {"customer_name": "Ola Nordmann", "email": "ola@example.com", "phone": "99887766"}. |
save_duell_logistics_order | Create or update a Duell logistics order (POST logistics/orders/save). Pass ONE order as a JSON object with two sections: order_data (object) and product_data (array of line objects): { "order_data": { "customer_id": 123, "reference_order_number": "WEB-1001", "comments": "...", "order_address": { "zip": "0123", "city": "Oslo" } }, "product_data": [ { "entity_type": "product", "product_id": 456, "quantity": 2, "price_inc_vat": 199, "vatrate_percent": 25 } ] } Required: order_data.customer_id, order_data.reference_order_number, address zip+city; each line entity_type, price_inc_vat, vatrate_percent. See https://api.kasseservice.no/docs/logistics-orders/save. |
save_duell_product | Create or update a Duell product. Pass fields as a flat JSON object with string values. Duell field names: product_number, product_name, price_inc_vat, vatrate_percent, category_id. For NEW products, product_name, product_number AND category_id are required. Include product_id to update an existing product instead of creating one. |
save_duell_purchase_order | Create or update a Duell purchase order (POST purchase/orders/save). Pass ONE order as a JSON object with two sections: order_data (object) and product_data (array of line objects): { "order_data": { "supplier_id": 99, "department_id": 1, "comments": "...", "delivery_address": { "zip": "0123", "city": "Oslo" } }, "product_data": [ { "product_id": 456, "cost_price": 120, "quantity": 10 } ] } Required: order_data.supplier_id; each line product_id, cost_price, quantity. See https://api.kasseservice.no/docs. |
save_duell_sale_order | Create or update a Duell sale order (POST sale/orders/save). Pass ONE order as a JSON object with two sections: order_data (object) and product_data (array of line objects): { "order_data": { "customer_id": 123, "reference_order_number": "WEB-1001", "department_id": 1, "comments": "..." }, "product_data": [ { "entity_type": "product", "product_id": 456, "quantity": 1, "price_inc_vat": 199, "vatrate_percent": 25 } ] } Required: order_data.customer_id, order_data.reference_order_number; each line entity_type, price_inc_vat, vatrate_percent. See https://api.kasseservice.no/docs/sale-orders/save. |
Visma Global ERP
1 tools.
| Tool | Description |
|---|---|
get_visma_kom_status | Get the Visma Global integration log (dbo.VismaKomStatus) for the customer, newest first. This is the log shown in Admin under 'Visma Global integration → Integrasjonslogg' and is the authoritative source for whether an order reached Visma Global — entries like 'WebOrder: <friggOrderId> set with ERP Order ID: <n>' and 'Order: Import complete: <friggOrderId>' confirm a successful ERP transfer. Note: the OrderSync OrderIsTransferedToErp flag is NOT updated by this integration, so use THIS tool (not get_order_sync_logs) to confirm Visma Global transfers. |
Shopify GraphQL
20 tools.
| Tool | Description |
|---|---|
close_shopify_order | Close a Shopify order by id. |
create_shopify_customer | Create a Shopify customer. Provide any of the fields; tags is a comma-separated list. Returns the created customer. |
create_shopify_product | Create a Shopify product. Status: DRAFT, ACTIVE or ARCHIVED. Tags is a comma-separated list. |
delete_shopify_product | Delete a Shopify product by id. Returns the deleted product id. |
get_shopify_catalogs | Get B2B catalogs from Shopify. |
get_shopify_companies | Get B2B companies from Shopify. |
get_shopify_customer_by_id | Get a single Shopify customer by id (numeric or gid). |
get_shopify_customers | Get customers from Shopify. Optional search query (name, email, etc.). |
get_shopify_inventory_levels | Get inventory levels for a Shopify inventory item across locations. |
get_shopify_inventory_locations | Get Shopify inventory locations. |
get_shopify_order_by_id | Get a single Shopify order by id (numeric or gid). |
get_shopify_orders | Get orders from Shopify. Optional Shopify search query (e.g. "created_at:>2024-01-01"). |
get_shopify_price_lists | Get B2B price lists from Shopify. |
get_shopify_product_by_id | Get a single Shopify product by its Shopify id (numeric or gid). |
get_shopify_products | Get products from Shopify (with variants, images, price, inventory). |
get_shopify_shop | Get the connected Shopify store's info (name, domain, currency, timezone). |
set_shopify_inventory_quantity | Set the on-hand inventory quantity for an inventory item at a location. |
test_shopify_connection | Test the Shopify connection for the active customer. |
update_shopify_customer | Update a Shopify customer by id. Only the fields you provide are changed; tags is a comma-separated list. |
update_shopify_product | Update a Shopify product. Only the fields you provide are changed. |
Rackbeat ERP
9 tools.
| Tool | Description |
|---|---|
find_rackbeat_item | Look up an item in Rackbeat by number/SKU. Checks BOTH /products and /collections, because structure items (packages) are separate entities that return 404 on /products. Never conclude 'the item is missing in Rackbeat' without this — use it instead of GetRackbeatProducts for existence questions. |
find_rackbeat_order_by_reference | Find Rackbeat orders by reference (the webshop/Frigg order reference, stored as 'other_reference' in Rackbeat). IMPORTANT: Rackbeat's reference filter is a SUBSTRING search, so a hit does NOT prove the order exists. Every match is returned with matchType 'exact' or 'substring' — only 'exact' proves the order was transferred. If there are substring matches but no exact one, the order is most likely MISSING in Rackbeat. |
get_rackbeat_collections | List Rackbeat structure items (collections/packages) with their component counts. Useful when an order transfer fails: package lines are expanded into components before the order is sent, so an EMPTY collection produces an order with no lines, which Rackbeat rejects with HTTP 422 — and the transfer then retries forever. Collections also carry no stock in Rackbeat. |
get_rackbeat_customers | Search or list Rackbeat customers (name, org number, e-mail, city). |
get_rackbeat_order | Get one Rackbeat order by its Rackbeat order number, including order lines. |
get_rackbeat_orders | List the most recent Rackbeat orders (newest first) with their references, totals and invoiced/booked status. |
get_rackbeat_product_stock | Get Rackbeat stock quantities for one SKU (stock, available, in-order, purchased). Note: structure items/collections have no stock in Rackbeat at all. |
get_rackbeat_products | Search or list Rackbeat products (server-side paging and search). For 'does this SKU exist' use FindRackbeatItem instead — it also covers structure items. |
test_rackbeat_connection | Check whether this customer's Rackbeat API key works. Use this first when a Rackbeat lookup fails — stale keys are common and cause silent sync failures (HTTP 401). |
WooCommerce REST
9 tools.
| Tool | Description |
|---|---|
get_woocommerce_customers | Search or list WooCommerce customers (registered shop accounts — guest checkouts are NOT customers here, they exist only on their orders). |
get_woocommerce_order | Get one WooCommerce order by its order id/number, in full: status, dates (created/paid/completed/modified), payment method + transaction id, customer, line items, fees, shipping, tax, refunds and meta data. Use this to see exactly what the shop holds when comparing against Frigg or the ERP. |
get_woocommerce_order_notes | Get the notes on a WooCommerce order (status changes, payment events, and notes written by plugins such as the ERP integration). Often explains WHY an order is in its current status. |
get_woocommerce_order_refunds | Get the refunds registered on a WooCommerce order (amount, reason, lines). A refund of 0 kr or without lines is a common cause of refund/credit-note mismatches against the ERP. |
get_woocommerce_order_totals | Count the shop's orders per status over a date range (WooCommerce reports/orders/totals). Quick way to see whether orders are arriving at all, and how many sit in a status Frigg does not import. |
get_woocommerce_orders | List WooCommerce orders straight from the shop, newest first by default. Filter by status (pending, processing, on-hold, completed, cancelled, refunded, failed, trash, or 'any'), created window (after/before) and modified window (modifiedAfter/modifiedBefore), or free-text search (order number, customer name, e-mail). TIP: an order created long ago but completed recently is found with modifiedAfter, NOT with after — Frigg's WooCommerce import has a created-date window that silently skips such late completions. |
get_woocommerce_product | Get one WooCommerce product by id in full: prices, stock, tax class, attributes, variations, categories and meta data. |
get_woocommerce_products | Search or list WooCommerce products. Use sku for an exact SKU match, search for free text. Variable products return their variation ids; use GetWooCommerceProduct for the detail. |
test_woocommerce_connection | Check whether this customer's WooCommerce API credentials work and how many orders/products the key can see. Use this first when a WooCommerce lookup fails — revoked keys (HTTP 401) and firewall blocks (403) are common causes of silent sync failures. |
Tripletex ERP
22 tools.
| Tool | Description |
|---|---|
create_tripletex_contact | Create a Tripletex contact. Provide the contact as a JSON object. |
create_tripletex_customer | Create a Tripletex customer. Provide the customer as a JSON object (Tripletex customer shape). |
create_tripletex_order | Create a Tripletex order. Provide the order as a JSON object (Tripletex order shape). Returns the raw response; the new id is at value.id. |
create_tripletex_product | Create a Tripletex product. Provide the product as a JSON object. |
delete_tripletex_order | Delete a Tripletex order by its Tripletex order id. |
get_tripletex_contact_by_id | Get a single Tripletex contact by id. |
get_tripletex_contacts | Get all contacts from Tripletex. |
get_tripletex_currencies | Get all currencies from Tripletex. |
get_tripletex_customer_by_id | Get a single Tripletex customer by its Tripletex id. |
get_tripletex_customers | Get all customers from Tripletex. |
get_tripletex_open_orders | Get open Tripletex orders within a date range (yyyy-MM-dd). |
get_tripletex_order_by_id | Get a single Tripletex order by its Tripletex order id. |
get_tripletex_orders | Get all orders from Tripletex. |
get_tripletex_product_by_sku | Get a single Tripletex product by SKU (product number). |
get_tripletex_product_inventory | Get product inventory values from Tripletex. |
get_tripletex_products | Get all products from Tripletex. |
insert_tripletex_orderline | Add an orderline to a Tripletex order. Provide the orderline as a JSON object (must reference the order and product). |
search_tripletex_invoices | Search Tripletex invoices by invoice number and/or a date range. This ALSO covers credit notes — Tripletex has no separate credit-note endpoint; a credit note is just an invoice with a negative amount on this same resource. Use this to look up a specific invoice/kreditnota a customer refers to by its number. |
update_tripletex_contact | Update a Tripletex contact by id. Provide the changed fields as a JSON object. |
update_tripletex_customer | Update a Tripletex customer by id. Provide the changed fields as a JSON object. |
update_tripletex_order | Update a Tripletex order by id. Provide the changed fields as a JSON object. |
update_tripletex_product | Update a Tripletex product by id. Provide the changed fields as a JSON object. |
HubSpot CRM
12 tools.
| Tool | Description |
|---|---|
create_hubspot_company | Create a HubSpot company. Provide properties as a JSON object of string values. Returns the new id. |
create_hubspot_contact | Create a HubSpot contact. Provide properties as a JSON object of string values (e.g. {"email":"...","firstname":"..."}). Returns the new id. |
create_hubspot_deal | Create a HubSpot deal. Provide properties as a JSON object of string values. Returns the new id. |
create_hubspot_product | Create a HubSpot product. Provide properties as a JSON object of string values. Returns the new id. |
get_hubspot_companies | Get companies from HubSpot. |
get_hubspot_contacts | Get contacts from HubSpot. |
get_hubspot_deals | Get deals from HubSpot. |
get_hubspot_products | Get products from HubSpot. |
update_hubspot_company | Update a HubSpot company by id. Provide the changed properties as a JSON object. |
update_hubspot_contact | Update a HubSpot contact by id. Provide the changed properties as a JSON object of string values. |
update_hubspot_deal | Update a HubSpot deal by id. Provide the changed properties as a JSON object. |
update_hubspot_product | Update a HubSpot product by id. Provide the changed properties as a JSON object. |
SuperOffice CRM
11 tools.
| Tool | Description |
|---|---|
create_superoffice_contact | Create a SuperOffice contact (company). Provide the contact as a JSON object using SuperOffice field names (e.g. {"Name":"Acme AS","OrgNr":"123456789"}). |
create_superoffice_sale | Create a SuperOffice sale on a contact. saleDate is yyyy-MM-dd. Returns the new sale id. |
get_superoffice_contact | Get a single SuperOffice contact by id. |
get_superoffice_contacts | Get contacts (companies) from SuperOffice. Optional top to limit the count. |
get_superoffice_first_price_list_id | Get the id of the first SuperOffice price list (useful for product upsert). |
get_superoffice_products | Get products from SuperOffice. Optional top to limit the count. |
get_superoffice_sale | Get a single SuperOffice sale by id. |
get_superoffice_sale_with_lines | Get a SuperOffice sale including its quote lines. |
get_superoffice_sales | Get sales from SuperOffice. Optional top to limit the count. |
update_superoffice_contact | Update a SuperOffice contact by id. Provide only the changed fields as a JSON object using SuperOffice field names. |
upsert_superoffice_product | Create or update a SuperOffice product (matched by extraIdentifier within a price list). |
Zendesk Support
10 tools.
| Tool | Description |
|---|---|
find_zendesk_organizations | Search Zendesk organizations by name (min. 2 characters). Returns id and name — use the id for organizationId in update_zendesk_ticket, or with find_customer_by_zendesk_org. |
find_zendesk_users | Search Zendesk users (agents and end users) by name or email. Returns id, name, email and role — use the id for assigneeId/requesterId/follower ids in update_zendesk_ticket. |
get_zendesk_attachment | Download an attachment from a Zendesk ticket and return it inline — as an image content block if it's an image, otherwise as an embedded binary resource. Get the content_url from an attachment entry in get_zendesk_ticket_conversation's response. Refuses files over 10 MB (use the content_url directly for those) and refuses any URL that isn't on this Zendesk account. |
get_zendesk_ticket | Get a Zendesk support ticket by id (raw ticket JSON: subject, status, requester_id, organization_id, tags, etc.). Use organization_id with find_customer_by_zendesk_org to identify the Frigg customer the case is about. |
get_zendesk_ticket_conversation | Get all comments (public replies and internal notes) on a Zendesk ticket, oldest first. |
list_zendesk_groups | List the Zendesk agent groups (id + name) — for groupId in update_zendesk_ticket. |
list_zendesk_ticket_fields | List all Zendesk ticket fields, including custom fields with their ids and, for dropdowns, the valid option values (custom_field_options[].value). Use before setting customFields in update_zendesk_ticket rather than guessing values. |
search_zendesk_tickets | Search Zendesk tickets with Zendesk's search syntax, newest first. Examples: 'type:ticket status<solved assignee:none', 'type:ticket organization_id:12345', 'type:ticket tags:integrasjon_rackbeat status:open', 'type:ticket florworks'. |
update_zendesk_ticket | Update a Zendesk ticket. Every parameter except ticketId is optional and only the ones you pass are changed: status, comment (+ attachments from upload_zendesk_attachment), assignee, group, requester, organization, priority, type, subject, tags and custom fields (e.g. the three fields Zendesk requires before status=solved), followers. Use find_zendesk_users / list_zendesk_groups / list_zendesk_ticket_fields to look up ids. NEVER call this without the user explicitly confirming the exact changes first — a comment is customer-visible when isPublicComment is true. |
upload_zendesk_attachment | Upload a file to Zendesk so it can be attached to a reply via update_zendesk_ticket's uploadTokens parameter. Returns the upload token (and Zendesk's own attachment metadata) — the token expires if not attached to a ticket within a few days. |
Session
2 tools.
| Tool | Description |
|---|---|
get_active_customer | Show which Frigg customer (system ids) is currently active for this session. |
use_customer | Select the Frigg customer for this session by FriggApiKey. All subsequent tool calls operate on this customer until use_customer is called again. Use this when the conversation switches to a different customer. Returns the resolved system ids. |