MCP-server

Gi KI-agenten din
nøklene til domenene

Et domene-API lar som regel en agent lese og styre. Vårt lar den også kjøpe. Koble Claude, ChatGPT eller en hvilken som helst MCP-klient til .no-domenene dine, og la den gjøre jobben innenfor rettigheter og beløpsgrenser du setter selv.

Endepunkt: https://api.feno.no/mcp

Koble til

Serveren snakker Streamable HTTP og godtar bare POST. Innlogging er den samme API-nøkkelen som resten av API-et, sendt som en vanlig Authorization-header. I Claude Code er det én kommando:

claude mcp add --transport http feno https://api.feno.no/mcp \
  --header "Authorization: Bearer feno_live_..."

I en klient som tar en egendefinert kobling, oppgir du URL-en over og legger headeren i feltet for egne headere.

Én ting avgjør om klienten din virker

Vi bruker en Bearer-header, ikke OAuth. En klient som lar deg sette en egen HTTP-header kan koble til. En klient som bare snakker OAuth mot eksterne servere, kan det ikke, og trenger en lokal bro som holder headeren. Klientene endrer dette mellom versjoner, så sjekk dokumentasjonen til din egen.

Serveren er kjørt gjennom fra ende til ende mot Norids testregister, med en skriptet MCP-klient som slo opp, priset og registrerte ekte testdomener. Men vi lister ingen navngitte klienter som verifisert, for vi har ikke pekt Claude Desktop, claude.ai eller ChatGPT mot den selv. Får du en til å virke, si fra, så skriver vi det opp.

Fjorten verktøy

Hvert verktøy har sin egen rettighet, og feno_whoami forteller hvilke av dem nøkkelen din faktisk får kalle. Alle verktøy vises til alle nøkler, slik at en agent som mangler en rettighet kan si hvilken, i stedet for å konkludere med at FENO ikke har funksjonen.

Konto og kontakter

ingen rettighet / contacts:read

feno_whoami
Hvilken konto nøkkelen hører til, hvilke rettigheter den har, og hvilke verktøy den faktisk får lov til å kalle.
feno_list_contacts
Kontaktene du eier eller er medlem av, hver med om den er klar til å registrere et domene og hva som eventuelt mangler.

Domener

domains:read / domains:write

feno_list_domains
Domenene på kontoen, med utløp, automatisk fornyelse, navnetjenere og DNSSEC.
feno_get_domain
Ett domene i sin helhet, inkludert DS-oppføringene som ligger hos Norid.
feno_check_domain
Spør Norid om et .no-navn er ledig, og hva FENO tar for det. Registrerer ingenting.
feno_update_domain
Automatisk fornyelse, navnetjenere og DNSSEC. Merket som destruktivt, fordi et feil navnetjenersett tar domenet av nett.

DNS

dns:read / dns:write, eller acme:write

feno_list_dns_records
Oppføringene i en sone på FENO sine navnetjenere, med filter på type og navn.
feno_set_dns_record
Opprett eller erstatt én oppføring, adressert med type og navn. Finnes det flere, blir kallet avvist som tvetydig i stedet for å gjette.
feno_delete_dns_record
Slett én oppføring. Del opp med verdien når flere deler type og navn.

Kjøp og overføring

billing:read for å prise, domains:purchase for å kjøpe

feno_quote_purchase
Priser en registrering med rabattene dine og fryser prisen. Reserverer ingenting og belaster ingenting. Holder med billing:read.
feno_execute_purchase
Løser inn et prisestimat: registrerer domenene og belaster kontoen. Krever domains:purchase.
feno_quote_transfer
Priser en innflytting av ett .no-domene. Gratis, med mindre domenet utløper innen 30 dager. Holder med billing:read.
feno_execute_transfer
Flytter domenet inn til FENO. Krever domains:purchase.
feno_get_purchase
Ett kjøp eller én overføring: status, hva som ble registrert, hva det kostet, og hele hendelsesforløpet. Holder med billing:read.

Kjøp av domener, med mennesket i behold

Så vidt vi vet er dette det eneste stedet en KI-agent kan kjøpe et .no-domene. Det er også den delen som har fått strengest behandling, for et kjøp er den ene handlingen her som ikke kan gjøres om.

