Husker du da AI bare svarte på spørsmål? De dagene er forbi. Moderne AI-modeller kan nå handle på dine vegne – og nøkkelkonseptet bak det heter tools.

Denne artikkelen forklarer hva tools er, hvordan de fungerer under panseret, og – viktig – hvordan de skiller seg fra MCP som vi dekket i forrige sak.

Start her · Analogien

Tenk på det som å ansette en assistent

🧑‍💼

Assistenten med liste over hva hen kan gjøre

Se for deg at du ansetter en ny assistent på kontoret. Første dag gir du dem en liste: «Du kan ringe leverandører, bestille møterom, slå opp priser i systemet, og sende e-post. Spørsmål om økonomi håndterer du ikke – det er regnskapsavdelingens ansvar.»

Denne listen er tools. Det er en presis oversikt over hva AI-assistenten har lov til å gjøre, hva den kan bruke, og hva den ikke skal røre.

Uten listen kan assistenten bare prate med deg. Med listen kan de faktisk utrette noe.

I praksis: tools er funksjoner som AI-modellen kan velge å kalle på under en samtale. Modellen bestemmer selv om og når et tool er relevant – og kaller det med de parameterne den tror er riktige.

Grunnleggende konsept

Hva er egentlig et tool?

Et tool er teknisk sett bare en funksjon med tre ting:

🏷️
Navn

Et unikt navn som AI-en bruker for å identifisere og kalle verktøyet. F.eks. søk_i_kalender eller hent_vær.

📄
Beskrivelse

En forklaring på hva verktøyet gjør, skrevet i klartekst. Dette er hva AI-en leser for å avgjøre om den skal bruke det.

🔧
Parametre

Hvilke verdier funksjonen trenger for å kjøre – og hvilke som er påkrevde vs. valgfrie.

Når du sender en melding til en AI-modell som har tools tilgjengelig, går modellen gjennom en intern vurdering: «Kan jeg svare på dette direkte, eller trenger jeg å bruke et verktøy?» Hvis den bestemmer seg for å bruke et tool, returnerer den ikke tekst – den returnerer et «kall» med argumenter. Det er opp til applikasjonen å faktisk kjøre funksjonen og gi svaret tilbake til modellen.

Slik ser flyten ut

🧑
Bruker
«Hva er været i Bergen i dag?»
🤖
AI-modell
Velger å kalle hent_vær("Bergen")
⚙️
Tool kjøres
Applikasjonen henter data fra vær-API
🤖
AI-modell
Formulerer svar basert på data
💬
Svar
«I dag er det 8°C og delvis skyet i Bergen.»

Legg merke til at AI-modellen selv ikke henter værmeldingen. Den sier bare «jeg vil bruke dette verktøyet med disse argumentene» – og overlater den faktiske kjøringen til koden rundt seg.

Konkrete eksempler

Tools du møter i praksis

🔍

Nettsøk TOOL

Claude søker på nettet når du spør om noe den ikke vet. Den kaller web_search med søkeordet ditt, leser resultatene, og svarer basert på ferskt innhold – ikke bare treningsdata.

🧮

Kodekjøring TOOL

«Regn ut hvor mange dager til 17. mai.» I stedet for å gjette, kjører AI-en Python-kode i et sandkasse-miljø og returnerer det faktiske svaret.

📊

Fil- og databehandling TOOL

Last opp en CSV og spør «hva er gjennomsnittsverdien i kolonne B?». AI-en leser filen via et tool og gjør beregningen – ingen copy-paste fra deg.

🗓️

Kalenderoppslag TOOL

«Finn en ledig time neste uke for et 30-minutters møte.» AI-en slår opp kalenderen via et tool og foreslår konkrete tidspunkter.

🌐

Hente en nettside TOOL

«Les og oppsummer denne artikkelen: [URL].» AI-en henter innholdet fra siden og presenterer det for deg – i stedet for å be deg lime det inn.

Viktig distinksjon

Tools og MCP – hva er forskjellen?

Her er en av tingene som oftest forvirrer: tools og MCP høres ut som det samme, men de opererer på forskjellige lag. La oss rydde opp.

Kjerneforskjellen

Tools er mekanismen – den tekniske måten AI-en kan kalle en funksjon på. MCP er en transportstandard – en felles protokoll for å levere tools til AI-en fra eksterne systemer. MCP er altså bygget på toppen av tools, ikke ved siden av dem.

