{
  "name": "BestillElektriker",
  "version": "1.0.0",
  "endpoint": "https://bestillelektriker.no/mcp",
  "transport": "Streamable HTTP",
  "authentication": "none",
  "protocol_versions": [
    "2026-07-28",
    "2025-11-25",
    "2025-06-18",
    "2025-03-26"
  ],
  "documentation_url": "https://bestillelektriker.no/for-agenter/#mcp",
  "tools": [
    {
      "name": "search_companies",
      "title": "Finn firmaer i BE-katalogen",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "type": "string",
            "minLength": 2,
            "maxLength": 80,
            "description": "Søk i registrert firmanavn, organisasjonsnummer eller registrert sted. Ikke et søk etter udokumenterte tjenester."
          },
          "municipality_code": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "description": "Valgfritt norsk kommunenummer; filtrerer registrert adresse, ikke tjenestedekning."
          },
          "postal_code": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "description": "Valgfritt postnummer på registrert adresse, ikke ønsket tjenestedekning. Bevar null."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "companies",
          "limit",
          "location_note"
        ],
        "properties": {
          "companies": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "name",
                "organization_number",
                "registered_locations",
                "profile_url",
                "registered_geography",
                "catalogue_updated_at",
                "source_records"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "organization_number": {
                  "type": "string",
                  "pattern": "^[0-9]{9}$"
                },
                "registered_locations": {
                  "type": "array",
                  "maxItems": 10,
                  "items": {
                    "type": "string"
                  }
                },
                "profile_url": {
                  "type": "string",
                  "format": "uri"
                },
                "registered_geography": {
                  "type": "array",
                  "maxItems": 10,
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "postal_code",
                      "postal_city",
                      "municipality_code",
                      "municipality_name"
                    ],
                    "properties": {
                      "postal_code": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "postal_city": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "municipality_code": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "municipality_name": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    }
                  }
                },
                "catalogue_updated_at": {
                  "type": "string",
                  "format": "date-time",
                  "description": "Lokal projeksjonsoppdatering; ikke ny kildeverifisering."
                },
                "source_records": {
                  "type": "array",
                  "maxItems": 5,
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "source",
                      "observed_at",
                      "source_updated_at",
                      "last_seen_at",
                      "source_url"
                    ],
                    "properties": {
                      "source": {
                        "type": "string"
                      },
                      "observed_at": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "format": "date-time"
                      },
                      "source_updated_at": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "format": "date-time"
                      },
                      "last_seen_at": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "format": "date-time"
                      },
                      "source_url": {
                        "type": "string",
                        "format": "uri"
                      }
                    }
                  }
                }
              }
            }
          },
          "limit": {
            "type": "integer",
            "const": 10
          },
          "location_note": {
            "type": "string"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_company",
      "title": "Hent offentlig firmainformasjon",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "organization_number"
        ],
        "properties": {
          "organization_number": {
            "type": "string",
            "pattern": "^[0-9]{9}$"
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "organization_number",
          "registered_locations",
          "profile_url",
          "registered_geography",
          "catalogue_updated_at",
          "source_records",
          "registrations",
          "registrations_truncated",
          "data_note"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "organization_number": {
            "type": "string",
            "pattern": "^[0-9]{9}$"
          },
          "registered_locations": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "string"
            }
          },
          "profile_url": {
            "type": "string",
            "format": "uri"
          },
          "registered_geography": {
            "type": "array",
            "maxItems": 10,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "postal_code",
                "postal_city",
                "municipality_code",
                "municipality_name"
              ],
              "properties": {
                "postal_code": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "postal_city": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "municipality_code": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "municipality_name": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              }
            }
          },
          "catalogue_updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Lokal projeksjonsoppdatering; ikke ny kildeverifisering."
          },
          "source_records": {
            "type": "array",
            "maxItems": 5,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "source",
                "observed_at",
                "source_updated_at",
                "last_seen_at",
                "source_url"
              ],
              "properties": {
                "source": {
                  "type": "string"
                },
                "observed_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "source_updated_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "last_seen_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "source_url": {
                  "type": "string",
                  "format": "uri"
                }
              }
            }
          },
          "registrations": {
            "type": "array",
            "maxItems": 20,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "source",
                "observed_at",
                "source_updated_at",
                "last_seen_at",
                "source_url",
                "registration_type",
                "registration_number",
                "status",
                "source_status",
                "identity_status",
                "capabilities_truncated",
                "capabilities"
              ],
              "properties": {
                "source": {
                  "type": "string"
                },
                "observed_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "source_updated_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "last_seen_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                },
                "source_url": {
                  "type": "string",
                  "format": "uri"
                },
                "registration_type": {
                  "type": "string"
                },
                "registration_number": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "type": "string"
                },
                "source_status": {
                  "type": "string"
                },
                "identity_status": {
                  "type": "string"
                },
                "capabilities_truncated": {
                  "type": "boolean"
                },
                "capabilities": {
                  "type": "array",
                  "maxItems": 100,
                  "items": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": [
                      "category",
                      "code",
                      "label"
                    ],
                    "properties": {
                      "category": {
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      },
                      "label": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "registrations_truncated": {
            "type": "boolean"
          },
          "data_note": {
            "type": "string"
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_request_draft",
      "title": "Forbered et elektrikeroppdrag",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "recipient",
          "postal_code",
          "description"
        ],
        "properties": {
          "recipient": {
            "oneOf": [
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "mode"
                ],
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "general"
                  }
                }
              },
              {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "mode",
                  "organization_number"
                ],
                "properties": {
                  "mode": {
                    "type": "string",
                    "const": "specific_company"
                  },
                  "organization_number": {
                    "type": "string",
                    "pattern": "^[0-9]{9}$",
                    "minLength": 9,
                    "maxLength": 9
                  }
                }
              }
            ],
            "description": "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": {
            "type": "string",
            "enum": [
              "EV_CHARGER",
              "FUSE_BOX",
              "TROUBLESHOOTING",
              "LIGHTING",
              "SMART_HOME",
              "OUTLETS_SWITCHES",
              "HEATING",
              "KITCHEN_APPLIANCE",
              "RENOVATION",
              "NEW_BUILD",
              "SOLAR_ENERGY",
              "DATA_NETWORK",
              "INSPECTION",
              "OTHER"
            ],
            "description": "Valgfri kode fra eksisterende tjenesteregister. Utelat hvis ukjent."
          },
          "postal_code": {
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "minLength": 4,
            "maxLength": 4,
            "description": "Norsk postnummer; bevare innledende null."
          },
          "description": {
            "type": "string",
            "minLength": 10,
            "maxLength": 4000,
            "description": "Beskriv arbeidet. Ikke send kontaktdata, full gateadresse, sensitive personopplysninger eller opplysninger om andre."
          },
          "preferred_time": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300,
            "description": "Valgfri vanlig tekst, f.eks. Innen 30 dager; ikke en enum."
          },
          "locality": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200,
            "description": "Valgfritt stedsnavn; ikke gateadresse."
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 8,
            "maxLength": 128,
            "pattern": "^[A-Za-z0-9._:-]{8,128}$",
            "description": "Valgfri idempotensnøkkel, tilsvarer REST Idempotency-Key-header. Samme IP og innhold gjenbrukes i 48 timer. Ingen personopplysninger i nøkkelen."
          }
        }
      },
      "outputSchema": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "status",
          "draft_id",
          "completion_url",
          "expires_at",
          "requires_customer_completion",
          "next_step"
        ],
        "properties": {
          "status": {
            "type": "string",
            "const": "draft"
          },
          "draft_id": {
            "type": "string",
            "pattern": "^req_[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$"
          },
          "completion_url": {
            "type": "string",
            "format": "uri",
            "description": "Privat lenke med #fragment. Bevar hele lenken og presenter den til kunden. Må ikke logges eller deles offentlig. JavaScript kreves for å åpne utkastet."
          },
          "expires_at": {
            "type": "string",
            "format": "date-time",
            "description": "UTC, 48 timer etter opprettelse; gjenbruk forlenger ikke fristen."
          },
          "requires_customer_completion": {
            "type": "boolean",
            "const": true
          },
          "next_step": {
            "type": "string"
          }
        }
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": false
      }
    }
  ],
  "limits": {
    "max_request_bytes": 32768,
    "max_draft_json_bytes": 16384,
    "requests_per_ip_hour": 300,
    "requests_per_network_hour": 1200,
    "requests_global_hour": 10000,
    "legacy_session_idle_seconds": 1800,
    "legacy_session_capacity": 2000
  },
  "origin_policy": "Ingen Origin-header for serverklienter, eller eksakt https://bestillelektriker.no. Andre Origin/null avvises. Ingen generell nettleser-CORS. Bruk klientens server/proxytransport.",
  "privacy": "Ingen logging av argumenter/resultater/fullføringslenker. Utelat personopplysninger; fritekst kontrolleres ikke fullstendig for alle former for persondata. Utkast utløper etter 48 timer. Metadata/tellere deles med eksisterende agent_api-kilde; dette beviser ikke MCP-unik trafikk.",
  "examples": {
    "search_companies": {
      "query": "Oslo",
      "municipality_code": "0301"
    },
    "get_company": {
      "organization_number": "995003163"
    },
    "general": {
      "recipient": {
        "mode": "general"
      },
      "postal_code": "0340",
      "description": "Montere elbillader i garasje."
    },
    "specific_company": {
      "recipient": {
        "mode": "specific_company",
        "organization_number": "995003163"
      },
      "postal_code": "0340",
      "description": "Montere elbillader i garasje."
    }
  }
}
