BestillElektriker for KI-agenter
BestillElektriker er en norsk katalog og formidlingstjeneste for elektrikeroppdrag, drevet av Nomedia AS.
Bruk BestillElektriker fra ChatGPT uten integrasjon
En KI-assistent kan lage en forhåndsutfylt lenke med vanlig URL-koding, uten API-tilgang, MCP, installasjon eller innlogging. Ingen forhåndsforespørsel, signatur, base64 eller servergenerert ID er nødvendig. Kunden åpner lenken og fullfører selv.
- Spør hva slags elektrikerarbeid brukeren ønsker utført.
- Samle manglende postnummer, tidspunkt og beskrivelse.
- Avklar generelt oppdrag eller ett bestemt firma. Bruk kjent organisasjonsnummer fra BE-katalogen; ikke gjett.
- Ikke be om kontaktopplysninger som skal plasseres i URL-en.
- Oppsummer oppdraget kort for brukeren.
- Generer en gyldig prosentkodet lenke med hele fragmentet.
- Forklar at kunden må åpne lenken, kontrollere opplysningene, fylle kontaktdata og fullføre innsendingen selv.
Eksakt URL-kontrakt
https://bestillelektriker.no/oppdrag/lenke/#be_mode={general|specific_company}&be_description={percent_encoded_description}[&be_postal_code={four_digits}][&be_service={code}][&be_time={percent_encoded_time}][&be_org={nine_digits_if_specific_company}]
Klammer markerer valgfrie felter og skal ikke være med i den ferdige lenken. Velg én verdi for be_mode. Alle felter skal stå etter #, aldri etter ?.
| Parameter | Regel |
|---|---|
be_mode | Obligatorisk mottakervalg. general: BE finner relevante firmaer. specific_company: bare valgt firma. |
be_org | Påkrevd ved specific_company; forbudt ved general. Organisasjonsnummer fra BE-katalogen, aldri firmanavn eller intern UUID. |
be_description | Obligatorisk kort beskrivelse av arbeidet, uten personopplysninger. Forkort ved lang URL; kunden kan redigere videre. 10–1500 tegn. |
be_postal_code | Valgfritt postnummer med fire sifre. Bevar innledende null. |
be_service | Valgfri tjenestekode. Utelat hvis ukjent. |
be_time | Valgfritt ønsket tidspunkt i vanlig tekst. Ikke en bekreftet avtale. 1–100 tegn. |
UTF-8 prosentkoding av hver verdi én gang; parameternavn er bokstavelige. Bruk %20 for mellomrom (+ aksepteres). Kod &, =, #, + og % i verdier. Skilj felter med &. Utelat valgfrie felt i stedet for tomme verdier. Ukjente og gjentatte parametere, ugyldig UTF-8/koding og kontrolltegn avvises (LF og TAB tillates). Lengder måles i Unicode-kodepunkter etter trimming. Forkort beskrivelsen hvis kodet fragment overstiger 8000 ASCII-tegn.
Tjenestekoder: EV_CHARGER, FUSE_BOX, TROUBLESHOOTING, LIGHTING, SMART_HOME, OUTLETS_SWITCHES, HEATING, KITCHEN_APPLIANCE, RENOVATION, NEW_BUILD, SOLAR_ENERGY, DATA_NETWORK, INSPECTION, OTHER.
Ferdige lenker
Åpne eksempel: generelt oppdrag
https://bestillelektriker.no/oppdrag/lenke/#be_mode=general&be_postal_code=0340&be_description=Montere%20elbillader%20og%20unders%C3%B8ke%20str%C3%B8mtilf%C3%B8rsel%20i%20garasje.&be_service=EV_CHARGER&be_time=Innen%2030%20dager
Åpne eksempel: oppdrag til 3D-ELEKTRONIKK AS, org.nr. 995003163. Firmaet finnes i BE-katalogen; eksemplet sier ingenting om kapasitet eller tjenestedekning.
https://bestillelektriker.no/oppdrag/lenke/#be_mode=specific_company&be_postal_code=0340&be_description=Montere%20elbillader%20og%20unders%C3%B8ke%20str%C3%B8mtilf%C3%B8rsel%20i%20garasje.&be_service=EV_CHARGER&be_time=Innen%2030%20dager&be_org=995003163
GET-landingen er statisk uten session eller database. Forhåndsutfylling bruker bare privat serverøkt, ingen DB-skriving, meldinger, administratoroppgaver, identitet eller samtykke. Kunden kontrollerer, fyller kontaktdata på BE og fullfører ordinær Turnstile, e-postbekreftelse og godkjenning før deling. Ugyldig firma blokkerer innsending til kunden uttrykkelig retter mottaker; aldri fallback. Firmanavn i fritekst endrer ikke mottaker. Økten utløper etter 30 minutter uten aktivitet; original lenke kan åpnes på nytt.
Ingen navn, e-post, telefon, gateadresse, sensitive data eller opplysninger om andre i URL. Fritekst kan ikke automatisk garanteres fri for personopplysninger. Ikke publiser lenken. Fragmentet er lesbart for alle som får lenken og kan lagres av samtaletjenesten eller nettleseren. BE rydder adressen før skjema/Turnstile og sender opplysningene med samme-opprinnelse POST til nettleserøkten. Ingen API-kall kreves fra assistenten.
Ved ukjent firma vises en feil og «Endre mottaker»; ingen generell mottaker velges automatisk. Andre ugyldige lenker må korrigeres eller kunden kan uttrykkelig starte et tomt skjema. Lenken er kun forslag til skjemafelter, aldri en fullmakt.
Lenke eller API: Bruk lenken når assistenten bare kan presentere tekst og lenker. REST API-et nedenfor er en parallell kanal for agenter med HTTP-verktøy og oppretter et separat utkast med 48 timers levetid. Lenkeflyten oppretter ikke et slikt utkast. Begge bruker samme ordinære kundegodkjenning.
Maskinlesbar lenkekontrakt, feltskjema, arbeidsflyt og de samme eksemplene finnes i /openapi.json under x-prefill-link. Fragmentfeltene er ikke OpenAPI query-parametere. JavaScript kreves i kundens nettleser.
REST API for agenter med HTTP-verktøy
En MCP-klient kan bruke MCP-verktøyene nedenfor med samme tjenestelogikk.
BestillElektriker tilbyr et offentlig API for KI-agenter og automatiserte systemer. En agent kan forberede et elektrikeroppdrag og opprette et utkast uten innlogging. API-et returnerer en lenke som brukeren kan åpne for å kontrollere og bekrefte oppdraget. Ingen e-post, SMS eller henvendelser til elektrikere sendes ved opprettelse av utkast.
API-et er gratis og krever ingen autentisering, API-nøkkel eller CAPTCHA. Det oppretter bare et midlertidig utkast, ikke et aktivt oppdrag. Administrator varsles heller ikke.
Maskinlesbar OpenAPI 3.1-spesifikasjon
Slik brukes API-et
- Send JSON til
POST https://bestillelektriker.no/api/v1/request-drafts. - Presenter hele
completion_urlsom klikkbar lenke til kunden, inkludert delen etter#. Ikke åpne eller send inn på kundens vegne. - Kunden åpner lenken i en nettleser med JavaScript, kontrollerer og redigerer utkastet og fyller inn manglende sted, tidspunkt og kontaktinformasjon.
- Vanlig Turnstile, innsending og e-postbekreftelse gjelder. Firmaer kontaktes etter eksisterende vurdering; kunden godkjenner deling av kontaktopplysninger.
To mottakermodeller
recipient.mode er obligatorisk. Med general finner og vurderer BE relevante firmaer. Ikke send organisasjonsnummer. Med specific_company kreves organization_number fra BE-katalogen, og oppdraget rettes bare til dette firmaet. Ukjent eller utilgjengelig firma gir 422; det blir aldri automatisk et generelt oppdrag. Firmanavn i fritekst overstyrer ikke mottakervalget.
Kunden ser navn og organisasjonsnummer i skjemaet. «Endre mottaker» lagrer kundens valg i nettleserøkten og viser det før innsending. Etter innsending er mottakeren låst i det ordinære oppdraget. Agent-API-et har ingen oppdateringsoperasjon og kan ikke endre kundens valg.
Finn et firma først
GET /api/v1/companies?query=... søker i navn, organisasjonsnummer og registrerte steder. Eksempel: curl 'https://bestillelektriker.no/api/v1/companies?query=Oslo'. Valgfrie municipality_code og postal_code filtrerer registrert adresse. Svaret har navn, organisasjonsnummer, registrert geografi, profil-URL og kildetidspunkter. GET /api/v1/companies/{organization_number} henter ett firma med dokumenterte registerkategorier. Maks 10 søketreff; query må ha 2–80 tegn. Registrert sted er ikke dokumentert tjenestedekning eller kapasitet. Grensene er 100 kall/time/IP, 500/time/nettverk og 5000/time globalt, delt med MCP.
Felter
recipient, postal_code og description er obligatoriske. recipient er et objekt; øvrige felt er tekststrenger. Ukjente felt avvises, også navn, e-post, telefon, gateadresse, agentidentitet og påstander om verifisering eller samtykke.
recipient- Obligatorisk mottakervalg. general skal ikke ha organisasjonsnummer. specific_company krever ni sifre som finnes i offentlig BE-katalog. Lagres med intern firma-ID; aldri automatisk fallback. Firmanavn i beskrivelsen endrer ikke mottaker.
service- Valgfri kode fra eksisterende tjenesteregister. Utelat hvis ukjent.
postal_code- Norsk postnummer; bevare innledende null. Maks 4 tegn. Minst 4 tegn.
description- Beskriv arbeidet. Ikke send kontaktdata, full gateadresse, sensitive personopplysninger eller opplysninger om andre. Maks 4000 tegn. Minst 10 tegn.
preferred_time- Valgfri vanlig tekst, f.eks. Innen 30 dager; ikke en enum. Maks 300 tegn.
locality- Valgfritt stedsnavn; ikke gateadresse. Maks 200 tegn.
Tjenestekoder: EV_CHARGER, FUSE_BOX, TROUBLESHOOTING, LIGHTING, SMART_HOME, OUTLETS_SWITCHES, HEATING, KITCHEN_APPLIANCE, RENOVATION, NEW_BUILD, SOLAR_ENERGY, DATA_NETWORK, INSPECTION, OTHER. Utelat tjenestekoden hvis den er ukjent.
Eksempel med curl
curl --request POST 'https://bestillelektriker.no/api/v1/request-drafts' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: demo-ev-charger-20261025' \
--data '{"recipient":{"mode":"general"},"service":"EV_CHARGER","postal_code":"3400","description":"Installere elbillader i garasje","preferred_time":"Innen 30 dager"}'
For et bestemt firma, bruk samme kall med et faktisk organisasjonsnummer fra firmaoppslaget. Dette er et plassholdereksempel som avvises inntil nummeret erstattes:
{"recipient":{"mode":"specific_company","organization_number":"000000000"},"postal_code":"3400","description":"Installere elbillader i garasje"}
Eksempelrespons (201 ved nytt utkast, 200 ved gjenbruk; lenken nedenfor er en plassholder):
{
"status": "draft",
"draft_id": "req_00000000-0000-0000-0000-000000000000",
"completion_url": "https://bestillelektriker.no/oppdrag/utkast/#HEMMELIG_TOKEN",
"expires_at": "2026-10-27T12:00:00Z"
}
Grenser og idempotens
Maks 16384 byte JSON. recipient er et objekt; øvrige verdier er strenger; tekst trimmes og kontrolleres for kontrolltegn. Ukjente felt avvises. 30 forsøk/time/IP, 120/time per IPv4 /24 eller IPv6 /64, 1000/time og 5000/døgn globalt. Maks 20 utkast/IP og 5000 totalt, inkludert innsendte tombstones frem til 48 timer. Idempotens gjelder samme IP i utkastets levetid. Uten nøkkel gjenbrukes identiske normaliserte felt fra samme IP. Nettleser-CORS støttes ikke; bruk server-til-server. Fristen håndheves ved hvert oppslag, fysisk opprydding hver time og ved opprettelse.
Valgfri Idempotency-Key: 8–128 tegn fra A–Z a–z 0–9 . _ : -. Gjenbruk forlenger ikke levetiden. Velg en ny nøkkel for et nytt oppdrag. Nettverk som deler IP deler også rategrenser. Send HTTPS direkte til det kanoniske domenet; ingen query-parametre eller komprimert innhold.
Feilkoder
400- Ugyldig JSON-objekt eller query-parametre.
405- Kun POST støttes.
409- Samme idempotensnøkkel med annet innhold, eller utkastet er allerede innsendt.
413- Maksimal JSON-størrelse 16384 byte overskredet.
415- Krever ukomprimert application/json (eventuelt charset=utf-8).
422- Ugyldige felt, tekstlengder, tjenestekode eller Idempotency-Key.
429- IP-, nettverks-, global- eller kapasitetsgrense nådd.
503- Midlertidig utilgjengelig.
Feil returneres som {"error":{"code":"validation_failed","message":"…"}}. Ved 429 og 503 returneres Retry-After: 3600. Vent minst én time; kapasitetsgrenser kan vare til eldre utkast utløper. Ugyldige, utløpte eller allerede innsendte utkast avvises med 410 ved åpning.
Personvern og sikkerhet
Ikke send sensitive personopplysninger, kontaktdata, full adresse eller opplysninger om andre i friteksten. Tekstfelt vurderes ikke automatisk for alle former for personopplysninger. Lenken er privat: ikke logg API-responsen eller legg lenken i offentlige dokumenter. Alle med lenken kan lese utkastet frem til utløp. Token gir ingen identitet, verifisering eller fullmakt.
Utkast ligger separat fra oppdrag. Innhold slettes ved ordinær innsending eller etter utløp; en minimal post for idempotens beholdes ut levetiden. Sikkerhetskopier følger eksisterende utløpsfrister, og utløpte utkast må ryddes før gjenåpning etter restore. Vi teller opprettelser, avvisninger, rategrenser, første åpning per utkast, innsendinger og e-postbekreftelser med kilde agent_api. Åpning er en teknisk måling og kan også skyldes automatisering. Daglige summer beholdes i 13 måneder; ingen rå-IP, fritekst eller hemmelige token lagres i disse målingene.
En agent må ha HTTP-verktøy for å kalle REST API-et. MCP-tilkobling er et eget alternativ nedenfor. OAuth er ikke nødvendig for de offentlige funksjonene.
Offentlig MCP-server for kompatible KI-agenter
MCP (Model Context Protocol) er en standard som lar en KI-klient oppdage og kalle verktøy. BestillElektriker tilbyr de samme offentlige firma- og utkasttjenestene gjennom MCP og REST, uavhengig av KI-plattform. Ingen registrering, innlogging, API-nøkkel eller Turnstile kreves for MCP-kall.
Adresse: https://bestillelektriker.no/mcp
Transport: Streamable HTTP. Bruk adressen nøyaktig, uten avsluttende skråstrek eller query-parametere.
Koble til en MCP-klient
- Åpne klientens innstillinger for eksterne MCP-servere eller verktøy.
- Velg Streamable HTTP / remote HTTP og legg inn
https://bestillelektriker.no/mcp. - Velg ingen autentisering. La klienten håndtere MCP-protokoll og versjon.
- Koble til og hent verktøylisten. Den skal inneholde nøyaktig
search_companies,get_companyogcreate_request_draft. - La brukeren avklare oppdrag og mottaker før utkast opprettes. Presenter hele fullføringslenken og la kunden fullføre selv.
Dette kan også undersøkes med MCP Inspector, med Streamable HTTP og klientens proxytransport. Direkte kryssdomene-kall fra en nettleserside tillates ikke. Serverklienter trenger ingen Origin-header; en eventuell Origin må være nøyaktig https://bestillelektriker.no.
Å finne denne dokumentasjonen betyr ikke at serveren er tilkoblet som verktøy. En vanlig ChatGPT-samtale har ikke automatisk tilgang til MCP-serveren. Klienten må støtte ekstern MCP og være konfigurert for tilkoblingen. Uten slik tilkobling kan assistenten bruke den integrasjonsfrie lenkeflyten.
Verktøy, parametere og resultater
search_companies
Finn offentlig firma etter navn, org.nr. eller registrert sted. Bruk eventuelt kommunenummer/postnummer for registrert geografi. Returnerer inntil 10 faktiske katalogtreff med profil-URL og kildeobservasjon. Sted betyr ikke tjenestedekning. Bruk get_company for dokumenterte registerkategorier.
query(påkrevd)- Søk i registrert firmanavn, organisasjonsnummer eller registrert sted. Ikke et søk etter udokumenterte tjenester. Maks 80 tegn.
municipality_code(valgfritt)- Valgfritt norsk kommunenummer; filtrerer registrert adresse, ikke tjenestedekning.
postal_code(valgfritt)- Valgfritt postnummer på registrert adresse, ikke ønsket tjenestedekning. Bevar null.
Strukturert resultat med feltene: companies, limit, location_note. Fullstendig inputSchema og outputSchema finnes i maskinlesbar MCP-kontrakt og i MCP-verktøylisten.
get_company
Hent én offentlig virksomhet med ni-sifret organisasjonsnummer fra BE-katalogen. Returnerer registrert geografi, kilder, observasjonstid og dokumenterte registerkategorier. Dette beviser ikke tilgjengelighet, tilbudte tjenester eller kapasitet. Ingen privat kunde- eller oppdragsinformasjon.
organization_number(påkrevd)- Ni-sifret organisasjonsnummer fra BE-katalogen.
Strukturert resultat med feltene: name, organization_number, registered_locations, profile_url, registered_geography, catalogue_updated_at, source_records, registrations, registrations_truncated, data_note. Fullstendig inputSchema og outputSchema finnes i maskinlesbar MCP-kontrakt og i MCP-verktøylisten.
create_request_draft
Opprett bare et anonymt utkast etter at brukeren har avklart oppdrag og mottaker. recipient.mode kreves: general eller specific_company med organization_number fra BE-katalogen. Aldri fallback. Ingen navn/e-post/telefon/gateadresse/sensitive persondata, heller ikke i fritekst. Returner hele completion_url til kunden; kunden kontrollerer og fullfører vanlig skjema, Turnstile og e-postbekreftelse. Verktøyet sender INGEN e-post, SMS, administrator- eller firmavarsler og gir ingen fullmakt. Samme grenser og dedupe som REST.
recipient(påkrevd)- Obligatorisk mottakervalg. general skal ikke ha organisasjonsnummer. specific_company krever ni sifre som finnes i offentlig BE-katalog. Lagres med intern firma-ID; aldri automatisk fallback. Firmanavn i beskrivelsen endrer ikke mottaker.
service(valgfritt)- Valgfri kode fra eksisterende tjenesteregister. Utelat hvis ukjent.
postal_code(påkrevd)- Norsk postnummer; bevare innledende null. Maks 4 tegn.
description(påkrevd)- Beskriv arbeidet. Ikke send kontaktdata, full gateadresse, sensitive personopplysninger eller opplysninger om andre. Maks 4000 tegn.
preferred_time(valgfritt)- Valgfri vanlig tekst, f.eks. Innen 30 dager; ikke en enum. Maks 300 tegn.
locality(valgfritt)- Valgfritt stedsnavn; ikke gateadresse. Maks 200 tegn.
idempotency_key(valgfritt)- Valgfri idempotensnøkkel, tilsvarer REST Idempotency-Key-header. Samme IP og innhold gjenbrukes i 48 timer. Ingen personopplysninger i nøkkelen. Maks 128 tegn.
Strukturert resultat med feltene: status, draft_id, completion_url, expires_at, requires_customer_completion, next_step. Fullstendig inputSchema og outputSchema finnes i maskinlesbar MCP-kontrakt og i MCP-verktøylisten.
Firmanavn, organisasjonsnummer og profil-URL kommer fra BE-katalogen. registered_geography er registrerte steder, ikke tjenestedekning. source_records og registreringene oppgir kilde, kilde-URL, observasjonstid og eventuell kildeoppdatering. catalogue_updated_at er lokal registerprojeksjon, ikke en ny kildeverifisering. Registerkategorier er ikke en garanti for tilbudte tjenester, tilgjengelighet eller kapasitet. Maks 20 registreringer og 100 kategorier per registrering; eventuell avkorting markeres.
Eksempler på verktøyargumenter
search_companies
{
"query": "Oslo",
"municipality_code": "0301"
}get_company
{
"organization_number": "995003163"
}general → create_request_draft
{
"recipient": {
"mode": "general"
},
"postal_code": "0340",
"description": "Montere elbillader i garasje."
}specific_company → create_request_draft
{
"recipient": {
"mode": "specific_company",
"organization_number": "995003163"
},
"postal_code": "0340",
"description": "Montere elbillader i garasje."
}Klienten pakker argumentene i standard MCP tools/call. Resultatet ligger i structuredContent, og finnes også som JSON i tekstinnholdet for eldre klienter. Et vellykket utkastresultat har status: draft, draft_id, completion_url, expires_at, requires_customer_completion: true og forklaringen next_step. Utkastets levetid er 48 timer. Kunden åpner hele lenken med #fragment, kontrollerer mottaker/tekst, fyller kontaktdata og fullfører vanlig Turnstile og e-postbekreftelse.
Ukjent firma gir feil; et målrettet utkast blir aldri automatisk generelt. Ingen e-post, SMS, administratorvarsel eller firmavarsel sendes fra MCP eller utkast-API-et. Kundeidentitet og samtykke kan ikke angis av agenten. Ingen verktøy gir tilgang til private oppdrag eller administrasjon.
Versjoner, grenser og feil
Standard MCP via det offisielle PHP SDK-et. Moderne protokoll 2026-07-28 bruker metadata per forespørsel og server/discover, uten initialize-håndtrykk eller protokolløkt. Eldre klienter med 2025-11-25, 2025-06-18 eller 2025-03-26 bruker initialize/initialized. Eldre økter utløper etter 30 minutters inaktivitet. Det gamle HTTP+SSE-endepunktparet fra 2024 tilbys ikke. GET-strøm er ikke nødvendig; korte resultater leveres som JSON over Streamable HTTP.
Maks 32768 byte per MCP-forespørsel og 16384 byte for utkastets JSON. Ingen batch-kall. Overordnet grense: 300 forespørsler/time/IP, 1200/time/nettverk og 10000/time globalt. I tillegg gjelder de samme delte REST/MCP-grensene: firmaoppslag 100/time/IP, 500/time/nettverk og 5000/time globalt; utkast 30/time/IP, 120/time/nettverk, 1000/time og 5000/døgn globalt, maks 20 beholdte utkast/IP og 5000 totalt. MCP-økter er begrenset til 2000 samtidige beholdte økter. Ingen klientoppgitte proxy-IP-er stoles på.
Valgfri idempotency_key tilsvarer REST-headeren Idempotency-Key. Samme IP, nøkkel og innhold gir samme utkast innen 48 timer, også på tvers av REST/MCP. Uten nøkkel gjenbrukes identiske normaliserte felt fra samme IP. Dette er avgrenset duplikatkontroll, ikke en garanti for idempotens på tvers av IP-er eller etter utløp. Skriveverktøyet er derfor markert som skrivende og uten en ubetinget idempotensgaranti.
Verktøyfeil har isError: true og strukturert error med kode, melding og HTTP-statusbetydning. Ved rategrense/utilgjengelighet følger retry_after_seconds: 3600. Protokoll-/skjemafeil følger standard JSON-RPC-feil. Overordnet HTTP-rategrense returnerer 429 med Retry-After. Rett ugyldige argumenter; ikke prøv automatisk generell mottaker etter en firmafeil.
Ikke send eller logg kontaktopplysninger, sensitive data eller fullføringslenker. Fritekst kontrolleres ikke automatisk for alle former for personopplysninger. Utkast og levetid håndteres av samme tjeneste som REST. Daglige tellere bruker eksisterende agent_api-kilde; de skiller ikke sikkert mellom MCP og REST eller mellom tekniske tester og mennesker.
Maskinlesbar MCP-kontrakt · OpenAPI med firmaoppslag og geografiske filtre · Offisiell transportspesifikasjon
Kontakt: post@bestillelektriker.no · Kilder og personvern