← Back to Developer Portal

API Documentation

Everything you need to integrate with the Tampa.dev platform.

MCP Tools

The Tampa.dev MCP server exposes tools organized by domain. Each tool maps to one or more REST API operations and is gated by OAuth scopes. Use tools/list to discover available tools at runtime, or refer to this page for the complete reference.

Scope-Filtered Discovery

When you call tools/list, the server returns only the tools your token's scopes authorize. For example, a token with read:events and read:groups will see event and group browsing tools but not management or admin tools.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

The response includes tool names, descriptions, and JSON Schema for each tool's input parameters.


Events

Scopes: read:events (read), write:events (write)

ToolRequired ScopeDescription
events_listread:eventsList events with optional filters (status, group, date range)
events_getread:eventsGet full details for a single event by ID
events_rsvp_statusread:eventsCheck the authenticated user's RSVP status for an event
events_rsvp_summaryread:eventsGet RSVP counts and summary for an event
events_rsvpwrite:eventsRSVP to an event
events_cancel_rsvpwrite:eventsCancel an existing RSVP
events_checkinwrite:eventsCheck in to an event using a check-in code

Example: List upcoming events

Request:

{
  "jsonrpc": "2.0",
  "id": 10,
  "method": "tools/call",
  "params": {
    "name": "events_list",
    "arguments": {
      "status": "upcoming",
      "limit": 5
    }
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 10,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\":[{\"id\":\"evt_abc123\",\"title\":\"React Meetup\",\"startTime\":\"2026-02-15T18:00:00Z\",\"groupName\":\"Tampa React\"},{\"id\":\"evt_def456\",\"title\":\"Rust Workshop\",\"startTime\":\"2026-02-20T14:00:00Z\",\"groupName\":\"Tampa Rust\"}],\"pagination\":{\"total\":12,\"limit\":5,\"offset\":0,\"hasMore\":true}}"
      }
    ]
  }
}

Example: RSVP to an event

Request:

{
  "jsonrpc": "2.0",
  "id": 11,
  "method": "tools/call",
  "params": {
    "name": "events_rsvp",
    "arguments": {
      "eventId": "evt_abc123"
    }
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 11,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\":{\"success\":true}}"
      }
    ]
  }
}

Groups

Scopes: read:groups (read), none for public data

ToolRequired ScopeDescription
groups_listread:groupsList groups with optional filters (featured, search)
groups_getread:groupsGet full details for a group by slug
groups_leaderboardNone (public)Get the leaderboard for a specific group

Example: Get group details

Request:

{
  "jsonrpc": "2.0",
  "id": 20,
  "method": "tools/call",
  "params": {
    "name": "groups_get",
    "arguments": {
      "slug": "tampadevs"
    }
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 20,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\":{\"id\":\"grp_tampadevs\",\"name\":\"Tampa Devs\",\"slug\":\"tampadevs\",\"description\":\"Tampa Bay's developer community\",\"memberCount\":1200,\"eventCount\":45}}"
      }
    ]
  }
}

Favorites

Scopes: read:favorites (read), write:favorites (write)

ToolRequired ScopeDescription
favorites_listread:favoritesList the authenticated user's favorite groups
favorites_addwrite:favoritesAdd a group to favorites by slug
favorites_removewrite:favoritesRemove a group from favorites by slug

Profile and Users

Scopes: read:user (read), user (read/write)

ToolRequired ScopeDescription
profile_getread:userGet the authenticated user's profile
profile_updateuserUpdate profile fields (bio, location, links)
profile_emailuser:emailGet the authenticated user's email address
profile_achievementsread:userList the user's achievement progress
profile_linked_accountsuser:linked-accountsList connected identity providers
profile_entitlementsread:userList the user's platform entitlements
users_followersread:userList a user's followers
users_followingread:userList users that a user follows
users_followuserFollow a user by username
users_unfollowuserUnfollow a user by username
users_check_followingread:userCheck if the authenticated user follows a given user

Example: Get your profile

Request:

{
  "jsonrpc": "2.0",
  "id": 30,
  "method": "tools/call",
  "params": {
    "name": "profile_get",
    "arguments": {}
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 30,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\":{\"id\":\"usr_abc123\",\"name\":\"Jane Developer\",\"username\":\"janedev\",\"bio\":\"Building cool stuff in Tampa\",\"location\":\"Tampa, FL\",\"xp\":450,\"level\":5}}"
      }
    ]
  }
}

