Skip to main content
Glama
darrenjrobinson

untappd-mcp-server

untappd-mcp-server

npm version npm downloads license

A Model Context Protocol (MCP) server that exposes the Untappd API as tools for AI agents — 27 tools covering the full Untappd v4 read API, plus built-in interactive OAuth authentication. Search venues, breweries, and beers; check what's on tap via check-in feeds; explore user badges, friends, wish lists, and drinking history; and aggregate stats — all from any MCP-compatible client.

Prerequisites

  • Node.js 20+

  • Untappd API credentials (client_id and client_secret) from untappd.com/api

  • Optional: an Untappd OAuth access token to unlock authenticated tools — obtainable in-chat via the authenticate_untappd tool or npx untappd-mcp-server auth (see Interactive Authentication)

Related MCP server: MCP API Server

Quick Start

Via npx (zero install)

UNTAPPD_CLIENT_ID=xxx UNTAPPD_CLIENT_SECRET=yyy npx untappd-mcp-server

PowerShell

$env:UNTAPPD_CLIENT_ID = "your_client_id"
$env:UNTAPPD_CLIENT_SECRET = "your_client_secret"
npx untappd-mcp-server

Claude Desktop

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "untappd": {
      "command": "npx",
      "args": ["untappd-mcp-server"],
      "env": {
        "UNTAPPD_CLIENT_ID": "your_client_id",
        "UNTAPPD_CLIENT_SECRET": "your_client_secret",
        "UNTAPPD_ACCESS_TOKEN": "optional_oauth_token",
        "UNTAPPD_USERNAME": "optional_default_username"
      }
    }
  }
}

Tools

Tools marked 🔑 token require an access token (UNTAPPD_ACCESS_TOKEN env var or interactive authentication).

Authentication Tools

authenticate_untappd

Interactively authenticate with Untappd via OAuth: opens your browser to Untappd's approve page, captures the redirect on a temporary localhost listener, and saves the access token — the 🔑 tools work immediately, no restart. Prerequisite: your Untappd app's Callback URL must be set to exactly http://localhost:8737/callback (or your UNTAPPD_REDIRECT_URL).

Parameter

Type

Required

Description

timeout_seconds

integer

No

How long to wait for browser approval (default 180, max 600)

get_auth_status

Report authentication status: token presence, source (env var or token file), file path, and whether the 🔑 tools are unlocked. Free by default; validate: true verifies the token with one API call.

Parameter

Type

Required

Description

validate

boolean

No

Verify the token against the API with one call (default false)

Search & Lookup

Search for venues (breweries, bars, restaurants) by name with optional location awareness.

Parameter

Type

Required

Description

q

string

Yes

Search query (venue name)

lat

number

No

Latitude for location-aware results

lng

number

No

Longitude for location-aware results

search_brewery

Search for breweries by name.

Parameter

Type

Required

Description

q

string

Yes

Brewery name search query

offset

integer

No

Offset for pagination

search_beer

Search for beers by name.

Parameter

Type

Required

Description

q

string

Yes

Beer name search query

offset

integer

No

Pagination offset

sort

string

No

Sort order: checkin (default), name, count

Venue

get_venue_info

Retrieve detailed information and recent check-ins for a venue.

Parameter

Type

Required

Description

venue_id

integer

Yes

Untappd venue ID

compact

boolean

No

If true, returns venue info only (no checkins, media, top beers)

get_venue_checkins

Retrieve the recent check-in feed for a venue. This is the primary tool for determining what's currently on tap — recent check-ins act as a live signal for available beers.

Parameter

Type

Required

Description

venue_id

integer

Yes

Untappd venue ID

limit

integer

No

Number of results (max 25, default 25)

max_id

integer

No

Return results older than this checkin ID

min_id

integer

No

Return only checkins newer than this ID

get_venue_foursquare_lookup

Resolve a Foursquare venue ID to its Untappd venue — the bridge between Foursquare/location data and Untappd venue tools.

Parameter

Type

Required

Description

foursquare_id

string

Yes

Foursquare venue ID in v2 MD5-hash format (v3 numeric IDs will not work)

Beer

get_beer_info

Retrieve detailed information for a specific beer.

Parameter

Type

Required

Description

bid

integer

Yes

Untappd beer ID

compact

boolean

No

If true, returns beer info only

get_beer_checkins

Retrieve the recent public check-in feed for a specific beer — what people are saying about it right now, and where they're drinking it.

Parameter

Type

Required

Description

bid

integer

Yes

Untappd beer ID

limit

integer

No

Results per page (max 50, default 25)

max_id

integer

No

Return results older than this checkin ID

min_id

integer

No

Return only checkins newer than this ID

Retrieve globally trending beers (macro and micro brew lists, by recent check-in velocity). No parameters.

Brewery

get_brewery_info

Retrieve detailed information, beer list, and recent check-ins for a brewery.

Parameter

Type

Required

Description

brewery_id

integer

Yes

Untappd brewery ID

compact

boolean

No

If true, returns brewery info only

get_brewery_checkins

Retrieve the recent public check-in feed for a brewery — all its beers being checked in globally.

Parameter

Type

Required

Description

brewery_id

integer

Yes

Untappd brewery ID

limit

integer

No

Results per page (max 50, default 25)

max_id

integer

No

Return results older than this checkin ID

min_id

integer

No

Return only checkins newer than this ID

User

get_user_info

Retrieve profile and stats for an Untappd user.

Parameter

