Skip to main content
Glama

ChefBear

Import menu photos

import_menu
Idempotent

Use this when the user wants a restaurant menu saved to their ChefBear account from photos they provide: to keep it, get it as a structured menu in their language, share it, or open it in the ChefBear app. Creates a private ChefBear menu from 1 to 5 menu photos, given as uploaded files where the app supports file inputs (files) or as public https:// image links (photoUrls). Uses one recognition from the user's ChefBear allowance, so don't call it just to answer a question about a photo already in the conversation unless the user wants it saved. Returns a jobId; recognition usually takes 20 to 60 seconds, then get_import_status returns the menuId. Does not create images or public links.

Input Schema

NameRequiredDescriptionDefault
filesNo
languageNoLanguage for dish names and descriptions: en, zh-Hans, zh-Hant, es, vi, ko or ja (zh, zh-TW and similar forms also work). When omitted, ChefBear uses the conversation's language if the app reports one of these, else en.
photoUrlsNoPublic https:// links to the menu photos the user provided (JPEG, PNG, WebP, HEIC or AVIF, up to 15 MB each).
requestIdYesA new unique ID for this import, such as a UUID. Repeating the same requestId with the same photos returns the same job instead of importing twice.

Output Schema

NameRequiredDescriptionDefault
jobIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the cost model (consumes one recognition from the user's allowance), the async behavior (returns jobId, 20-60 second latency), and output limits (no images or public links created). The idempotentHint is also grounded in behavior via the requestId de-duplication note.

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?

Front-loaded with the trigger condition and only a couple of long sentences, each carrying real information (cost, latency, follow-up tool, boundaries). The opening purpose list ('to keep it, get it as a structured menu in their language, share it, or open it in the ChefBear app') is slightly padded but still informative.

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?

An output schema exists so return shape needn't be explained, yet the description still usefully says a jobId comes back and how to resolve it. Cost, latency, source limits, and non-goals are all covered; nothing an agent needs to call it correctly appears missing.

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 75% and already documents language, photoUrls format/limits, and requestId idempotency. The description adds the meaningful point that files and photoUrls are alternative ways to supply the same 1-5 photos depending on whether the app supports file inputs, which the schema does not state.

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?

States a specific verb and resource ('Creates a private ChefBear menu from 1 to 5 menu photos') and scopes it to user-provided photos. It also draws a negative boundary ('Does not create images or public links') and distinguishes itself from the follow-up sibling get_import_status, so an agent can pick it without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit trigger conditions (user wants a menu saved, kept, structured in their language, shared, or opened in the app) plus an explicit exclusion ('don't call it just to answer a question about a photo already in the conversation unless the user wants it saved'). It also names the alternative path: get_import_status returns the menuId after the job.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources