Contents
PlatformBetaVersion v1

AI Tools API

List and run the Nucleo tools of one module for an AI client acting on behalf of a user.

Every Nucleo module (Brain, Catalog, Commerce, Intelligence) exposes the same two endpoints: GET /api/v1/ai-tools returns the tools the signed-in person may use in a company, and POST /api/v1/ai-tools/{name} runs one of them and returns an MCP CallToolResult.

This is the contract the Nucleo MCP connector (https://mcp.nucleoplatform.com) uses behind the scenes. Most integrations should simply connect an MCP client to the connector (see the MCP connector API). Call these endpoints directly only if you build your own agent runtime and need tool definitions and results without MCP.

Authentication: an OAuth access token from Nucleo issued to a self-registered client (it carries the scope nucleo.ai_tools). These endpoints accept only such tokens, and such tokens are accepted only here (plus userinfo and the company context). Every call runs inside one company (X-Nucleo-Company) with the person's own permissions. Delete tools are not exposed; the few writes that cannot be undone (merges, forgetting a memory) carry destructiveHint: true.

Authentication

  • nucleoOAuthOAuth 2.0 · authorizationCode

    Register your client with POST https://auth.nucleoplatform.com/oauth/register (RFC 7591), then run the authorization code flow with PKCE. Tokens of self-registered clients always include nucleo.ai_tools. Tokens of Nucleo's own apps are refused here.

    authorize: https://auth.nucleoplatform.com/oauth/authorize
    token: https://auth.nucleoplatform.com/oauth/token
    scopes: openid, profile, email, offline_access, nucleo.ai_tools
Base URL
https://{host}The module's API host. Tools of each module live on its own host.
Who calls it
AI assistants, Partners
Endpoints
4
OpenAPI 3.1 specification
ai-tools.yaml
{host} — api-brain = Brain (CRM, inbox, knowledge, documents, CMS), api-catalog = Catalog (PIM, DAM), api-commerce = Commerce (customer care, POS, orders), api-intelligence = Intelligence (sales analytics). The same list, per company, is returned by GET /api/mcp/context (api_base_url). (examples use api-catalog.nucleoplatform.com; full URL https://api-catalog.nucleoplatform.com)

Context

Served by Nucleo Core (auth.nucleoplatform.com): which companies the person can work in, which modules each company exposes to AI clients and their API hosts, and the active company.

get/api/mcp/context

Get companies, modules and active company

The companies of the signed-in person in canonical order, with the modules each one can reach through AI clients (connector_enabled) and the base URL of each module's API, plus the active company used by the MCP connector.

active_company_source tells how it was chosen: claim (the org_id hint you passed), only (the person has one company), preference (saved with PUT /api/mcp/company or the connector tool nucleo_switch_company), default (first company).

A module with connector_enabled: false has been switched off for AI clients by that company (or has no tools API): do not call it.

GET https://auth.nucleoplatform.com/api/mcp/context
Authentication: OAuth 2.0 access token

Query parameters

  • org_idinteger

    Preferred company id; used as active company only if the person belongs to it.

    Example: 7

Responses

  • 200Context.
    • userobject
      Child attributes
      • idinteger
      • namestring
      • emailstring (email)
      • languagestring
        One ofenit
      • is_internalboolean
    • companiesarray of object
      Attributes of each item
      • idinteger
      • slugstring
      • namestring
      • is_internalboolean
      • is_demoboolean
      • disabled_sectionsarray of string
      • modulesarray of object
        Attributes of each item
        • slugstring
          One ofbraincatalogcommerceintelligence
        • namestring
        • rolestring
        • api_base_urlstring (uri) | null
        • connector_enabledboolean
    • active_company_idinteger | null
    • active_company_sourcestring | null
      One ofclaimonlypreferencedefaultnull
  • 401Missing, expired or revoked token — or a token that is not from a self-registered client. Body: {"message":"Unauthenticated."}; Intelligence answers with application/problem+json.
    • messagestring
Request
curl -X GET 'https://auth.nucleoplatform.com/api/mcp/context?org_id=7' \
  -H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
  -H 'Accept: application/json'
Response
{
  "user": {
    "id": 42,
    "name": "Giulia Rossi",
    "email": "giulia.rossi@acme.example",
    "language": "it",
    "is_internal": false
  },
  "companies": [
    {
      "id": 7,
      "slug": "acme",
      "name": "Acme Apparel",
      "is_internal": false,
      "is_demo": false,
      "disabled_sections": [
        "pos"
      ],
      "modules": [
        {
          "slug": "catalog",
          "name": "Catalog",
          "role": "editor",
          "api_base_url": "https://api-catalog.nucleoplatform.com",
          "connector_enabled": true
        },
        {
          "slug": "commerce",
          "name": "Commerce",
          "role": "viewer",
          "api_base_url": "https://api-commerce.nucleoplatform.com",
          "connector_enabled": true
        },
        {
          "slug": "intelligence",
          "name": "Intelligence",
          "role": "viewer",
          "api_base_url": "https://api-intelligence.nucleoplatform.com",
          "connector_enabled": false
        }
      ]
    }
  ],
  "active_company_id": 7,
  "active_company_source": "only"
}
put/api/mcp/company

Set the active company

Saves the active company of the person for AI clients (one value per person, shared by every AI client they connect, including the MCP connector) and returns the updated context.

PUT https://auth.nucleoplatform.com/api/mcp/company
Authentication: OAuth 2.0 access token

Request bodyapplication/json

  • organization_idintegerrequired

    Company id from companies[].id.

Responses

  • 200Updated context (same shape as GET /api/mcp/context).
    • userobject
      Child attributes
      • idinteger
      • namestring
      • emailstring (email)
      • languagestring
        One ofenit
      • is_internalboolean
    • companiesarray of object
      Attributes of each item
      • idinteger
      • slugstring
      • namestring
      • is_internalboolean
      • is_demoboolean
      • disabled_sectionsarray of string
      • modulesarray of object
        Attributes of each item
        • slugstring
          One ofbraincatalogcommerceintelligence
        • namestring
        • rolestring
        • api_base_urlstring (uri) | null
        • connector_enabledboolean
    • active_company_idinteger | null
    • active_company_sourcestring | null
      One ofclaimonlypreferencedefaultnull
  • 401Missing, expired or revoked token — or a token that is not from a self-registered client. Body: {"message":"Unauthenticated."}; Intelligence answers with application/problem+json.
    • messagestring
  • 403The person has no access to that company.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 422Validation failed.
    • messagestring
    • errorsobject
Request
curl -X PUT https://auth.nucleoplatform.com/api/mcp/company \
  -H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{
  "organization_id": 7
}'
Response
{
  "user": {
    "id": 1,
    "name": "string",
    "email": "jane@example.com",
    "language": "en",
    "is_internal": true
  },
  "companies": [
    {
      "id": 1,
      "slug": "string",
      "name": "string",
      "is_internal": true,
      "is_demo": true,
      "disabled_sections": [
        "string"
      ],
      "modules": [
        {
          "slug": "brain",
          "name": "string",
          "role": "string",
          "api_base_url": "https://shop.acme.example",
          "connector_enabled": true
        }
      ]
    }
  ],
  "active_company_id": 1,
  "active_company_source": "claim"
}

Tools

Served by each module. Tool names have no module prefix here (search_orders); the MCP connector adds one (commerce_search_orders). The full catalogue per module is in the MCP connector API (x-nucleo-tools).

get/api/v1/ai-tools

List the tools available in a company

The tools the person may use in the company of X-Nucleo-Company, already filtered by their permissions and roles in that module, sorted by name. Definitions do not change between a list and a call unless the company or the person's permissions change.

Caching: responses carry ETag and Cache-Control: private, max-age=60; send the ETag back in If-None-Match to get 304 Not Modified.

Company errors (400 company_required, 403 company_forbidden, 409 company_not_ready) mean the module is not usable for this person in this company: hide it.

Catalog only: a company can have several catalogs. X-Nucleo-Store (id or slug) picks one; without it the first ready catalog the person can access is used, and company.store says which.

Module differences. On Brain, company errors are plain {"message": "..."} bodies (400 no company, 403 no access, 404 Brain not set up for the company — no 409), and it does not echo X-Nucleo-Request-Id. Intelligence checks the company before the contract version.

Rate limit: 120 requests per minute per user on Catalog, Commerce and Intelligence (separate bucket from tool calls). Brain applies no specific limit today.

GET https://api-catalog.nucleoplatform.com/api/v1/ai-tools
Authentication: OAuth 2.0 access token
Rate limit: 120 requests per 1m, per user

Headers

  • X-Nucleo-Companystringrequired

    Numeric company id (companies[].id from the context, or orgs[].id from userinfo).

    pattern ^[1-9][0-9]{0,18}$
    Example: 7
  • X-Nucleo-Languagestring

    Language of human-readable texts in results and errors (en or it, default en). Tool descriptions stay in English.

    One ofenit
    default en
    Example: en
  • X-Nucleo-AI-Tools-Versionstring

    Contract version. Missing = 1. Any other value → 406.

    One of1
    default 1
    Example: 1
  • X-Nucleo-Request-Idstring

    Your id for the call (UUID recommended), echoed back and written in Nucleo's logs. Pattern ^[A-Za-z0-9._:-]{1,128}$, otherwise a new UUID is used.

    max length 128
    Example: 2f9c1e4a-7b3d-4c5e-9f8a-1b2c3d4e5f6a
  • X-Nucleo-Storestring

    Catalog only — id or slug of the catalog (store) to use within the company.

    Example: acme-eu
  • If-None-Matchstring
    Example: "5f1d3b0c9a4e2b7d8c6f1a0e3b2d4c5a6f7e8d9c"

Responses

  • 200Tool list.
    Headers
    • ETag
    • Cache-Control
    • X-Nucleo-Request-Id Echo of the request id (or a generated one). Not sent by Brain.
    • version1required
    • modulestringrequired
      One ofbraincatalogcommerceintelligence
    • companyobject
      Child attributes
      • idinteger | null
      • slugstring | null
      • namestring | null
      • storeobject

        Catalog only — the catalog in use.

        Child attributes
        • idinteger
        • slugstring
        • namestring
    • languagestring
    • instructionsstring

      Module-level guidance for the model (English).

    • toolsarray of ToolDefinitionrequired
      Attributes of each item
      • namestringrequired
        pattern ^[a-z][a-z0-9_]{1,47}$
      • titlestring
        max length 60
      • descriptionstringrequired

        English

        max length 1024
      • inputSchemaobjectrequired

        JSON Schema of type object (no $ref, oneOf/anyOf/allOf or additionalProperties).

      • permissionstring | null

        Module permission the tool requires (informational).

      • side_effectsstringrequired
        One ofreadwrite
      • annotationsobject
        Child attributes
        • readOnlyHintboolean
        • destructiveHintboolean

          true only for a write that cannot be undone (for example a merge of two records, or forgetting a memory). The gateway passes every hint unchanged to the AI client.

        • idempotentHintboolean
        • openWorldHintboolean
      • tagsarray of string
    • generated_atstring (date-time)
  • 304Not modified (If-None-Match matched).
  • 400X-Nucleo-Company missing or not a positive integer.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 401Missing, expired or revoked token — or a token that is not from a self-registered client. Body: {"message":"Unauthenticated."}; Intelligence answers with application/problem+json.
    • messagestring
  • 403The person cannot use this module in this company (no access, or no catalog they belong to).
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 404Brain only — Brain is not set up for this company.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 406Unknown contract version.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 409The person has access but the module is not set up yet for this company.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 429More than 120 requests per minute for this user on this endpoint. Default body; Intelligence answers with application/problem+json.
    Headers
    • Retry-After
    • X-RateLimit-Limit
    • X-RateLimit-Remaining
    • messagestring
Request
curl -X GET https://api-catalog.nucleoplatform.com/api/v1/ai-tools \
  -H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
  -H 'X-Nucleo-Company: 7' \
  -H 'X-Nucleo-Language: en' \
  -H 'X-Nucleo-AI-Tools-Version: 1' \
  -H 'X-Nucleo-Request-Id: 2f9c1e4a-7b3d-4c5e-9f8a-1b2c3d4e5f6a' \
  -H 'X-Nucleo-Store: acme-eu' \
  -H 'If-None-Match: "5f1d3b0c9a4e2b7d8c6f1a0e3b2d4c5a6f7e8d9c"' \
  -H 'Accept: application/json'
Response
{
  "version": 1,
  "module": "commerce",
  "company": {
    "id": 7,
    "slug": "acme",
    "name": "Acme Apparel"
  },
  "language": "en",
  "instructions": "Nucleo Commerce: Customer care (internal tickets between Customer Service, Logistics and the other teams; customer requests from the helpdesk, for the Customer Service team only), POS (points of sale, on-hand stock, inbound deliveries, transfers and returns) and Orders (the OMS: orders, customers, returns, shipments, sellable stock, routing, anomalies, fulfillment KPIs). Ticket codes look like TK-0029. Start from search_tickets or list_customer_requests (search_orders for orders), then read the detail. Everything here is read-only: nothing changes data, and reading a ticket does not mark it as read.",
  "tools": [
    {
      "name": "get_order",
      "title": "Get order",
      "description": "Orders (Nucleo OMS). One order in full: customer, address, items, ship-from location, holds, shipments with tracking, returns and anomalies.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "order": {
            "type": "string",
            "maxLength": 120,
            "description": "Order number (e.g. #1042) or id."
          }
        },
        "required": [
          "order"
        ]
      },
      "permission": "oms.read",
      "side_effects": "read",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "tags": [
        "oms",
        "orders"
      ]
    }
  ],
  "generated_at": "2026-10-04T09:15:00+02:00"
}
post/api/v1/ai-tools/{name}

Run a tool

Runs one tool with arguments (validated against its inputSchema) and returns an MCP CallToolResult:

  • content[0].text — readable result (JSON text, cut at 50,000 characters with a "truncated" note: refine the query);
  • structuredContent — the same result as JSON;
  • isError: true — a domain error the model can act on (record not found, no data source, a write that needs confirmation in the Nucleo app…). HTTP status stays 200.

Protocol errors use HTTP statuses: 404 unknown_tool, 403 permission_denied (+ permission), 422 invalid_arguments, and the company errors of the list endpoint.

Writes. Commerce and Intelligence tools are read-only. Brain and Catalog have write tools (side_effects: write): announce the change to the user before calling them. Catalog applies only small, reversible writes from AI clients (up to 3 writes / 5 products within 10 minutes per person and catalog); deletions, whole-object replacements, bulk, storefront-facing changes, imports and publishing come back as a preview (will_do) with isError: true and error: confirmation_required_in_app — nothing is changed, the user confirms inside Nucleo.

Idempotency. Send a fresh X-Nucleo-Request-Id per logical call and reuse it on retries; Brain uses it to deduplicate record writes.

Responses should arrive within 25 seconds; long jobs return an id to poll with a companion tool.

Brain does not validate arguments with 422: invalid arguments come back as a domain error (isError: true).