Type

Required

Description

username

string

Yes

Untappd username

compact

boolean

No

If true, returns user info only (no checkins, media, recent brews)

get_user_activity

Retrieve the recent check-in activity feed for a user.

Parameter

Type

Required

Description

username

string

Yes

Untappd username

limit

integer

No

Number of results (max 25, default 25)

max_id

integer

No

Return results older than this checkin ID

min_id

integer

No

Return only checkins newer than this ID

get_user_distinct_beers

Retrieve the unique beers a user has checked in, with flexible sort ordering. sort=checkin with limit=1 is the single-call pattern for "most-checked-in beer".

Parameter

Type

Required

Description

username

string

Yes

Untappd username

offset

integer

No

Pagination offset

limit

integer

No

Results per page (max 50, default 25)

sort

string

No

date (default), checkin, highest_rated, lowest_rated, highest_rated_you, lowest_rated_you

get_user_wishlist

Retrieve beers on a user's wish list.

Parameter

Type

Required

Description

username

string

Yes

Untappd username

offset

integer

No

Pagination offset

limit

integer

No

Results per page (max 50, default 25)

sort

string

No

date (default), checkin, highest_rated, lowest_rated

get_user_badges

Retrieve a user's earned badges (pages of 50, most recent first).

Parameter

Type

Required

Description

username

string

Yes

Untappd username

offset

integer

No

Pagination offset (pages of 50)

get_user_friends

Retrieve a user's friend list (public accounts only).

Parameter

Type

Required

Description

username

string

Yes

Untappd username

offset

integer

No

Pagination offset

limit

integer

No

Results per page (max 50, default 25)

Activity Feeds

get_global_feed

Retrieve the global public check-in feed (The Pub). High rate-limit cost for the data returned — prefer min_id polling to fetch only new check-ins. Note: standard API keys are typically not authorized for /thepub — Untappd returns "You are not authorized to call this method from this key" unless your key has elevated access (get_local_feed is not restricted).

Parameter

Type

Required

Description

limit

integer

No

Results per page (max 50, default 25)

max_id

integer

No

Return results older than this checkin ID

min_id

integer

No

Return only checkins newer than this ID

get_local_feed

Retrieve the public check-in feed near a geographic point.

Parameter

Type

Required

Description

lat

number

Yes

Latitude

lng

number

Yes

Longitude

radius

integer

No

Radius in miles (default 25, max 50)

limit

integer

No

Results per page (max 50, default 25)

max_id

integer

No

Return results older than this checkin ID

min_id

integer

No

Return only checkins newer than this ID

get_friend_feed 🔑 token

Retrieve the friend check-in feed for the authenticated user.

Parameter

Type

Required

Description

limit

integer

No

Results per page (max 50, default 25)

max_id

integer

No

Return results older than this checkin ID

min_id

integer

No

Return only checkins newer than this ID

Checkin

get_checkin_info

Retrieve extended details for a specific check-in, including badges earned, toasts, and comments.

Parameter

Type

Required

Description

checkin_id

integer

Yes

Untappd check-in ID

Composite / Aggregation

These tools make multiple API calls (1 per page scanned — 50 beers/badges, 25 check-ins). They pre-check the remaining rate limit before starting and stop early — setting truncated: true in the response — if the budget runs low.

get_user_stats_at_venue

Get a user's check-in stats at a specific venue — visit count, last visit, average rating, top beers — by scanning their recent check-in feed. Untappd's API has no venue-history endpoint, so the stats cover the scanned window (max_pages × 25 check-ins), not all time.

Parameter

Type

Required

Description

venue_id

integer

Yes

Untappd venue ID

username

string

No

Untappd username (defaults to UNTAPPD_USERNAME)

max_pages

integer

No

Max feed pages to scan at 25 check-ins/page (default 5 = 125 check-ins)

search_venue_then_get_user_stats

Search for a venue by name, then get the user's check-in stats at the top match.

Parameter

Type

Required

Description

q

string

Yes

Venue search query

username

string

No

Untappd username (defaults to UNTAPPD_USERNAME)

lat

number

No

Latitude for location-aware search

lng

number

No

Longitude for location-aware search

max_pages

integer

No

Max feed pages to scan at 25 check-ins/page (default 5 = 125 check-ins)

get_user_beer_stats

Aggregate a user's distinct beer history into style, brewery, and rating breakdowns — top styles, top breweries, average personal vs global ratings, highest-rated, and most-checked-in.

Parameter

Type

Required

Description

username

string

Yes

Untappd username

max_pages

integer

No

Max pages to scan at 50 beers/page (default 10 = 500 beers)

get_user_badge_summary

Retrieve all badges for a user (paginating to completion) with a structured summary.

Parameter

Type

Required

Description

username

string

Yes

Untappd username

max_pages

integer

No

Max pages to scan at 50 badges/page (default 10 = 500 badges)

Rate Limiting

The Untappd API allows 100 calls per hour per API key (per access token when authenticated). Every tool response includes the current rate limit status:

{
  "rateLimit": {
    "limit": 100,
    "remaining": 97
  }
}

Composite tools call assertRateLimitSufficient before starting pagination and stop early with truncated: true rather than exhausting the budget. If the limit is exceeded, the Untappd API returns a 429 error which is surfaced as: Rate limit exceeded. Limit: 100, Remaining: 0. Resets hourly.

Authentication

Mode

Env Vars

Unlocks

Public

