MCP · Streamable HTTP

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

Endpointhttps://mcp.friggcms.no/mcp (Streamable HTTP)
AuthAuthorization: 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.