Agenten henter først et prisestimat, som fryser prisen uten å reservere eller belaste noe, og løser det så inn. Hvert kjøp krever en idempotensnøkkel, slik at en agent som leser et tidsavbrudd som en feil og prøver igjen, ikke kjøper domenet to ganger. Og den kan bare kjøpe med en nøkkel du selv har opprettet for formålet.

Det krever en egen nøkkel

Rettigheten domains:purchase er den eneste som kan bruke penger, og ingen annen rettighet gir den. En slik nøkkel krever lagret kort, fire beløpsgrenser, en utløpsdato på maks ett år, to-faktor ved opprettelse, og at du godtar vilkårene for API-kjøp. Det er ikke småskrift, det er kontrollen din.

Over terskelen stopper det for et menneske

Du setter et beløp der kjøpet stanser og må godkjennes. Da får agenten svaret awaiting_confirmation og en lenke: ingenting er kjøpt, og ingen penger har flyttet på seg. Beløpsgrensene og terskelen håndheves på serveren vår, ikke i klienten. Godkjenningsdialogen MCP-klienten din viser er klientens egen, og noen kan settes til å godkjenne automatisk. Stol på grensene, ikke på dialogen.

En .no-registrering kan ikke angres

Norid tildeler domenet i det registeret godtar registreringen, og reverserer det ikke. Det gjelder også når en agent bestilte det. Derfor må du sette beløpsgrensene selv, og derfor krever hvert kjøp en idempotensnøkkel: en agent som leser et tidsavbrudd som en feil og prøver igjen, skal ikke kunne kjøpe domenet to ganger.

3-D Secure kan slå til uansett

Om banken krever at kortholder godkjenner betalingen, avgjøres av kortutstederen. Et lagret kort fjerner ikke muligheten. Da stopper kjøpet, ingenting blir registrert, og et menneske må åpne lenken og godkjenne. En oppsett som må kjøre helt uten folk til stede, vil før eller siden treffe dette.

Hva den ikke kan gjøre

Dette er ikke innstillinger du kan skru på. Verktøyene finnes ikke, uansett hvilke rettigheter nøkkelen har, og serveren nekter å starte hvis noen legger til et verktøy som heter noe av dette.

  • Åpne overføringslåsen. Svaret inneholder flyttekoden, altså alt en annen registrar trenger for å ta domenet ditt.
  • Slette et domene.
  • Gjøre eierskifte.
  • Handle på markedsplassen.
  • Opprette eller endre en kontakt.
  • Lage, rotere eller trekke tilbake en API-nøkkel. En agent kan ikke utvide sin egen rekkevidde.
  • Bestille sniping av et domene som skal slippes.
  • Heve en beløpsgrense. Det krever to-faktor i en nettleser, som en agent ikke har.

Begynn smalt, utvid med vilje

En API-nøkkel er en bærer-legitimasjon, og en agent du kobler den til holder den. Alt nøkkelen kan, kan agenten. Derfor er rådet det samme som vi følger selv: start med en nøkkel som bare kan lese, se hva agenten faktisk gjør, og legg til én rettighet av gangen.

En sertifikatagent trenger bare acme:write. DNS-verktøyene godtar den smale rettigheten, som bare kan skrive TXT-oppføringer på _acme-challenge. En slik nøkkel kan fornye sertifikater og ingenting annet, og leser den sonen, ser den bare de samme oppføringene.

Hvert verktøykall blir loggført. Det er en helt vanlig API-forespørsel og havner i samme bruksslogg som resten, med tidspunkt, verktøynavn, status, IP og forespørsels-ID. Loggen er der i sju dager, også etter at nøkkelen er trukket tilbake. Det er fasiten på hva agenten gjorde, i motsetning til hva den sa den gjorde.

Én nøkkel per agent, med navn. Delte nøkler kan ikke trekkes tilbake hver for seg, og loggen kan ikke fortelle deg hvem som gjorde hva. Mistenker du at en nøkkel er på avveie, kan du sette beløpsgrensene til null uten to-faktor, og bestemme deg etterpå.

Koble til på et minutt

Lag en nøkkel som bare kan lese, koble til klienten din, og be den om å liste domenene dine. Det er hele oppsettet.