UNTAPPD_CLIENT_ID + UNTAPPD_CLIENT_SECRET

All public tools

Authenticated

+ UNTAPPD_ACCESS_TOKEN (+ optional UNTAPPD_USERNAME)

get_friend_feed, user-scoped rate limits, richer /user data

When an access token is configured (env var or saved token file), the server prefers it for all calls — rate limits become user-scoped and /user endpoints return richer data. UNTAPPD_USERNAME provides a default username for authenticated user tools.

The server exits on startup if neither a client id/secret pair nor an access token is configured.

Interactive Authentication

You don't need to obtain an access token manually — the server can run Untappd's OAuth flow for you.

One-time prerequisite: in your Untappd app settings at untappd.com/api, set the Callback URL to exactly:

http://localhost:8737/callback

(or the value of UNTAPPD_REDIRECT_URL if you override it — it must be a localhost http URL, and the two must match exactly or Untappd rejects the flow).

In chat: ask your agent to run the authenticate_untappd tool. Your browser opens to Untappd's approve page; once you approve, the token is saved and the 🔑 tools work immediately — no restart needed.

In a terminal:

npx untappd-mcp-server auth            # run the interactive flow
npx untappd-mcp-server auth --status   # show current auth status
npx untappd-mcp-server auth --clear    # delete the saved token

(In the repo: npm run auth.)

Storage & precedence: the token is saved to ~/.untappd-mcp-server/token.json (override with UNTAPPD_TOKEN_PATH). If UNTAPPD_ACCESS_TOKEN is set it always wins over the file. Untappd tokens do not expire.

Security note: the token is stored in plaintext with 0600 permissions on macOS/Linux; on Windows protection relies on your user-profile ACLs. Delete it any time with auth --clear. Tool outputs only ever include a masked form of the token.

Development

npm install
npm run build
npm test          # unit tests (mocked API — no rate limit cost)
npm run smoke     # live smoke test against the real API (~25 calls, ~26 with a token)

The smoke test uses your UNTAPPD_* env vars, skips authenticated tools when no access token is set, and aborts if the remaining rate limit drops below 5. Filter to a single tool with npm run smoke -- --only=tool_name.

Testing with MCP Inspector

npx @modelcontextprotocol/inspector node dist/index.js

Known Limitations

  • No tap list data — actual tap lists require an Untappd for Business subscription. Venue check-in feeds serve as a real-time proxy.

  • No venue events — Untappd's public API has no events endpoint, and the Eventbrite search API that could have bridged the gap was discontinued; deferred to v3.

  • No venue-history endpoint — the v4 API has no per-user venue history; get_user_stats_at_venue scans the recent check-in feed instead, so its stats cover a window (max_pages × 25 check-ins), not all time.

  • Rate limit: 100/hour — minimise redundant calls; every response surfaces rateLimit.remaining.

  • Feed limit caps — tools accept limit up to 50, but the API caps some feeds at 25 server-side.

  • Global feed requires an elevated key/thepub (get_global_feed) is not authorized for standard API keys; the local feed works with any key.

  • Foursquare lookup requires v2 IDs — the MD5-hash format; Foursquare v3 numeric IDs will not work.

  • Venue IDs required — use venue_search first to resolve a venue name to an ID.

  • Public check-ins only — private user accounts are not visible.

  • Read-only — write operations (check-in, toast, comment, wish-list management) are deferred to v3.

  • MCP client timeouts — some MCP clients cap tool-call duration below the authenticate_untappd default of 180s; pass a smaller timeout_seconds if your client times out first, or use npx untappd-mcp-server auth in a terminal instead.

License

MIT

Available Tools

27 tools
authenticate_untappdA