Rate limit: 120 calls per minute per user on Catalog, Commerce and Intelligence; Brain applies no specific limit today.

POST https://api-catalog.nucleoplatform.com/api/v1/ai-tools/{name}
Authentication: OAuth 2.0 access token
Rate limit: 120 requests per 1m, per user

Path parameters

  • namestringrequired

    Tool name from the list, without module prefix.

    max length 48pattern ^[a-z0-9_]+$
    Example: search_orders

Headers

  • X-Nucleo-Companystringrequired

    Numeric company id (companies[].id from the context, or orgs[].id from userinfo).

    pattern ^[1-9][0-9]{0,18}$
    Example: 7
  • X-Nucleo-Languagestring

    Language of human-readable texts in results and errors (en or it, default en). Tool descriptions stay in English.

    One ofenit
    default en
    Example: en
  • X-Nucleo-AI-Tools-Versionstring

    Contract version. Missing = 1. Any other value → 406.

    One of1
    default 1
    Example: 1
  • X-Nucleo-Request-Idstring

    Your id for the call (UUID recommended), echoed back and written in Nucleo's logs. Pattern ^[A-Za-z0-9._:-]{1,128}$, otherwise a new UUID is used.

    max length 128
    Example: 2f9c1e4a-7b3d-4c5e-9f8a-1b2c3d4e5f6a
  • X-Nucleo-Storestring

    Catalog only — id or slug of the catalog (store) to use within the company.

    Example: acme-eu
  • X-Nucleo-Clientstring

    Informational name/version of your client, used in Nucleo's logs and saved conversations.

    Example: acme-agent/1.4