Egenskap Tools MCP
Hva er det? En funksjon AI-en kan kalle En protokoll for å levere tools til AI
Hvem definerer? Utvikleren av appen Anthropic (åpen standard)
Hvor bor det? I applikasjonskoden I en separat MCP-server
Typisk bruk Nettsøk, kodekjøring, egne API-kall Koble til Slack, Notion, GitHub osv.
Krever oppsett? Nei – kan sendes direkte i API-kallet Ja – egen server må kjøre og konfigureres
Gjenbrukbar? Kun i denne appen Ja – samme server kan brukes av alle klienter
🚌

Busslinje vs. buss-standard

Et tool er som én bussrute – definert av den som trenger den, for akkurat det formålet. MCP er som en nasjonal bussstandard som gjør at alle bussene fra alle selskaper kan bruke samme holdeplass, samme billettsystem og samme skilt.

MCP-tools er altså tools som er pakket inn i MCP-standarden – slik at de kan deles og gjenbrukes på tvers av alle AI-assistenter som støtter protokollen.

Konkret eksempel på samspillet

Forestill deg at du ber Claude: «Finn e-posten fra Kari og lag en oppgave i Notion basert på den.» Her skjer følgende:

1️⃣

Gmail MCP-server MCP

Claude kaller hent_epost-tool som er eksponert via Gmail MCP-serveren. Den henter e-posten fra Kari.

2️⃣

Notion MCP-server MCP

Claude kaller opprett_side-tool fra Notion MCP-serveren. Den lager en ny oppgave med innholdet fra e-posten.

3️⃣

Begge er tools, men levert via MCP TOOL

Fra Claude sin side er det bare to tool-kall. At de er implementert som MCP-servere er et infrastrukturdetail – ikke noe Claude «ser».

Under panseret

Slik definerer du et tool i kode

La oss se på hvordan du faktisk sender tools til Claude via API. Her er et komplett eksempel som gir Claude tilgang til å sjekke løpsøkter:

tool_eksempel.py · Python + Anthropic SDK
import anthropic
import json

client = anthropic.Anthropic()

# Definér tools som en liste av dicts
tools = [
    {
        "name": "hent_treningsokt",
        "description": """Henter treningsøkter fra loggen.
        Bruk dette når brukeren spør om trening, løpeøkter,
        kondisjon eller treningshistorikk.""",
        "input_schema": {
            "type": "object",
            "properties": {
                "antall": {
                    "type": "integer",
                    "description": "Antall øktene å hente, standard 5"
                },
                "type": {
                    "type": "string",
                    "enum": ["løp", "sykling", "alle"],
                    "description": "Type økt å filtrere på"
                }
            },
            "required": []
        }
    }
]

# Simulert database-funksjon
def hent_treningsokt(antall=5, type="alle"):
    data = [
        {"dato": "2025-03-10", "type": "løp", "km": 12.4},
        {"dato": "2025-03-08", "type": "sykling", "km": 32.0},
    ]
    if type != "alle":
        data = [o for o in data if o["type"] == type]
    return json.dumps(data[:antall], ensure_ascii=False)

# Første kall til Claude
response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=1024,
    tools=tools,
    messages=[{
        "role": "user",
        "content": "Hva var de tre siste løpeturene mine?"
    }]
)

# Claude returnerer et tool-kall, ikke tekst
if response.stop_reason == "tool_use":
    tool_call = response.content[1]  # tool_use-blokken
    args = tool_call.input
    
    # Vi kjører funksjonen selv
    resultat = hent_treningsokt(**args)
    
    # Send resultatet tilbake til Claude
    final = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=1024,
        tools=tools,
        messages=[
            {"role": "user", "content": "Hva var de tre siste løpeturene mine?"},
            {"role": "assistant", "content": response.content},
            {
                "role": "user",
                "content": [{
                    "type": "tool_result",
                    "tool_use_id": tool_call.id,
                    "content": resultat
                }]
            }
        ]
    )
    print(final.content[0].text)

Det viktige å se her: Claude returnerer ikke svaret direkte. Den sier «bruk dette tool med disse argumentene», vi kjører funksjonen, og sender resultatet tilbake. Først da formulerer Claude et svar til brukeren.

Beste praksis

Slik skriver du gode tools

Sammendrag

Tools + MCP = AI som faktisk jobber

For å oppsummere det hele i én setning: tools er motoren, MCP er veien ut til verden.

Tools gir AI-en evnen til å handle. MCP gir den en standardisert måte å koble seg til alle systemene vi allerede bruker. Brukt sammen er dette det som gjør AI til en faktisk kollega – ikke bare en veldig rask søkemotor.

Neste gang du ser at Claude søker på nettet, kjører et regnestykke, eller oppretter en kalenderinvitasjon – nå vet du hva som skjer bak kulissene.

Magnus Valmot er dataingeniør og AI-rådgiver i Dataviter. Han hjelper virksomheter med å gå fra data til verdi – ett integrasjonspunkt om gangen.