Interactively authenticate the user with Untappd via OAuth to unlock get_friend_feed, user-scoped rate limits, and richer /user data. Opens the user's browser to Untappd's login/approve page and blocks until they approve (up to timeout_seconds). PREREQUISITE: the user's Untappd API app (untappd.com/api) must have its Callback URL set to exactly http://localhost:8737/callback (or the UNTAPPD_REDIRECT_URL value). Requires UNTAPPD_CLIENT_ID + UNTAPPD_CLIENT_SECRET. The token is saved to disk and used immediately — no server restart needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_secondsNoHow long to wait for the user to approve in the browser (default 180)

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It details the interactive process: opens browser, blocks until approval (up to timeout_seconds), saves token to disk, and applies immediately without server restart. This provides strong behavioral transparency for an authentication tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately concise with a clear front-loaded purpose. All sentences add value, including prerequisites and behavioral details. It could be slightly more concise but structure is good.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers all essential aspects: prerequisites, interactive behavior, effect (token saved, immediate use). It is sufficiently complete for an agent to understand when and how to invoke this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter timeout_seconds is fully described in the schema (100% coverage). The description adds minimal value beyond the schema by stating 'blocks until they approve (up to timeout_seconds)'. Per guidelines, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool interactively authenticates the user with Untappd via OAuth to unlock specific features like get_friend_feed, user-scoped rate limits, and richer /user data. It distinguishes itself from sibling tools, none of which are authentication-related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: to unlock get_friend_feed, user-scoped rate limits, and richer /user data. It also lists prerequisites (callback URL, client ID/secret). However, it does not explicitly state when not to use it or provide alternatives for authentication (though siblings don't offer auth).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_auth_statusA

Report Untappd authentication status: whether an access token is configured, its source (UNTAPPD_ACCESS_TOKEN env var or the saved token file), the token file path, and whether the authenticated tools are unlocked. Free (no API call) by default; set validate:true to verify the token with one authenticated API call (costs 1 rate-limit call).

ParametersJSON Schema
NameRequiredDescriptionDefault
validateNoVerify the token against the Untappd API with one call (default false)

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses critical behavior: by default no API call, and if validate:true costs 1 rate-limit call. Describes what information is reported. No annotations exist, so description fully carries the transparency burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. First sentence states purpose and outputs, second sentence explains modes and cost. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core status information and optional validation. Lacks mention of error handling or token expiration, but for a simple status check this is adequate. No output schema, but description lists return fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'validate' has schema description (100% coverage). Description adds context: what setting it does (verify token) and cost implication, going beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool reports Untappd authentication status, listing specific outputs (token configuration, source, file path, unlocked status). Distinct from sibling tools which are about beer/venue/user data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use (checking auth status) and mentions two modes (free vs validated). Implies this is a diagnostic tool. Doesn't explicitly state when not to use, but context is clear among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_beer_checkinsB

Retrieve the recent public check-in feed for a specific beer

ParametersJSON Schema
NameRequiredDescriptionDefault
bidYesUntappd beer ID
limitNoResults per page (max 50, default 25 — the API may cap some feeds at 25)
max_idNoReturn results older than this checkin ID
min_idNoReturn only checkins newer than this ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must stand alone but only mentions 'recent public check-in feed' without disclosing authentication needs, rate limits, or pagination behavior beyond schema defaults.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no filler, front-loaded with key action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters and no output schema or annotations, the description is too sparse. It omits details like pagination, sorting, or what constitutes 'recent'. Schema partially compensates but description does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no parameter-specific meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and resource 'recent public check-in feed for a specific beer', distinguishing it from sibling tools like get_beer_info or get_global_feed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as get_beer_info or other feed tools. Does not specify prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_beer_infoC

Retrieve detailed information for a specific beer

ParametersJSON Schema
NameRequiredDescriptionDefault
bidYesUntappd beer ID
compactNoIf true, returns beer info only. Default: false

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention whether the tool is read-only, what side effects exist, or any authorization needs. The phrase 'detailed information' is vague and fails to specify the scope or nature of the response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no extraneous words, making it concise. However, it could be more structured by breaking into multiple sentences or bullets for readability, but it earns a 4 for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters, no output schema, and no annotations, the description is too sparse. It does not explain what 'detailed information' includes, nor does it provide any context about the response format or error handling. A more complete description is warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it does not clarify the behavior of the 'compact' parameter or explain how 'bid' is used. The description is neutral but insufficient for deeper understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and the resource 'detailed information for a specific beer', making the purpose unambiguous. However, it does not differentiate from siblings like 'get_beer_checkins' or 'search_beer', which could lead to confusion about which tool to use for similar purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_brewery_checkinsB

Retrieve the recent public check-in feed for a brewery (all its beers, globally)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (max 50, default 25 — the API may cap some feeds at 25)
max_idNoReturn results older than this checkin ID
min_idNoReturn only checkins newer than this ID
brewery_idYesUntappd brewery ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states 'retrieve' (suggesting read-only) but lacks detail on auth requirements, rate limits, pagination behavior, or any side effects. Schema descriptions cover pagination params, but the description itself adds minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that is front-loaded with the key verb and resource, containing no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the simplicity, the description lacks information about the return format or content of the feed (e.g., checkin details, user info). With no output schema, the agent needs more context to understand what the tool returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds the context of 'all its beers, globally' but does not elaborate on parameter meanings beyond what the schema already provides. Adequate but not enhanced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve', the resource 'recent public check-in feed for a brewery', and the scope 'all its beers, globally'. It effectively distinguishes from siblings like get_brewery_info and get_beer_checkins.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests when to use (to get recent public check-ins for a specific brewery), but it does not provide explicit guidance on when not to use or compare to alternatives like get_beer_checkins or get_venue_checkins.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_brewery_infoC

Retrieve detailed information and recent check-ins for a specific brewery

ParametersJSON Schema
NameRequiredDescriptionDefault
compactNoIf true, returns brewery info only. Default: false
brewery_idYesUntappd brewery ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states high-level purpose but omits details like authentication requirements, rate limits, the scope of 'recent' check-ins, or that this is a read-only operation. Minimal transparency beyond basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It efficiently communicates the core function. However, it could be slightly restructured to include key behavioral notes without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description mentions 'detailed information and recent check-ins' but lacks specifics about what fields are included or any details on pagination or size limits. Given the absence of an output schema and annotations, more completeness would help the agent anticipate the return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with descriptions for both 'brewery_id' and 'compact'. The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate. It does not elaborate on the behavior or expected values of the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieve') and the resource ('detailed information and recent check-ins for a specific brewery'), effectively conveying the tool's primary function. However, it does not differentiate from sibling tools like 'get_brewery_checkins' which might be a more specific alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings, such as when to use 'get_brewery_info' over 'get_brewery_checkins' (which only returns check-ins) or when the compact parameter is beneficial. Missing explicit alternatives and context for parameter usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_checkin_infoA

Retrieve extended details for a specific check-in, including badges earned, toasts, and comments

ParametersJSON Schema
NameRequiredDescriptionDefault
checkin_idYesUntappd check-in ID

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It indicates a read operation but omits details on authentication, rate limits, or side effects. For a tool lacking annotations, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys essential information without any extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with one parameter and no output schema, the description adequately covers what the tool returns (extended details, badges, toasts, comments). It is comprehensive enough for an agent to understand the tool's function.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the single parameter is described as 'Untappd check-in ID'). The description adds no further parameter semantics beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb 'Retrieve' and specifies the resource 'extended details for a specific check-in'. It lists included elements (badges, toasts, comments), distinguishing it from sibling tools like 'get_beer_checkins' that return lists of check-ins.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when details of a single check-in are needed, but provides no explicit guidance on when to use this tool vs alternatives, nor any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_friend_feedC

Retrieve the friend check-in feed for the authenticated user (requires UNTAPPD_ACCESS_TOKEN)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (max 50, default 25 — the API may cap some feeds at 25)
max_idNoReturn results older than this checkin ID
min_idNoReturn only checkins newer than this ID

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full behavioral transparency. It only states the authentication requirement but does not disclose pagination behavior, rate limits, or what the response contains. For a tool retrieving a feed, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the primary action. Every word is essential with no extraneous content. It is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there are three optional parameters and no output schema, the description should explain the feed's content and pagination. It does not mention that results are paginated, how min_id/max_id work, or what each checkin object looks like. The description is incomplete for a feed retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters, so the schema already documents them well. The description adds no extra semantic value beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves the 'friend check-in feed' for the authenticated user. The verb 'Retrieve' and resource 'friend check-in feed' are specific and differentiate from sibling tools like get_global_feed or get_local_feed. However, it could be more explicit about the feed containing check-ins from friends.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the authentication requirement (UNTAPPD_ACCESS_TOKEN) but provides no guidance on when to use this tool versus alternatives such as get_global_feed or get_local_feed. There is no mention of applicable scenarios or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_global_feedA

Retrieve the global public check-in feed (The Pub). High rate-limit cost for the data returned — prefer min_id polling to fetch only new check-ins. Note: standard API keys may not be authorized for this endpoint (Untappd returns 'not authorized to call this method from this key')

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (max 50, default 25 — the API may cap some feeds at 25)
max_idNoReturn results older than this checkin ID
min_idNoReturn only checkins newer than this ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description adds behavioral context: high rate-limit cost, authorization limitations, and a specific error message. It implies read-only behavior and polling strategy, though it could mention response format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. Front-loaded with purpose, then critical usage notes. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a feed tool with no output schema, the description covers rate limits, authorization, and polling strategy. It lacks description of returned data structure, but the purpose is common enough to infer. Score 4 reflects minor incompleteness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so descriptions already document limit, max_id, min_id. The description adds contextual value (rate limit, min_id polling) but does not elaborate param syntax beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve the global public check-in feed (The Pub).' It uses a specific verb and resource, and the parenthetical alias disambiguates it from sibling tools like get_local_feed and get_friend_feed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'High rate-limit cost' and 'prefer min_id polling to fetch only new check-ins,' plus a warning about authorization. Stops short of naming alternative tools explicitly but gives actionable advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_local_feedB

Retrieve the public check-in feed near a geographic point (The Pub — Local)

ParametersJSON Schema
NameRequiredDescriptionDefault
latYesLatitude
lngYesLongitude
limitNoResults per page (max 50, default 25 — the API may cap some feeds at 25)
max_idNoReturn results older than this checkin ID
min_idNoReturn only checkins newer than this ID
radiusNoRadius in miles (default 25)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It only states 'public' implying no auth, but fails to mention pagination, rate limits, or what happens with no results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the purpose, and contains no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters, no output schema, and no annotations, the description should be more thorough. It does not explain return format, pagination behavior, or limitations of the API.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema already provides via parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the public check-in feed near a geographic point, with a specific verb and resource. It distinguishes from siblings like get_global_feed (no location) and get_friend_feed (friends).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_global_feed or get_friend_feed. The description does not mention exclusions or preferred scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_activityB

Retrieve the recent check-in activity feed for a specific Untappd user

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results (max 25, default 25)
max_idNoReturn results older than this checkin ID
min_idNoReturn only checkins newer than this ID
usernameYesUntappd username

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It does not mention pagination behavior, order of results, authorization requirements, or what constitutes 'recent'. The parameter descriptions imply pagination, but the description itself lacks such details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's core function without any superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description provides enough to understand the tool's purpose but lacks context about the response format, default behavior, and how to handle pagination. It is minimally complete but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides descriptions for all 4 parameters (100% coverage). The description does not add additional meaning beyond what the schema already says, thus meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and the resource 'recent check-in activity feed for a specific Untappd user'. It distinguishes this tool from sibling tools like get_user_info or get_user_distinct_beers by specifying 'check-in activity feed'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as get_checkin_info, get_user_beer_stats, or get_global_feed. There is no mention of prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_badgesA

Retrieve a user's earned badges (returned in pages of 50, most recent first)

ParametersJSON Schema
NameRequiredDescriptionDefault
offsetNoPagination offset (badges are returned in pages of 50)
usernameYesUntappd username

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description discloses pagination (pages of 50) and ordering (most recent first), but does not mention read-only nature or authentication requirements. Partial behavioral coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the action, no wasted words. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but for a simple list retrieval tool, the description covers pagination and ordering adequately. Could briefly mention return structure, but sufficient for use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. Description adds ordering context but does not significantly enhance parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Retrieve a user's earned badges' with specific verb and resource. Distinguishes from sibling 'get_user_badge_summary' by implying this returns the full list, not a summary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies pagination usage but does not explicitly state when to use or not use alternatives like get_user_badge_summary. No contextual guidance beyond the pagination details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_badge_summaryB

Retrieve all badges for a user (paginating to completion) with a structured summary (costs 1 API call per 50 badges)

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUntappd username
max_pagesNoMax pages to scan at 50 badges/page (default 10 = 500 badges)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses pagination behavior and API call cost, which is helpful. However, it lacks details on authentication requirements, error handling, or the structure of the summary output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the primary action and includes critical details (pagination, cost). Every word adds value, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should explain what the 'structured summary' contains, such as badge names, categories, or counts. The description omits this, leaving the agent uncertain about the return format. Also, no mention of error scenarios or constraints on the username.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds semantic value by explaining 'max_pages' in terms of badge count ('50 badges/page' and 'default 10 = 500 badges'), which clarifies the parameter's effect beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all badges for a user with pagination and a structured summary. The verb 'retrieve' and resource 'badges' are specific. However, it does not explicitly differentiate from the sibling 'get_user_badges', so clarity is good but not perfect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this tool vs alternatives (e.g., 'get_user_badges' or other user-specific tools). The description does not mention prerequisites, default behavior, or when to adjust 'max_pages'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_beer_statsA

Aggregate a user's distinct beer history into style, brewery, and rating breakdowns (paginates the API — costs 1 call per 50 beers scanned)

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYesUntappd username
max_pagesNoMax pages to scan at 50 beers/page (default 10 = 500 beers)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses pagination behavior (cost per 50 beers scanned) and that it aggregate data. With no annotations provided, the description adequately covers the read-only nature and cost implications. However, it doesn't mention auth requirements or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with 20 words, no fluff. Front-loaded with the core action ('Aggregate a user's distinct beer history'), followed by relevant details in parentheses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description hints at return fields (style, brewery, rating breakdowns). It covers pagination and cost. Missing details like error responses or username validation, but sufficient for a tool with only two simple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions. The description adds value by explaining the pagination cost (1 call per 50 beers), which clarifies the 'max_pages' parameter's impact. It also hints at output structure (breakdowns by style, brewery, rating).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool aggregates a user's distinct beer history into style, brewery, and rating breakdowns. The verb 'aggregate' and resource 'beer history' are specific, and the description distinguishes from sibling tools like get_user_info or get_user_distinct_beers by focusing on aggregation rather than raw lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance compared to siblings. The description implies usage for aggregated breakdowns, but does not state alternatives or exclusions (e.g., if raw list is needed, use get_user_distinct_beers).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_distinct_beersA