Portfolio

Scopes: read:portfolio (read), write:portfolio (write)

ToolRequired ScopeDescription
portfolio_listread:portfolioList the authenticated user's portfolio items
portfolio_createwrite:portfolioCreate a new portfolio item
portfolio_updatewrite:portfolioUpdate an existing portfolio item
portfolio_deletewrite:portfolioDelete a portfolio item

Badges and Claims

Scopes: None for public badge data, read:user for user claims

ToolRequired ScopeDescription
badges_listNone (public)List all available badges with optional filters
badges_getNone (public)Get details for a specific badge
badges_claim_infoNone (public)Get claim link information (remaining uses, expiry)
badges_claimread:userClaim a badge using a claim code
users_group_badgesNone (public)List badges earned by a user in a specific group

Example: Claim a badge

Request:

{
  "jsonrpc": "2.0",
  "id": 40,
  "method": "tools/call",
  "params": {
    "name": "badges_claim",
    "arguments": {
      "code": "BADGE-CODE-123"
    }
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 40,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\":{\"success\":true,\"badge\":{\"id\":\"bdg_abc123\",\"name\":\"Early Adopter\",\"description\":\"One of the first to join\",\"icon\":\"\\ud83c\\udf1f\",\"iconUrl\":\"https://td-uploads-public.tampa.dev/emoji/1f31f.webp\"}}}"
      }
    ]
  }
}

Leaderboard

Scope: None (public)

ToolRequired ScopeDescription
leaderboard_globalNone (public)Get the global XP leaderboard
leaderboard_groupNone (public)Get the leaderboard for a specific group

Onboarding

Scope: user

ToolRequired ScopeDescription
onboarding_statususerGet the user's onboarding progress
onboarding_dismiss_stepuserMark a specific onboarding step as dismissed
onboarding_dismiss_alluserDismiss all remaining onboarding steps

Token Management

Scope: user

ToolRequired ScopeDescription
tokens_listuserList the authenticated user's Personal Access Tokens
tokens_createuserCreate a new Personal Access Token
tokens_revokeuserRevoke (delete) a Personal Access Token by ID

Group Management

Scopes: manage:groups + appropriate group role (owner, manager, or volunteer)

ToolRequired ScopeDescription
manage_list_groupsmanage:groupsList groups the user can manage
manage_get_groupmanage:groupsGet management details for a group
manage_update_groupmanage:groupsUpdate group settings (name, description, visibility)
manage_list_membersmanage:groupsList members of a managed group
manage_add_membermanage:groupsAdd a user to a managed group
manage_update_member_rolemanage:groupsChange a member's role in the group
manage_remove_membermanage:groupsRemove a member from the group
manage_leave_groupmanage:groupsLeave a group you are a member of

Example: List managed groups

Request:

{
  "jsonrpc": "2.0",
  "id": 50,
  "method": "tools/call",
  "params": {
    "name": "manage_list_groups",
    "arguments": {}
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 50,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\":[{\"id\":\"grp_react\",\"name\":\"Tampa React\",\"role\":\"owner\"},{\"id\":\"grp_rust\",\"name\":\"Tampa Rust\",\"role\":\"manager\"}]}"
      }
    ]
  }
}

Event Management

Scopes: manage:events + appropriate group role

ToolRequired ScopeDescription
manage_list_eventsmanage:eventsList events for a managed group
manage_get_eventmanage:eventsGet management details for an event
manage_create_eventmanage:eventsCreate a new event in a managed group
manage_update_eventmanage:eventsUpdate an existing event
manage_cancel_eventmanage:eventsCancel an event

Example: Create an event

Request:

{
  "jsonrpc": "2.0",
  "id": 60,
  "method": "tools/call",
  "params": {
    "name": "manage_create_event",
    "arguments": {
      "groupId": "grp_react",
      "title": "TypeScript Workshop",
      "description": "Hands-on TypeScript workshop for beginners",
      "startTime": "2026-03-01T14:00:00-05:00",
      "endTime": "2026-03-01T17:00:00-05:00",
      "timezone": "America/New_York",
      "eventType": "in_person",
      "maxAttendees": 25
    }
  }
}

Response:

{
  "jsonrpc": "2.0",
  "id": 60,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"data\":{\"id\":\"evt_new123\",\"title\":\"TypeScript Workshop\",\"startTime\":\"2026-03-01T19:00:00Z\",\"status\":\"upcoming\"}}"
      }
    ]
  }
}

Check-in Management

Scopes: manage:checkins + appropriate group role

ToolRequired ScopeDescription
manage_create_checkin_codemanage:checkinsGenerate a check-in code for an event
manage_list_checkin_codesmanage:checkinsList active check-in codes for an event
manage_delete_checkin_codemanage:checkinsDelete a check-in code
manage_list_attendeesmanage:checkinsList attendees who checked in to an event

Badge Management

Scopes: manage:badges + appropriate group role

ToolRequired ScopeDescription
manage_list_badgesmanage:badgesList badges for a managed group
manage_create_badgemanage:badgesCreate a new badge for the group
manage_update_badgemanage:badgesUpdate badge details (name, description, image)
manage_delete_badgemanage:badgesDelete a badge from the group
manage_award_badgemanage:badgesAward a badge to a user
manage_revoke_badgemanage:badgesRevoke a badge from a user
manage_create_claim_linkmanage:badgesCreate a claim link for a badge
manage_list_claim_linksmanage:badgesList claim links for a badge

Platform Admin

Scope: admin

All platform admin tools require the admin scope and an admin or superadmin user role. These tools are intended for platform operators, not regular users or group organizers.

User Administration

ToolRequired ScopeDescription
admin_list_usersadminList all platform users with search and filters
admin_get_useradminGet full details for a user by ID
admin_update_user_roleadminChange a user's platform role
admin_delete_useradminDelete a user account
admin_merge_usersadminMerge duplicate user accounts
admin_grant_entitlementadminGrant a platform entitlement to a user

Group Administration

ToolRequired ScopeDescription
admin_list_groupsadminList all groups on the platform
admin_get_groupadminGet full admin details for a group
admin_create_groupadminCreate a new group
admin_update_groupadminUpdate any group's settings
admin_delete_groupadminDelete a group

Group Member Administration

ToolRequired ScopeDescription
admin_list_group_membersadminList members of any group
admin_add_group_memberadminAdd a user to any group
admin_update_group_memberadminUpdate a member's role in any group
admin_remove_group_memberadminRemove a member from any group

Platform Connections

ToolRequired ScopeDescription
admin_list_connectionsadminList external platform connections (Meetup, Eventbrite, Luma)
admin_add_connectionadminAdd a new platform connection to a group
admin_remove_connectionadminRemove a platform connection

Sync Operations

ToolRequired ScopeDescription
admin_sync_statusadminGet the current sync status for all connections
admin_sync_alladminTrigger a full sync for all connected platforms
admin_sync_groupadminTrigger a sync for a specific group's connections
admin_sync_logsadminView recent sync operation logs

Badge Administration

ToolRequired ScopeDescription
admin_list_badgesadminList all badges across the platform
admin_create_badgeadminCreate a badge for any group
admin_update_badgeadminUpdate any badge
admin_delete_badgeadminDelete any badge
admin_award_badgeadminAward any badge to any user
admin_revoke_badgeadminRevoke any badge from any user
admin_list_claim_linksadminList claim links for any badge
admin_create_claim_linkadminCreate a claim link for any badge
admin_delete_claim_linkadminDelete any claim link

Achievement Administration

ToolRequired ScopeDescription
admin_list_achievementsadminList all achievement definitions
admin_create_achievementadminCreate a new achievement definition
admin_update_achievementadminUpdate an achievement definition
admin_delete_achievementadminDelete an achievement definition
admin_achievement_progressadminView achievement progress for a user

Webhook Administration

ToolRequired ScopeDescription
admin_list_webhooksadminList all registered webhook endpoints
admin_webhook_deliveriesadminView recent webhook delivery logs

Error Handling

When a tool call fails, the response includes an isError flag and an error message:

{
  "jsonrpc": "2.0",
  "id": 99,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"error\":\"This endpoint requires the 'read:events' scope\",\"code\":\"insufficient_scope\"}"
      }
    ],
    "isError": true
  }
}

Common error codes match the REST API error catalog:

CodeMeaning
unauthorizedMissing or invalid authentication
insufficient_scopeToken lacks the required scope
forbiddenAuthenticated but not authorized for this action
not_foundResource does not exist
validation_errorInvalid tool arguments
rate_limitedToo many requests