Connect your own AI agent as an AI Apprentice

GarageManager does not supply the AI. You connect your own AI agent as an apprentice, with a token you create: any AI agent that can connect to an MCP server over HTTP with a bearer token, or call a REST API, such as Claude Code. It looks things up and preps drafts. A person in your workshop signs off every draft it preps, and only a person issues or sends anything to a customer.

Connect in four steps

  1. In Settings, open AI Apprentice and choose Take on an AI Apprentice. Whoever can change your workshop's settings can do this; on a paid plan or a trial, that is an owner.
  2. Name it, choose Read only or Read and draft, and choose when its access ends: 30 days, 90 days or never.
  3. Copy the token. It is shown once. Then connect your agent with one of the forms below.
  4. When it preps a quote or an invoice, choose Awaiting sign-off on the Quotes or Invoices list and open the draft with Review. Check the lines and the total, then sign it off. Signing off sends nothing; issuing and sending stay with you.

Claude Code (macOS or Linux)

Set GM_AGENT_TOKEN to your token first, then run:

claude mcp add --transport http garagemanager https://app.garagemanager.co.za/api/agent/mcp \
  --header "Authorization: Bearer $GM_AGENT_TOKEN"

Running this saves the token in Claude Code's own settings, in plain text. To keep it only in your environment, use the .mcp.json form instead.

A project's .mcp.json

Put this in a project's .mcp.json, and set GM_AGENT_TOKEN to the token in the environment your agent runs in.

{
  "mcpServers": {
    "garagemanager": {
      "type": "http",
      "url": "https://app.garagemanager.co.za/api/agent/mcp",
      "headers": {
        "Authorization": "Bearer ${GM_AGENT_TOKEN}"
      }
    }
  }
}

Other agents

MCP over HTTP: https://app.garagemanager.co.za/api/agent/mcp, with the header Authorization: Bearer and your token. REST: POST https://app.garagemanager.co.za/api/agent/v1/<action name> with the same header and the input as JSON. The OpenAPI description lists every action and its input.

If your agent says the GarageManager server needs authentication, the token was mistyped, has expired or was revoked. Revoke it in Settings, AI Apprentice, and take on a new AI Apprentice.

What it can do