Retrieve the unique beers a user has checked in, with flexible sort ordering

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order (default: date). 'checkin' = most checked-in first; '_you' variants use the user's personal rating
limitNoResults per page (max 50, default 25)
offsetNoPagination offset
usernameYesUntappd username

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description is the sole source of behavioral info. It only states it retrieves data, but does not disclose read-only nature, authentication requirements, rate limits, or pagination behavior. For a tool with no annotation safety net, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no filler, front-loaded with key action and resource. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and no annotations, the description is minimal. It doesn't describe return format, error conditions, or usage limits. Adequate but not complete for an AI agent to fully understand implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes parameters well. The description adds 'flexible sort ordering' which loosely relates to the sort parameter but adds no structural or semantic detail beyond the enum list. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (retrieve), resource (unique beers of a user), and a distinguishing feature (flexible sort ordering), differentiating it from sibling tools like get_user_activity or get_user_wishlist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or alternatives provided. The purpose is implied by the name but the description lacks guidance on when to choose this tool over other user-focused tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_friendsB

Retrieve a user's friend list (public accounts only)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoResults per page (max 50, default 25)
offsetNoPagination offset
usernameYesUntappd username

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description has full responsibility for behavioral disclosure. It only says 'retrieve', implying read-only, but provides no details on authentication requirements, rate limits, data freshness, or what happens if the user is private. This is insufficient for a tool with no other safety metadata.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no filler words. Front-loads the core purpose and constraint. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward list tool, the description covers basic functionality. However, it omits mention of pagination behavior (even though parameters are in schema) and does not clarify that the list is from the perspective of the authenticated user. With no output schema, a brief note on return format would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are fully documented in the schema. The description adds no extra meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (retrieve), resource (user's friend list), and a key constraint (public accounts only). It distinguishes from siblings like get_user_info or get_user_badges by specifying the exact data returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The sibling list exists but the description does not mention contexts where this tool is preferred, nor does it give any when-not-to-use advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_infoC

Retrieve profile and stats for a specific Untappd user by username

ParametersJSON Schema
NameRequiredDescriptionDefault
compactNoIf true, returns user info only (no checkins, media, recent brews). Default: false
usernameYesUntappd username to look up

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior. It only says 'Retrieve', implying a read-only operation, but it does not mention authentication requirements, rate limits, or the effect of the 'compact' parameter on output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, direct sentence with no wasted words. It is front-loaded and easy to scan, though it omits important details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description lacks detail about what 'profile and stats' includes or how the optional 'compact' parameter affects results. This is insufficient for an agent to fully understand the tool's output and behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond 'by username'; the 'compact' parameter is not mentioned, so no value added beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and the resource 'profile and stats for a specific Untappd user by username'. It distinguishes this general user info tool from more specific sibling tools like get_user_badge_summary or get_user_activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_user_badge_summary or get_user_activity. There are no conditions or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_stats_at_venueA

Get a user's check-in stats at a specific venue — visit count, last visit, average rating, top beers — by scanning their recent check-in feed (1 API call per 25 check-ins scanned; the stats cover the scanned window, not all time)

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNoUntappd username (defaults to UNTAPPD_USERNAME env var)
venue_idYesUntappd venue ID
max_pagesNoMax feed pages to scan at 25 check-ins/page (default 5 = 125 check-ins)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses API cost ('1 API call per 25 check-ins scanned') and the limitation that stats are window-based. This provides valuable behavioral context beyond the input schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence with a dash for listing and a parenthetical for caveats. Every part adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description explains what is returned (stats list) and the scanning method. It addresses a key limitation. For a stats tool among many siblings, this is sufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds context: username defaults to an env var, max_pages default 5 = 125 check-ins, and the scanning process. This enhances understanding of how parameters affect behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'user's check-in stats at a specific venue', listing specific data points (visit count, last visit, average rating, top beers). It distinguishes from siblings like get_user_beer_stats and get_venue_checkins by focusing on aggregated stats at a venue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the scanning mechanism and that stats cover only the scanned window, not all time. This implies a trade-off between speed and completeness, giving usage context. However, it does not explicitly compare to alternatives or state when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_wishlistC

Retrieve beers on a user's wish list

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order (default: date)
limitNoResults per page (max 50, default 25)
offsetNoPagination offset
usernameYesUntappd username

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It only states 'Retrieve', implying a read operation, but lacks details on authentication needs, pagination behavior, or any side effects. The minimal verb provides some transparency but insufficient for full behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the tool's purpose. It is front-loaded and efficient, though it could include more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters (including pagination and sorting) and no output schema, the description is too sparse. It does not explain the pagination mechanism, sort options, or what the response contains, leaving agents reliant solely on the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds no extra meaning beyond the schema's parameter descriptions. Baseline score of 3 is appropriate as the description does not compensate further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action (Retrieve) and resource (beers on a user's wish list). It distinguishes from sibling user tools like get_user_info or get_user_activity by focusing on the wish list, though it does not explicitly differentiate from similar ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. Sibling tools like get_user_distinct_beers or get_user_badge_summary might be confused, but no comparison or context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venue_checkinsA

Retrieve the recent check-in feed for a specific venue. Primary tool for 'what's on tap right now' use case.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results (max 25, default 25)
max_idNoReturn results older than this checkin ID
min_idNoReturn only checkins newer than this ID
venue_idYesUntappd venue ID

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description alone must convey behavioral traits. It fails to mention any limits, pagination behavior, rate limits, authentication needs, or response characteristics beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff: first states the function, second gives a clear use case. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and four parameters including pagination controls, the description should explain the response structure and how parameters like min_id/max_id work. The use case hint is helpful but insufficient for complete agent guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, meaning the input schema already documents all parameters adequately. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieve') and resource ('recent check-in feed for a specific venue'), and uniquely identifies the tool's use case as 'what's on tap right now', distinguishing it from siblings like get_venue_info or get_beer_checkins.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a specific use case ('Primary tool for...'), which implies when to use it, but does not explicitly mention when not to use it or provide alternatives, though the context of sibling tools is available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venue_foursquare_lookupA

Resolve a Foursquare venue ID to its Untappd venue (bridge between Foursquare data and Untappd venue tools)

ParametersJSON Schema
NameRequiredDescriptionDefault
foursquare_idYesFoursquare venue ID in v2 MD5-hash format (v3 numeric IDs will not work)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only states the basic mapping behavior, omitting important details such as error handling (e.g., if the ID is invalid or not found), return shape, or any destructive actions. The description is too sparse for complete transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that effectively communicates the tool's purpose. It is front-loaded and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool, the description is adequate but incomplete: it does not mention what the output is (presumably an Untappd venue), and there is no output schema. Given the lack of annotations, adding a brief note about the return value would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters, but the description adds a crucial constraint: the foursquare_id must be in v2 MD5-hash format, specifically noting that v3 numeric IDs will not work. This goes beyond the schema description and guides correct input.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves a Foursquare venue ID to its Untappd venue, positioning it as a unique bridge between platforms. This distinguishes it from sibling tools like venue_search or get_venue_info, which operate entirely within Untappd.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a Foursquare venue ID is known and an Untappd venue is desired, but it lacks explicit guidance on when to use this versus alternatives like venue_search. No exclusion criteria or examples are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_venue_infoB

Retrieve detailed information and recent check-ins for a known venue

ParametersJSON Schema
NameRequiredDescriptionDefault
compactNoIf true, returns venue info only (no checkins, media, top_beers). Default: false
venue_idYesUntappd venue ID

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It mentions 'recent check-ins' but does not specify the recency limit, number of check-ins, or any behavioral traits like rate limits, authentication needs, or data scope beyond the mention. The compact parameter is not described in the tool description, leaving agents to infer from schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that is efficient and to the point. It could benefit from slightly more structure but has no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description should explain what 'detailed information' and 'recent check-ins' entail. It does not mention available fields, structure, or pagination. However, for a tool with only two parameters and a clear purpose, it is adequately complete for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the description does not need to add much. It provides no additional meaning beyond what the schema already states about 'venue_id' and 'compact'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieve' and the resource 'detailed information and recent check-ins for a known venue'. It effectively distinguishes itself from sibling tools like 'venue_search' (which finds venues) and 'get_venue_checkins' (which focuses only on check-ins).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that the tool is for a venue already known (via venue_id), but it does not explicitly state when to use it versus alternatives, nor does it mention prerequisites or conditions. It lacks explicit guidance on when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_beerC

Search for beers by name

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesBeer name search query
sortNoSort order: checkin (default), name, count
offsetNoPagination offset

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only states the search action without mentioning pagination, output format, authentication needs, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no fluff. It is appropriately concise for a simple search tool, though it could benefit from slight expansion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's three parameters and lack of annotations or output schema, the description is insufficient. It does not explain pagination, sorting details, or what the response contains, which is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all three parameters have descriptions in the schema), so the baseline is 3. The description does not add any extra meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' and resource 'beers', and the qualifier 'by name' gives specificity. It is not a tautology and distinguishes from sibling tools like 'search_brewery' or 'venue_search'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of scenarios, prerequisites, or exclusions, leaving the agent to infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_breweryC

Search for breweries by name

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesBrewery name search query
offsetNoOffset for pagination

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are missing, so the description must carry the full burden. It discloses no behavioral traits beyond the basic action; for example, it does not mention pagination behavior, result limits, or response structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (one phrase) but lacks any structured detail. It is not verbose, but the minimalism sacrifices clarity and completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, output schema, and the presence of pagination, the description is insufficient. It does not explain how offset works, what the result set looks like, or any constraints, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing clear definitions for both parameters. The description adds no extra meaning beyond the schema, maintaining the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (search) and the resource (breweries by name), which is specific and non-tautological. However, it does not differentiate from sibling tools like search_beer or venue_search, which have similar structures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. There is no indication of when to use this tool versus alternatives like search_beer or venue_search, nor any prerequisites or context for use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_venue_then_get_user_statsA

Search for a venue by name, then get the user's check-in stats at the top match (1 search call + a scan of the user's recent check-in feed at 25/page)

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesVenue search query (venue name)
latNoLatitude for location-aware search
lngNoLongitude for location-aware search
usernameNoUntappd username (defaults to UNTAPPD_USERNAME env var)
max_pagesNoMax feed pages to scan at 25 check-ins/page (default 5 = 125 check-ins)

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It discloses the number of calls (1 search + scan) and feed page size (25/page), giving agents cost and pagination insight. Missing edge cases like no match or errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence front-loads the action and includes key details (call count, page size). Efficient, no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complex compound tool with no output schema. Description explains flow and scan strategy but omits output details and error handling. Adequate for basic use but missing completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. Description adds context that max_pages controls scan depth and defaults to 5. Does not elaborate on other parameters beyond schema, which is adequate but not exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the compound action: search for a venue by name then get user stats at the top match. It distinguishes from siblings like venue_search (pure search) and get_user_stats_at_venue (requires venue ID).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to both search and get stats) and implies the context (scanning feed). However, it does not explicitly state when not to use or mention alternatives like separate calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 27 tool updatesv2.0.0
    • First observedauthenticate_untappd
    • First observedget_auth_status
    • First observedget_beer_checkins
    • First observedget_beer_info
    • First observedget_brewery_checkins
    • First observedget_brewery_info
    • First observedget_checkin_info
    • First observedget_friend_feed
    • First observedget_global_feed
    • First observedget_local_feed
    • First observedget_trending_beers
    • First observedget_user_activity
    • First observedget_user_badge_summary
    • First observedget_user_badges
    • First observedget_user_beer_stats
    • First observedget_user_distinct_beers
    • First observedget_user_friends
    • First observedget_user_info
    • First observedget_user_stats_at_venue
    • First observedget_user_wishlist
    • First observedget_venue_checkins
    • First observedget_venue_foursquare_lookup
    • First observedget_venue_info
    • First observedsearch_beer
    • First observedsearch_brewery
    • First observedsearch_venue_then_get_user_stats
    • First observedvenue_search

