# Kobl en agent på

En agent eller jeres egen kode kan komme til produktionsdata i OptiPeople Data Platform på to måder: MCP-serveren, hvor en AI-assistent kalder værktøjerne for jer, og REST-API'et til udviklere og BI-værktøjer. De bygger på de samme data. Opti Assist er en tredje måde at spørge på, lavet til dem, der står ved maskinen.

- MCP-server: `https://mcp.optipeople.dk/`
- REST-API: `https://dataexport.optipeople.dk/api`
- API-login: `Authorization: Opti <ADGANGSKODE>`
- API-reference: [Swagger](https://api.optipeople.dk/swagger/index.html?access=optipeople-1)
- API-reference: [PDF](https://storageprodoptipeople.blob.core.windows.net/application-resources/v1/Optipeople_External_API.pdf)

## Det skal være på plads

1. En konto på `portal.optipeople.dk`
2. Mindst én maskine med en enhed koblet på
3. Data, der kommer ind fra enheden
4. Til REST-API'et: kontoens adgangskode. Til MCP-serveren: en portalbruger at logge ind med.

Har I ikke en konto endnu, er der ingen data at koble på. Book en demo på [kontaktsiden](https://optipeople.com/da/contact).

## API eller MCP?

|  | REST-API | MCP-server |
|---|---|---|
| Hvem bruger det | Udviklere og BI-værktøjer | Alle, der kan stille et spørgsmål |
| Hvordan | REST-kald med en adgangskode | En AI-assistent kalder værktøjerne for jer |
| Login | Kontoens adgangskode | OAuth med jeres egen portalbruger |
| Bedst til | Power BI, ERP-integrationer, faste rapporter | Spørgsmål der dukker op, analyser, hurtige svar |

Mange bruger begge: API'et fodrer de faste rapporter, og MCP svarer på det, der dukker op ind imellem.

## MCP-server

Serverens adresse er:

```text
https://mcp.optipeople.dk/
```

Alle klienter, der understøtter MCP-servere over HTTP med OAuth, kan koble på med den URL. I Claude Code:

```bash
claude mcp add --transport http optipeople https://mcp.optipeople.dk/
```

Kør derefter `/mcp` i Claude Code og log ind.

Opsætning i Claude, login, alle 13 værktøjer, datakilderne og grænserne: [MCP-serveren](https://optipeople.com/da/docs/mcp) ([Markdown](https://optipeople.com/da/docs/mcp.md)).

## REST-API

### Adresse og adgangskode

Alle kald går til `https://dataexport.optipeople.dk/api`. Der er 54 endpoints, og de kører alle over HTTPS og svarer i JSON.

Adgangskoden finder I i portalen under **Accounts > External API**. Den hører til jeres konto, så pas på den som på et password. Den foretrukne måde at sende den på er en header:

```text
Authorization: Opti <ADGANGSKODE>
```

Den anden er parameteren `access_code` i URL'en. Den er nem, når I bare vil teste i en browser:

```text
https://dataexport.optipeople.dk/api/Machine/GetAll?access_code=<ADGANGSKODE>
```

Får I en JSON-liste med jeres maskiner tilbage, virker forbindelsen.

### De første kald

**1. Find jeres maskiner.** Kald `GET /Machine/GetAll` og skriv `id` ned for hver maskine. Næsten alle andre endpoints skal have et `machineId`.

```bash
curl -H "Authorization: Opti <ADGANGSKODE>" \
  https://dataexport.optipeople.dk/api/Machine/GetAll
```

**2. Hent produktionsdata for en periode.** Kald `GET /DataExport/GetDataExport` med en maskine og en periode:

```bash
curl -H "Authorization: Opti <ADGANGSKODE>" \
  "https://dataexport.optipeople.dk/api/DataExport/GetDataExport?machineId=<MASKINE_ID>&from=2026-10-01&to=2026-10-25"
```

**3. Vil I have OEE regnet ud,** så kald `GET /DataExport/GetOEE`. Den giver OEE, tilgængelighed, ydelse og kvalitet pr. maskine. Sæt `includePerShiftData=true` på for tallene pr. skift.

### Parametre, der går igen

- `machineId`: maskinen, I vil se data for. På `GetDataExport`, `GetEventExport` og `GetOEE` kan I gentage den og få flere maskiner i ét kald.
- `factoryId`: kun én fabrik.
- `from` og `to`: perioden som `yyyy-MM-dd`. De fleste udtræk tager dagen i dag, hvis I udelader dem, og ét kald kan højst dække et år.

Alle svar er bygget ens op: `data` er resultatet, `errors` er det, der gik galt, og `meta` er ekstra oplysninger.

### De vigtigste udtræk

- `GetDataExport`: en periodes produktionsdata pr. skift, tæller, ordre og stop. Her starter de fleste Power BI-rapporter.
- `GetOEE`: OEE, tilgængelighed, ydelse og kvalitet pr. maskine.
- `GetEventExport`: hver eneste gang maskinen starter eller stopper.
- `GetOrderReportExport`: produktion pr. ordre, med stoptiden fordelt ud på ordrerne.
- `GetLatestStop` og `GetHeartbeats`: maskinens seneste stop, og om maskinerne melder sig.
- `GetTelemetryData`, `GetTelemetry` (OData, op til 10.000 rækker pr. side) og `GetHoursSpentBetweenTelemetryThresholds`: telemetri som temperatur og vibration.
- `GetTPMAlertsExport`: TPM-alarmer til at planlægge vedligehold ud fra.

### Send data ind

- **Ordrer:** `POST /Machine/SetMachinePartInformation` starter en ordre på en maskine, og `POST /PartOrderNumber/ExternalSetPartOrder` sætter ordren på fabriksniveau.
- **Operatører:** opret, ret og slet operatører med `/User`-endpoints. `CreateOrUpdateOperators` finder operatøren ud fra medarbejdernummer.
- **Stop:** `POST /Waste/RegisterAllPendingWaste` giver alle ventende stop samme årsag i ét hug.
- **Stamdata:** læs, opret, ret, søg i og slet rækker i jeres stamdatatabeller med `/MasterData`-endpoints.

### Alle grupper af endpoints

| Gruppe | Hvad den dækker |
|---|---|
| Account | Kontoens indstillinger |
| API Usage | Hvor mange kald og hvor meget data I har brugt, pr. konto eller pr. integration |
| Factory | Jeres fabrikker |
| Device | Enheder og deres status |
| Machine | Maskiner, manuelle operatørlog, stopkonfiguration, start af ordrer |
| Machine Shift og Shift Identifier | Skiftplaner og skiftnavne |
| Data Export | Produktion, OEE, hændelser, ordrer, stop, heartbeats, TPM-alarmer og telemetri |
| Report | Ordren, der kører nu, tællerrapporter pr. dag og pr. time, ordreoplysninger med egne felter |
| Part Order Number | Ordrer pr. fabrik og præcist antal emner mellem to tidspunkter |
| Master Data | Jeres egne datatabeller |
| Task Configuration og Task Instance | Opgaver, aktive og afsluttede opgaver med historik |
| User | Operatører |
| Waste | Registrering af ventende stop |
| Incomac App | Indstillinger for energioptimering, spotpriser og maskinbeskeder |

### Hold øje med forbruget

`GET /APIUsage/GetUsageForAccount?startDate=2026-10-01` viser, hvor mange kald I har lavet, og hvor meget data de har givet, fordelt pr. endpoint. `GetUsageForExternalApplication` gør det samme for én integration.

### Reference

- [Interaktiv API-reference (Swagger)](https://api.optipeople.dk/swagger/index.html?access=optipeople-1): prøv hvert endpoint, før I skriver kode
- [External API Reference (PDF)](https://storageprodoptipeople.blob.core.windows.net/application-resources/v1/Optipeople_External_API.pdf): parametre og det fulde svarformat for hvert endpoint
- [API-guiden, trin for trin](https://optipeople.com/da/blog/opticloud-api-how-to-use-it-step-by-step)

## Send data ind over MQTT

Platformen tager også imod data. Maskinstatus, emnetællere og målinger kan sendes ind over MQTT i et dokumenteret JSON-format, med UTC-tidsstempler og id på hver enhed. Forbindelsesoplysningerne står ikke på sitet, så [spørg os](https://optipeople.com/da/contact).

## Opti Assist

Opti Assist på [ai.optipeople.dk](https://ai.optipeople.dk/) er vores chat til produktionen. Det er en app til folk, ikke et API til agenter. Hver maskine får sin egen QR-kode. Operatøren scanner den med telefon eller tablet, uden app og uden login, spørger på dansk eller engelsk og får svaret fra jeres egne manualer og maskinens live data i OptiPeople Data Platform, med kilderne under. Er det en opgave for en tekniker, er det ét tryk, så får servicekontakten en SMS.

Læs mere om [Opti Assist](https://optipeople.com/da/ai/chat), eller se den i en kort demo: book en på [kontaktsiden](https://optipeople.com/da/contact).

## Godt at vide for agenter

- Spørg aldrig efter portalens password. MCP-login kører over OAuth med PKCE, og passwordet går aldrig gennem AI-assistenten.
- API-adgangskoden hører til hele kontoen. Pas på den som på et password.
- Det, der bliver skrevet, er rigtigt. Data fra MCP-værktøjerne, der skriver, tæller med i OEE, præcis som data fra maskinen, og API'ets skrivende endpoints ændrer de samme data. En agent skal kun skrive, når den bliver bedt om det.
- Ændringer via MCP bliver gemt med kilden `McpTool`, så de kan skelnes fra det, maskinerne selv har sendt.
- Tider er i hver fabriks lokale tid. En periode, der stadig kører, er ikke endelig.
- Hjælp til en installation: support@optipeople.dk.