Request bodyapplication/json

  • argumentsobject

    Tool arguments (if omitted, the root keys except context are used as arguments).

  • contextobject

    Optional, informational.

    Child attributes
    • clientobject
      Child attributes
      • namestring
      • versionstring
    • session_idstring

Responses

  • 200Tool result (success or domain error).
    Headers
    • X-Nucleo-Request-Id
    • contentarray of objectrequired
      Attributes of each item
      • typestringrequired
        One oftextresource_linkimage
      • textstring
        max length 50000
    • structuredContentobject
    • isErrorbooleanrequired
  • 400X-Nucleo-Company missing or not a positive integer.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 401Missing, expired or revoked token — or a token that is not from a self-registered client. Body: {"message":"Unauthenticated."}; Intelligence answers with application/problem+json.
    • messagestring
  • 403Permission denied for this tool, or no access to the module in this company.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 404Unknown tool, or not visible to this person.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 406Unknown contract version.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 409The person has access but the module is not set up yet for this company.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 422Arguments do not match the tool's input schema.
    • errorstring
      One ofcompany_requiredcompany_forbiddencompany_not_readyunsupported_versionunknown_toolpermission_deniedinvalid_arguments
    • messagestringrequired

      In the language of X-Nucleo-Language where translated.

    • permissionstring

      permission_denied only.

    • supportedarray of integer

      unsupported_version only.

    • errorsobject

      invalid_arguments on Brain, Commerce and Intelligence (standard validation shape).

    • detailsarray of object

      invalid_arguments on Catalog.

      Attributes of each item
      • fieldstring
      • errorstring
  • 429More than 120 requests per minute for this user on this endpoint. Default body; Intelligence answers with application/problem+json.
    Headers
    • Retry-After
    • X-RateLimit-Limit
    • X-RateLimit-Remaining
    • messagestring
