> For the complete documentation index, see [llms.txt](https://docs.cybus.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cybus.io/2-4-2/guides/system-connectivity/industry-standards-interoperability/euromap-77-integration.md).

# EUROMAP 77 Integration

This guide describes how to read data from injection molding machines that implement EUROMAP 77 with Connectware. You configure a service commissioning file that connects to the machine's OPC UA server, subscribes to machine status, job information, and cycle data, and publishes the values to an ISA-95-style MQTT topic hierarchy. A complete example file is available at the end of this guide.

## Objectives

* Understanding the EUROMAP 77 information model and where its data lives in the OPC UA address space.
* Resolving the namespace index and NodeIds of the EUROMAP 77 nodes on your machine.
* Connecting Connectware to the machine's OPC UA server.
* Subscribing to machine status, job information, and cycle data.
* Publishing the values to an ISA-95-style MQTT topic hierarchy.

## Prerequisites

To follow this guide, you will need the following:

* A running instance of Cybus Connectware.
* An injection molding machine whose OPC UA server implements EUROMAP 77 (OPC 40077), reachable from Connectware over the network. The machine documentation tells you whether the interface is available and which release it implements.
* An OPC UA client for browsing the machine's address space, for example UaExpert or one of the tools listed in [Using Connectware as an OPC UA Client](/2-4-2/guides/system-connectivity/industry-standards-interoperability/using-connectware-as-an-opc-ua-client.md).
* Access to the [Admin UI](/2-4-2/access/admin-ui.md) with sufficient [user permissions](/2-4-2/access/user-management.md).
* Basic knowledge of MQTT and the Connectware [services](/2-4-2/data-flows/services.md) concept (for example, [service commissioning files](/2-4-2/data-flows/service-commissioning-files.md), [connections](/2-4-2/data-flows/service-commissioning-files/resources/cybus-connection.md), and [endpoints](/2-4-2/data-flows/service-commissioning-files/resources/cybus-endpoint.md)).

## Connectware and EUROMAP 77 Integration

[EUROMAP 77](https://www.euromap.org/euromap77) is the OPC UA companion specification for data exchange between injection molding machines (IMM) and manufacturing execution systems (MES). It is published by the OPC Foundation as [OPC 40077](https://reference.opcfoundation.org/PlasticsRubber/IMM2MES/v101/docs/) and builds on the common types for plastics and rubber machinery defined in EUROMAP 83 (OPC 40083). A machine that implements EUROMAP 77 exposes its production data in a standardized structure, so the same integration works across machine vendors.

Connectware connects to the machine's OPC UA server with the [OPC UA client connector](/2-4-2/connectors/shop-floor-connectors/opc-ua/opc-ua-client.md) and subscribes to the EUROMAP 77 nodes in the same way as any other OPC UA nodes. For generic OPC UA setup topics such as browsing the address space, security policies, and certificate exchange, see [Using Connectware as an OPC UA Client](/2-4-2/guides/system-connectivity/industry-standards-interoperability/using-connectware-as-an-opc-ua-client.md). This guide focuses on the EUROMAP 77 specifics: where the data lives and how to address it.

The MQTT topics in this guide follow an ISA-95-style equipment hierarchy (`<enterprise>/<site>/<area>/<line>/<cell>`), with one topic per data point below the machine level. This keeps the machine data addressable in a Unified Namespace alongside other equipment.

### The EUROMAP 77 Information Model

A EUROMAP 77 machine exposes one interface object per machine under the **DeviceSet** object of its OPC UA server. The object is named `IMM_<Manufacturer>_<SerialNumber>`, for example `IMM_EXAMPLE_0123456`, and is an instance of `IMM_MES_InterfaceType`. Its components group the machine data:

| Component                     | Content                                                                                                                             |
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `MachineInformation`          | Manufacturer, model, serial number, and logbook events.                                                                             |
| `MachineConfiguration`        | Machine configuration, such as the user-defined machine name.                                                                       |
| `MachineStatus`               | Current operating state, including `MachineMode` and `IsPresent`.                                                                   |
| `MachineMESStatus`            | MES-related status, such as standstill reasons.                                                                                     |
| `InjectionUnits`              | Injection units with their temperature zones and cycle parameters.                                                                  |
| `PowerUnits`                  | Power unit data.                                                                                                                    |
| `Moulds`                      | Mounted molds.                                                                                                                      |
| `Jobs`                        | The active production job (`ActiveJob`) and its live values (`ActiveJobValues`), including part counters and cycle times. Optional. |
| `ProductionDatasetManagement` | Transfer of production datasets. Optional.                                                                                          |

For an MES-style integration that reads data from the machine, the most relevant nodes are the following:

* `MachineStatus.MachineMode`: The current operating mode as an enumeration value: `0` (OTHER), `1` (AUTOMATIC), `2` (SEMI\_AUTOMATIC), `3` (MANUAL), `4` (SETUP), `5` (SLEEP).
* `MachineStatus.IsPresent`: Whether the machine is physically connected to its OPC UA server.
* `Jobs.ActiveJob`: The job definition, including `JobName`, `ProductionDatasetName`, `ProductName`, `MouldId`, `NumCavities`, and `ExpectedCycleTime`.
* `Jobs.ActiveJobValues`: The live production values, including `JobStatus`, the part counters (`JobPartsCounter`, `JobGoodPartsCounter`, `JobBadPartsCounter`), the cycle counters (`JobCycleCounter`, `MachineCycleCounter`), and the cycle times (`LastCycleTime`, `AverageCycleTime`).

In addition to these variables, the interface object emits a `CycleParametersEventType` event at the end of each machine cycle, carrying per-cycle process values such as injection time, dosing time, and cushion volume. You can receive OPC UA events with Connectware as described in [Events for OPC UA](/2-4-2/connectors/shop-floor-connectors/opc-ua/opc-ua-client.md#events-for-opc-ua). This guide uses variable subscriptions, which cover the typical MES data needs.

### Resolving the Namespace Index and NodeIds

The BrowseNames in the EUROMAP 77 information model are standardized, but the NodeIds of the instance nodes are not. Each OPC UA server assigns its namespaces a numeric index at runtime, and machine vendors place the instance nodes in their own namespace with vendor-specific identifiers. A NodeId that works on one machine does not work on another. Before you write the service commissioning file, resolve the actual NodeIds on your machine:

1. Connect to the machine's OPC UA server with an OPC UA client, for example UaExpert.
2. Read the `NamespaceArray` variable (`ns=0;i=2255`). Its value lists all namespace URIs of the server. The position of a URI in this array is its namespace index. The EUROMAP 77 types use the namespace URI `http://opcfoundation.org/UA/PlasticsRubber/IMM2MES/`. Machines that implement Release 1.00 use the older URI `http://www.euromap.org/euromap77/` instead.
3. Browse to **Objects > DeviceSet** and open the `IMM_<Manufacturer>_<SerialNumber>` object of your machine.
4. Navigate along the standardized BrowseNames, for example `MachineStatus > MachineMode`, select the node, and copy the NodeId shown in the attributes pane. This is the value for the `nodeId` property of the corresponding Connectware endpoint.

{% hint style="warning" %}
The NodeIds in this guide, such as `ns=4;s=IMM_EXAMPLE_0123456.MachineStatus.MachineMode`, are machine-specific examples. Both the namespace index and the identifier differ between machine vendors. Always use the NodeIds that your OPC UA client shows for your machine.
{% endhint %}

### EUROMAP 77 Parameters

We add the connection details, the namespace index, and the topic root as parameters to the service commissioning file, so you can set them when you install the service.

Do not worry about copying the service commissioning file snippets together into one, the complete example file is available at the end of this guide.

* `machineHost` and `machinePort`: The address of the machine's OPC UA server. The default OPC UA port is `4840`, the machine documentation tells you the actual value.
* `opcuaUser` and `opcuaPass`: The credentials for the OPC UA server. Leave them empty for anonymous access.
* `namespaceIndex`: The namespace index of the EUROMAP 77 instance nodes on your machine, resolved from the `NamespaceArray`.
* `topicRoot`: The ISA-95-style topic prefix for this machine.

{% code lineNumbers="true" %}

```yaml
parameters:
  machineHost:
    description: Hostname or IP address of the machine's OPC UA server
    type: string
    default: 192.168.1.100

  machinePort:
    description: Port of the machine's OPC UA server
    type: integer
    default: 4840

  opcuaUser:
    description: Username for the machine's OPC UA server (empty for anonymous access)
    type: string
    default: ''

  opcuaPass:
    description: Password for the machine's OPC UA server
    type: string
    default: ''

  namespaceIndex:
    description: >-
      Namespace index of the EUROMAP 77 instance nodes on your machine. Resolve
      it from the NamespaceArray (ns=0;i=2255) of your machine's OPC UA server.
    type: integer
    default: 4

  topicRoot:
    description: Root of the ISA-95-style MQTT topic hierarchy for this machine
    type: string
    default: enterprise/hamburg/injection-molding/line-1/imm-01
```

{% endcode %}

### EUROMAP 77 Connection

To connect to the machine's OPC UA server, we set up a `Cybus::Connection` resource that uses the OPC UA connector. For the complete set of connection options, including `messageSecurityMode`, `securityPolicy`, and client certificates, see the [OPC UA connection properties](/2-4-2/connectors/shop-floor-connectors/opc-ua/opc-ua-client/opcuaconnection.md) and [Using Connectware as an OPC UA Client](/2-4-2/guides/system-connectivity/industry-standards-interoperability/using-connectware-as-an-opc-ua-client.md).

{% code lineNumbers="true" %}

```yaml
resources:
  euromapConnection:
    type: Cybus::Connection
    properties:
      protocol: Opcua
      connection:
        host: !ref machineHost
        port: !ref machinePort
        username: !ref opcuaUser
        password: !ref opcuaPass
```

{% endcode %}

### Reading the Machine Status

The machine status endpoints subscribe to `MachineStatus.MachineMode` and `MachineStatus.IsPresent`. Because these are subscriptions, the OPC UA server only sends data when a value changes, for example when an operator switches the machine from `SETUP` to `AUTOMATIC`. The `topic` property publishes each value to its place in the ISA-95 hierarchy.

{% code lineNumbers="true" %}

```yaml
machineMode:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/machine-status/machine-mode'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.MachineStatus.MachineMode'

isPresent:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/machine-status/is-present'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.MachineStatus.IsPresent'
```

{% endcode %}

Each message contains the value and the OPC UA source timestamp. For `MachineMode`, the value is the numeric enumeration value:

{% code lineNumbers="true" %}

```json
{ "timestamp": "2026-07-16T09:30:00.000Z", "value": 1 }
```

{% endcode %}

### Reading Job Information

The job endpoints subscribe to the active job definition under `Jobs.ActiveJob` and its live values under `Jobs.ActiveJobValues`. The job name and the production dataset name identify what the machine is producing, the status and the part counters tell you how the job is progressing. `JobStatus` is an enumeration as well, with values such as `6` (JOB\_IN\_PRODUCTION) and `8` (JOB\_FINISHED).

{% code lineNumbers="true" %}

```yaml
jobName:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/job/name'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJob.JobName'

productionDatasetName:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/job/production-dataset-name'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJob.ProductionDatasetName'

jobStatus:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/job/status'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobStatus'

jobPartsCounter:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/job/parts-counter'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobPartsCounter'

jobGoodPartsCounter:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/job/good-parts-counter'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobGoodPartsCounter'

jobBadPartsCounter:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/job/bad-parts-counter'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobBadPartsCounter'
```

{% endcode %}

The `Jobs` component is optional in EUROMAP 77. If your machine does not expose it, remove these endpoints from the service commissioning file. The part counters are 64-bit integers, so Connectware publishes their values as strings containing the decimal number, as described in the [OPC UA client output format](/2-4-2/connectors/shop-floor-connectors/opc-ua/opc-ua-client.md#output-format-on-reading).

### Reading Cycle Data

The cycle data endpoints subscribe to the values under `Jobs.ActiveJobValues` that update with every machine cycle: the machine cycle counter and the cycle times. Injection molding cycles are often only a few seconds long, so these endpoints use a faster `publishInterval` and `samplingInterval` than the default of 1000 milliseconds. Connectware groups endpoints with the same `publishInterval` into one OPC UA subscription, see [OPC UA Subscriptions](/2-4-2/connectors/shop-floor-connectors/opc-ua/opc-ua-client.md#opc-ua-subscriptions).

{% code lineNumbers="true" %}

```yaml
machineCycleCounter:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/cycle/machine-cycle-counter'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.MachineCycleCounter'
      publishInterval: 500
      samplingInterval: 500

lastCycleTime:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/cycle/last-cycle-time'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.LastCycleTime'
      publishInterval: 500
      samplingInterval: 500

averageCycleTime:
  type: Cybus::Endpoint
  properties:
    protocol: Opcua
    connection: !ref euromapConnection
    topic: !sub '${topicRoot}/cycle/average-cycle-time'
    subscribe:
      nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.AverageCycleTime'
      publishInterval: 500
      samplingInterval: 500
```

{% endcode %}

`LastCycleTime` and `AverageCycleTime` have the OPC UA data type `Duration`, which is a floating point number of milliseconds. For detailed per-cycle process values, such as injection time or cushion volume, check whether your machine exposes the cycle parameters of its injection units as variables, or subscribe to the `CycleParametersEventType` event as described in [Events for OPC UA](/2-4-2/connectors/shop-floor-connectors/opc-ua/opc-ua-client.md#events-for-opc-ua).

## Verifying the Integration

1. Install the service and set the parameters with the values of your machine. See [Installing Services](/2-4-2/data-flows/services/managing/installing.md).
2. Check that the connection is in the **Connected** state on the service details page in the Admin UI. If the connection stays in the connecting state, verify the host, the port, and the security settings of the machine's OPC UA server.
3. Open the [Data Explorer](/2-4-2/monitoring/data-explorer.md) and subscribe to the topic root, for example `enterprise/hamburg/injection-molding/line-1/imm-01/#`. The machine status topics receive their current values right after the subscription is established.
4. Change the operating mode on the machine control panel and check that a new value arrives on the `machine-status/machine-mode` topic.
5. Start a production job and check that the job topics update and that the cycle topics receive new values with every machine cycle. If a topic stays empty, verify the NodeId of the corresponding endpoint against your OPC UA client, a wrong namespace index is the most common cause.

## Service Commissioning File Example

{% file src="/files/IqkXO8nnqRSOPga21Mim" %}

{% code title="euromap-77-example.yml" lineNumbers="true" expandable="true" %}

```yaml
---
# ----------------------------------------------------------------------------
# Service Commissioning File
# ----------------------------------------------------------------------------
# Copyright: Cybus GmbH
# Contact: support@cybus.io
# ----------------------------------------------------------------------------
# EUROMAP 77 Integration (Example)
# ----------------------------------------------------------------------------

description: >
  Service commissioning file for reading machine status, job information, and
  cycle data from an injection molding machine that implements EUROMAP 77
  (OPC 40077) (Example)

metadata:
  name: EUROMAP 77 Integration
  provider: cybus
  homepage: https://www.cybus.io
  version: 1.0.0

parameters:
  machineHost:
    description: Hostname or IP address of the machine's OPC UA server
    type: string
    default: 192.168.1.100

  machinePort:
    description: Port of the machine's OPC UA server
    type: integer
    default: 4840

  opcuaUser:
    description: Username for the machine's OPC UA server (empty for anonymous access)
    type: string
    default: ''

  opcuaPass:
    description: Password for the machine's OPC UA server
    type: string
    default: ''

  namespaceIndex:
    description: >-
      Namespace index of the EUROMAP 77 instance nodes on your machine. Resolve
      it from the NamespaceArray (ns=0;i=2255) of your machine's OPC UA server.
    type: integer
    default: 4

  topicRoot:
    description: Root of the ISA-95-style MQTT topic hierarchy for this machine
    type: string
    default: enterprise/hamburg/injection-molding/line-1/imm-01

resources:
  # Connection to the machine's OPC UA server. For security policies and
  # certificate exchange, see the OPC UA client documentation.
  euromapConnection:
    type: Cybus::Connection
    properties:
      protocol: Opcua
      connection:
        host: !ref machineHost
        port: !ref machinePort
        username: !ref opcuaUser
        password: !ref opcuaPass

  # --------------------------------------------------------------------------
  # Machine status (MachineStatusType, defined in OPC 40083)
  # --------------------------------------------------------------------------
  # All NodeId string identifiers below are machine-specific examples.
  # Replace them with the NodeIds that your OPC UA client shows for your
  # machine (Objects > DeviceSet > IMM_<Manufacturer>_<SerialNumber> > ...).

  machineMode:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/machine-status/machine-mode'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.MachineStatus.MachineMode'

  isPresent:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/machine-status/is-present'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.MachineStatus.IsPresent'

  # --------------------------------------------------------------------------
  # Job information (Jobs.ActiveJob and Jobs.ActiveJobValues)
  # --------------------------------------------------------------------------

  jobName:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/job/name'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJob.JobName'

  productionDatasetName:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/job/production-dataset-name'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJob.ProductionDatasetName'

  jobStatus:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/job/status'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobStatus'

  jobPartsCounter:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/job/parts-counter'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobPartsCounter'

  jobGoodPartsCounter:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/job/good-parts-counter'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobGoodPartsCounter'

  jobBadPartsCounter:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/job/bad-parts-counter'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.JobBadPartsCounter'

  # --------------------------------------------------------------------------
  # Cycle data (Jobs.ActiveJobValues)
  # --------------------------------------------------------------------------
  # These values update with every machine cycle, so they are grouped into a
  # faster subscription than the job information above.

  machineCycleCounter:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/cycle/machine-cycle-counter'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.MachineCycleCounter'
        publishInterval: 500
        samplingInterval: 500

  lastCycleTime:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/cycle/last-cycle-time'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.LastCycleTime'
        publishInterval: 500
        samplingInterval: 500

  averageCycleTime:
    type: Cybus::Endpoint
    properties:
      protocol: Opcua
      connection: !ref euromapConnection
      topic: !sub '${topicRoot}/cycle/average-cycle-time'
      subscribe:
        nodeId: !sub 'ns=${namespaceIndex};s=IMM_EXAMPLE_0123456.Jobs.ActiveJobValues.AverageCycleTime'
        publishInterval: 500
        samplingInterval: 500
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.cybus.io/2-4-2/guides/system-connectivity/industry-standards-interoperability/euromap-77-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