Each action, as your agent sees it. Read only covers looking things up; Read and draft adds the rest.

  • workshop.get

    MCP tool: workshop_get

    Read only and Read and draft

    Describe the workshop this token belongs to: name, VAT status, currency, plan, and how much of any plan limit is used.

    Full description

    Describe the workshop this token belongs to: name, VAT status, currency, plan, and how much of any plan limit is used. Call this first.

  • clients.list

    MCP tool: clients_list

    Read only and Read and draft

    List the workshop's customers, newest first.

    Full description

    List the workshop's customers, newest first. Optional search matches name, email, phone or customer number.

  • clients.get

    MCP tool: clients_get

    Read only and Read and draft

    Get one customer by id.

  • clients.create

    MCP tool: clients_create

    Read and draft

    Add a customer.

    Full description

    Add a customer. name and email are required; the email must not belong to another customer of this workshop (a duplicate answers conflict, with the existing customer id in issues). The Free plan holds up to 5 customers. Nothing is sent to the customer. Send an idempotencyKey to make a retry safe.

  • clients.update

    MCP tool: clients_update

    Read and draft

    Change a customer's details.

    Full description

    Change a customer's details. Only the fields you send change; send null to clear phone, whatsappNumber, address or businessRegNumber. The email and the customer number cannot be changed here: email changes are made by staff in the dashboard. Nothing is sent to the customer.

  • vehicles.list

    MCP tool: vehicles_list

    Read only and Read and draft

    List vehicles, newest first.

    Full description

    List vehicles, newest first. Filter by customer id or by registration plate (partial match).

  • vehicles.get

    MCP tool: vehicles_get

    Read only and Read and draft

    Get one vehicle by id.

  • vehicles.create

    MCP tool: vehicles_create

    Read and draft

    Add a vehicle to one of the workshop's customers.

    Full description

    Add a vehicle to one of the workshop's customers. make, model and registrationPlate are required. A plate already on this account (ignoring letter case) answers conflict with the existing vehicle id in issues. Nothing is sent to the customer.

  • vehicles.update

    MCP tool: vehicles_update

    Read and draft

    Correct a vehicle.

    Full description

    Correct a vehicle. Only the fields you send change; send null to clear year, vin, engineNumber or odometerKm. A vehicle cannot be moved to another customer.

  • jobcards.list

    MCP tool: jobcards_list

    Read only and Read and draft

    List job cards, newest first.

    Full description

    List job cards, newest first. Filter by status or customer id.

  • jobcards.get

    MCP tool: jobcards_get

    Read only and Read and draft

    Get one job card by id, with its line items.

  • jobcards.create

    MCP tool: jobcards_create

    Read and draft

    Open a job card for a customer, BOOKED_IN, with an optional vehicle (it must be that customer's), notes and lines.

    Full description

    Open a job card for a customer, BOOKED_IN, with an optional vehicle (it must be that customer's), notes and lines. Each line needs a serviceName or a description, a quantity above 0, a unitPrice of 0 or more and an itemType (PART, LABOUR or OTHER). Nothing is sent to the customer.

  • jobcards.update

    MCP tool: jobcards_update

    Read and draft

    Change a job card's notes (send null to clear them).

    Full description

    Change a job card's notes (send null to clear them). Refused once the card is INVOICED or CANCELLED. The status cannot be changed.

  • jobcards.set_items

    MCP tool: jobcards_set_items

    Read and draft

    Replace a job card's lines with the list you send (an empty list removes them all).

    Full description

    Replace a job card's lines with the list you send (an empty list removes them all). Refused once the card is INVOICED or CANCELLED. Does not change the status. Replacing the lines detaches the service-library pins of every replaced line (each pin keeps a snapshot of its line).

  • quotes.list

    MCP tool: quotes_list

    Read only and Read and draft

    List quotes, newest first.

    Full description

    List quotes, newest first. Filter by status or customer id.

  • quotes.get

    MCP tool: quotes_get

    Read only and Read and draft

    Get one quote by id, with its line items.

  • quotes.create_draft

    MCP tool: quotes_create_draft

    Read and draft

    Prepare a draft quote for one of the workshop's customers and one of that customer's vehicles.

    Full description

    Prepare a draft quote for one of the workshop's customers and one of that customer's vehicles. The workshop's own totals and VAT rule are applied. The quote waits for a person to sign it off before it can be sent; read awaitingSignOff with quotes.get for its current state (a repeat with the same idempotency key returns the first response, not the current one). Each line needs serviceName, a quantity above 0 and a unitPrice of 0 or more (rands, at most two decimals); itemType (PART, LABOUR, OTHER, CALLOUT), description, catalogItemId and parentServiceCatalogItemId are optional.

  • quotes.update_draft

    MCP tool: quotes_update_draft

    Read and draft

    Change a draft quote your AI Apprentice prepared, while it is still a DRAFT.

    Full description

    Change a draft quote your AI Apprentice prepared, while it is still a DRAFT. Sending lines replaces them all. Any change clears an earlier sign-off, so a person must sign it off again. Each line needs serviceName, a quantity above 0 and a unitPrice of 0 or more (rands, at most two decimals); itemType (PART, LABOUR, OTHER, CALLOUT), description, catalogItemId and parentServiceCatalogItemId are optional.

  • invoices.list

    MCP tool: invoices_list

    Read only and Read and draft

    List invoices, newest first.

    Full description

    List invoices, newest first. Filter by status or customer id. outstanding: true returns invoices still awaiting payment, using the same rule as the dashboard. Archived invoices are left out unless includeArchived is true.

  • invoices.get

    MCP tool: invoices_get

    Read only and Read and draft

    Get one invoice by id, with its line items.

  • invoices.create_draft

    MCP tool: invoices_create_draft

    Read and draft

    Prepare a draft invoice for one of the workshop's customers and one of that customer's vehicles, with its lines.

    Full description

    Prepare a draft invoice for one of the workshop's customers and one of that customer's vehicles, with its lines. The Free plan allows 5 invoices a month. The invoice waits for a person to sign it off before it can be issued, sent or paid; read awaitingSignOff with invoices.get for its current state (a repeat with the same idempotency key returns the first response, not the current one). Each line needs serviceName, a quantity above 0 and a unitPrice of 0 or more (rands, at most two decimals); itemType (PART, LABOUR, OTHER, CALLOUT), description, catalogItemId and parentServiceCatalogItemId are optional. Totals and VAT are computed by the workshop, never taken from you.

  • invoices.update_draft

    MCP tool: invoices_update_draft

    Read and draft

    Change a draft invoice your AI Apprentice prepared, while it is still a DRAFT.

    Full description

    Change a draft invoice your AI Apprentice prepared, while it is still a DRAFT. Sending lines replaces them all; an odometer you do not send is left as it is. Any change clears an earlier sign-off. Each line needs serviceName, a quantity above 0 and a unitPrice of 0 or more (rands, at most two decimals); itemType (PART, LABOUR, OTHER, CALLOUT), description, catalogItemId and parentServiceCatalogItemId are optional. Totals and VAT are computed by the workshop, never taken from you.

  • catalog.list

    MCP tool: catalog_list

    Read only and Read and draft

    List the workshop's catalogue of services and parts with default prices.

    Full description

    List the workshop's catalogue of services and parts with default prices. Archived items are left out.

  • reports.summary

    MCP tool: reports_summary

    Read only and Read and draft

    The workshop's headline figures, computed by the same function as the dashboard: money awaiting payment, money overdue, average invoice value and invoice count.

  • actions.list

    MCP tool: actions_list

    Read only and Read and draft

    List every action this API offers, with the permission each one needs.

What it cannot do

  • Issue, send or resend anything to a customer.
  • Record, change or refund a payment.
  • Sign off a draft, its own included. A person in your workshop does that.
  • Cancel or delete a customer, vehicle, job card, quote, invoice or catalogue item. Replacing lines does remove the old lines: jobcards.set_items, quotes.update_draft and invoices.update_draft each replace every line of the job card or draft they change.
  • Change a job card's status.
  • Edit a quote or invoice that is no longer a draft, or a draft a person created.
  • Change a customer's email address. Your staff change it in GarageManager.
  • Change settings, team, branding or billing.

Limits and records

  • Up to 10 active AI Apprentices per workshop.
  • Up to 1 000 requests an hour for each one.
  • Settings, AI Apprentice keeps a record of each action an AI Apprentice runs or tries while it has access, refused ones included.
  • Anything that would go past your plan's limits, such as its number of customers or of invoices a month, is refused, and the record shows “Refused: plan limit reached”.
  • When a trial ends without a plan, it can still look things up, but it cannot add, change or prep anything until a plan is chosen. The record shows “Refused: trial ended”.
  • Revoking it, or its access running out, stops it at its next request.

Back to the Help Center