TDQS

B3.4/5.0

Scored across 27 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap, e.g., get_user_badge_summary vs get_user_badges, and venue_search combined with search_venue_then_get_user_stats may cause confusion. Descriptions help, but a few boundaries are fuzzy.

Naming Consistency4/5

Tool names predominantly follow a 'verb_noun' pattern (get_*, search_*), with only 'authenticate_untappd' being a slight deviation. Overall consistent and predictable.

Tool Count3/5

27 tools is on the high side, approaching the upper limit of what feels manageable. The domain is broad, but some tools could be merged (e.g., get_user_badge_summary and get_user_badges).

Completeness4/5

Covers most read-only operations for users, venues, beers, breweries, and check-ins. Missing interactive features like toasting or commenting, but those may be out of scope. Light dead end: get_global_feed warns it may not work for standard keys.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server that creates a bridge between AI language models and the Trakt.tv API, allowing LLMs to access real-time entertainment data and personal Trakt viewing history.
    46
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to make HTTP requests (GET, POST, PUT, DELETE) to external APIs through standardized MCP tools.
    4
    2
    MIT
  • F
    license
    A
    quality
    F
    maintenance
    A Model Context Protocol server that exposes the Scryfall Magic: The Gathering API as tools for LLM clients, enabling card search, images, prices, sets, rulings, symbology, catalogs, and bulk data access.
    18
    -