Request
curl -X POST https://api-catalog.nucleoplatform.com/api/v1/ai-tools/search_orders \
  -H "Authorization: Bearer $NUCLEO_ACCESS_TOKEN" \
  -H 'X-Nucleo-Company: 7' \
  -H 'X-Nucleo-Language: en' \
  -H 'X-Nucleo-AI-Tools-Version: 1' \
  -H 'X-Nucleo-Request-Id: 2f9c1e4a-7b3d-4c5e-9f8a-1b2c3d4e5f6a' \
  -H 'X-Nucleo-Store: acme-eu' \
  -H 'X-Nucleo-Client: acme-agent/1.4' \
  -H 'Content-Type: application/json' \
  -d '{
  "arguments": {
    "query": "giulia.rossi@acme.example",
    "status": "shipped",
    "per_page": 5
  },
  "context": {
    "client": {
      "name": "acme-agent",
      "version": "1.4"
    }
  }
}'
Response
{
  "content": [
    {
      "type": "text",
      "text": "{\n    \"total\": 1,\n    \"orders\": [ { \"number\": \"#1042\", \"status\": \"shipped\" } ]\n}"
    }
  ],
  "structuredContent": {
    "total": 1,
    "orders": [
      {
        "number": "#1042",
        "status": "shipped",
        "customer": "Giulia Rossi",
        "total": "89.00 EUR",
        "url": "https://app.nucleoplatform.com/commerce/orders/1042"
      }
    ]
  },
  "isError": false
}