HapMap Docs

Talk to HapMap.

HapMap speaks Model Context Protocol. Point Claude — or any MCP client — at it, and an AI can find happenings near you, search real places, and host something new. With your key. As you. Never as if it were there.

Endpoints

EnvironmentEndpointUse it for
Production https://mcp.hapmap.no/mcp The stable name. Put this in your config and forget it.
Development https://staging-mcp.hapmap.no/mcp Tracks the staging environment — for testing integrations against what ships next.

Both speak MCP over Streamable HTTP: POST with your token as a bearer. There are no sessions to manage — every request stands alone. GET /health answers without auth if you just want a pulse.

While HapMap is launching, both names serve the same environment — the one the app uses. When a separate production environment arrives, mcp.hapmap.no moves with it and your saved config keeps working.

Get a token

An AI talks to HapMap with a personal access token — a key you mint, scope, and revoke.

  1. In the app, open Settings → API access.
  2. Name the token for what will hold it — “Claude” beats “token 2” when you're deciding what to revoke.
  3. Pick scopes: read sees what you could see, write does what you could do. An optional expiry ends it on a date; otherwise it lives until you revoke it.
  4. Copy the token — it starts with hmp_ and is shown once. HapMap keeps only a hash.

Revoking is instant, from the same screen. If a token leaks, revoke it and mint another — a leaked token can't mint more tokens, change your email or password, or touch your account settings.

Connect

Claude Code

claude mcp add --transport http hapmap https://mcp.hapmap.no/mcp \
  --header "Authorization: Bearer hmp_your_token_here"

Claude apps (claude.ai)

Add a custom connector: Settings → Connectors → Add custom connector, URL https://mcp.hapmap.no/mcp. Where the connector form offers a custom header, use Authorization: Bearer hmp_….

Any other MCP client

{
  "mcpServers": {
    "hapmap": {
      "type": "http",
      "url": "https://mcp.hapmap.no/mcp",
      "headers": { "Authorization": "Bearer hmp_your_token_here" }
    }
  }
}

Then ask something worth asking:

# “What's happening near Øvre Holmegate tonight?”
# “Create a quiz-night happening at Cementen on Thursday at 19:00.”
# “Post to my happening's board that doors open at seven.”

What an AI can do

ToolScopeWhat it does
whoamireadThe account the token acts as
search_placesreadFind venues and addresses by name — no coordinates needed
get_placereadResolve a place to its name, address, and location
search_happeningsreadPublic happenings near a point, with optional text and category filters
get_happeningreadOne happening's details
my_happeningsreadWhat you host, are going to, and are invited to
create_happeningwriteHost a happening at a searched place or exact spot
read_boardreadA happening's message board
post_board_messagewritePost to a board, as you

Every call is checked by HapMap itself — visibility, friendships, blocks, audiences. An AI holding your token sees exactly what you'd see, never more.

What an AI can never do

No token — any scope — can check in, view a moment, or upload media. Checking in says you were somewhere; viewing a moment spends its timer; a moment is proof of presence. An AI can plan your evening. It cannot have been there.

When it says no

AnswerWhat it means
401No token, a mistyped token, a revoked token, or one past its expiry. Mint a fresh one.
403 mentioning write scopeThe token is read-only. Mint one with write if you want the AI creating and posting.
403 mentioning the app in your handThe tool asked for something only a person in a place can do. That's by design, not a bug.
404 on things you know existThe token's owner can't see them — private happenings and audiences you're not in stay invisible.