Public leaderboard

Public assessment

hedging8563/tokenlab-mcp-server (@tokenlabai/mcp-server)

tokenlabai-mcp-server · v0.6.17 · scanned

What changed in the harness

Selection accuracy 81→70, token cost up 4%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

16.7 / 30

16.7 out of 30
03Economics

9.3 / 20

9.3 out of 20
04Discoverability

14.6 / 20

14.6 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

27 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
cancel_task
no_return_description
Cancels a queued asynchronous task when cancellation is supported (queued Seedance video tasks: seedance-1.5-pro, seedance-2.0, seedance-2.0-fast) while they are still waiting to run. Tasks that are already processing, completed, failed, expired, or unsupported are not cancelled. Returns the updated task status object reflecting whether cancellation succeeded.
create_3d_model
params_unexplained
Creates a 3D model generation task using Tripo3D from a text prompt or reference image. `model` selects the Tripo3D model variant (default tripo-h3.1); `image_url` supplies a publicly reachable reference image for image-to-3D as an alternative to the base64 `image` field; `format` selects the output mesh format (glb, fbx, obj, or usdz); `quality` selects the generation tier (draft, standard, or high). Returns a task ID for polling via get_task_status.
create_anthropic_message
params_unexplained
Creates a model response using Anthropic's native Messages API request format. Supports Claude models with vision and streaming. `temperature` (0-1) controls sampling randomness, `top_p` (0-1) sets nucleus sampling probability, `top_k` limits sampling to the top K candidate tokens, and `stop_sequences` lists strings that stop generation when produced. Authentication: use the `x-api-key` header or `Authorization: Bearer` header.
create_chat_completion
no_return_description
Creates an OpenAI-compatible chat completion from a list of messages. For inline image_url data URLs, declare the byte-accurate image MIME type; the MCP boundary corrects recognized PNG, JPEG, WebP, and GIF payloads declared as application/octet-stream and rejects unrecognized generic binary image payloads before sending a billable request. Returns a chat completion object containing generated message choices and token usage.
create_embedding
name_restates_behavior no_return_description
Generates a vector embedding representing the given input text or tokens, for use in search, clustering, or similarity comparisons. Returns an object containing the embedding vector(s) and token usage.
create_gemini_content
params_unexplained no_return_description
Generates content using the native Gemini GenerateContent request/response shape, exposed only when the selected model advertises Gemini requests and a same-protocol route is available. `systemInstruction` supplies system-level guidance content parts; `generationConfig` sets sampling and output controls such as temperature, topP, topK, maxOutputTokens, and response format/schema; `safetySettings` lists per-category safety thresholds to apply. ProtoJSON lowerCamelCase and original proto snake_case field names are both accepted, and unknown fields are forwarded best-effort. Returns a Gemini-format GenerateContentResponse with generated candidates and usage metadata. Authentication: use `?key=` query parameter, `x-goog-api-key` header, or `Authorization: Bearer` header.
create_image
name_restates_behavior params_unexplained no_return_description
Generates one or more images from a text prompt, optionally conditioned on reference images for image-to-image or image-edit operations. `response_format` selects whether returned images are delivered as a `url` or as base64-encoded JSON (`b64_json`); support varies by model. Returns image data (URL(s) or base64 JSON per `response_format`), or a task object when `async` is used.
create_image_file
params_unexplained no_return_description
Creates an image from a prompt, accepting local file paths for reference images (multipart-style) rather than URLs. `operation` selects text-to-image, image-to-image, or image-edit; `mask_url` supplies an optional edit mask; `n` sets how many images to generate; `quality`, `size`, `aspect_ratio`, and `resolution` control output quality and dimensions (model-specific); `expand_prompt` asks the model to enhance the prompt; `negative_prompt` lists content to avoid; `seed` sets a deterministic seed where supported; `response_format` selects `url` or `b64_json` output; `async` returns a task before the final image is ready when supported; `background` controls transparency handling; `output_format` and `output_compression`/`compression` control the returned file format and compression; `moderation` sets moderation strictness; `style` hints at a visual style; `user` is an end-user identifier. Returns the generated image data (URL or base64), or a task object when `async` is used.
create_multimodal_embedding
params_unexplained no_return_description
Creates embeddings for one or more multimodal input items. `input` is a single item or array of items, each combining `text` and/or image content (`image_base64` with `image_mime_type`, or `image_url`); text input is generally available while image input may require feature enablement. Returns an object containing the embedding vector(s) for each input item.
create_music
params_unexplained
Creates a music generation task using Suno from a text description or uploaded audio reference. `model` selects the Suno backend (default suno_music); `title` and `tags` label and style the generated track; `action` selects whether to generate full `MUSIC` or only `LYRICS`. Returns a task ID for polling via get_task_status.
create_response
params_unexplained
Creates a response using the native OpenAI Responses API shape. The model details must advertise the Responses request format and a same-protocol route must be currently available; model names and providers do not imply availability. Unknown request fields are forwarded on a best-effort basis and remain subject to the selected provider's support. `temperature` controls sampling randomness for the generated output.
create_speech
name_restates_behavior no_return_description
Synthesizes spoken audio from input text using the selected text-to-speech model and voice. Returns the generated audio content (or an SSE event stream when `stream_format=sse`) in the requested `response_format`.
delete_file
no_return_description
Deletes a batch file or a bound image/reference file identified by `file_id`. When the request includes anthropic-beta: files-api-2025-04-14, the route uses Anthropic Files API mode for the bound workspace. Returns a deletion confirmation object for the removed file.
edit_image
params_unexplained no_return_description
Edits an existing image using JSON image URLs or the official JSON `images` array for supported GPT Image models. `prompt` describes the desired edit; `n` sets how many edited images to generate; `quality`, `size`, `aspect_ratio`, and `resolution` control output quality and dimensions (model-specific); `response_format` selects `url` or `b64_json` output; `background` controls transparency handling; `output_format` and `output_compression`/`compression` control the returned file format and compression; `moderation` sets moderation strictness; `user` is an end-user identifier for abuse detection. Returns the edited image data (URL or base64), or a task object when `async` is used.
edit_image_file
params_unexplained no_return_description
Edits an existing image using local file uploads for the source image and mask, or the official `images` array for supported GPT Image models. `prompt` describes the desired edit; `n` sets how many edited images to generate; `quality`, `size`, `aspect_ratio`, and `resolution` control output quality and dimensions (model-specific); `response_format` selects `url` or `b64_json` output; `background` controls transparency handling; `output_format` and `output_compression`/`compression` control the returned file format and compression; `moderation` sets moderation strictness; `async` returns a task before the edited image is ready when supported; `user` is an end-user identifier. Returns the edited image data (URL or base64), or a task object when `async` is used.
get_model
params_unexplained no_return_description
Retrieves current details for the single model identified by `model`, including supported operations, request parameters, request endpoints, selector limits, and pricing when available. Non-chat integrations should read these current model-specific request details before creating a request. Returns a model detail object describing capabilities and pricing.
get_model_pricing
params_unexplained no_return_description
Retrieves pricing-only details for the single model identified by `model`. Use this endpoint for price explanation, not for non-chat request construction. Returns an object with the model's pricing figures.
list_files
name_restates_behavior params_unexplained no_return_description
Lists uploaded batch and image/reference files for the workspace, with pagination and optional purpose or Anthropic Files cursor filters. `limit` caps the number of files returned per page (default 20, max 1000); `after` is a pagination cursor for the standard/OpenAI-compatible listing mode. Returns a paginated list of file metadata objects.
list_models
no_return_description
Lists the currently available models. Use `view=compact` for model selection and `view=full` for the existing OpenAI-compatible discovery shape. Native API calls default to `full`; integrations may choose `compact` as their default. Non-chat recommendations are available through `recommended_for`. Returns a list of model objects matching the requested view and filters.
rerank_documents
params_unexplained no_return_description
Reranks documents by relevance to a query using semantic similarity. `return_documents` controls whether the original document text is included alongside relevance scores in the response. Returns a ranked list of results with relevance scores (and document text when requested).
retrieve_file
name_restates_behavior params_unexplained no_return_description
Retrieves metadata for a single uploaded file identified by `file_id`. When the request includes anthropic-beta: files-api-2025-04-14, the route uses Anthropic Files API mode. Returns a file metadata object.
retrieve_file_content
name_restates_behavior params_unexplained no_return_description
Downloads the raw content of a previously uploaded file identified by `file_id`. Returns the file's binary or text content.
transcribe_audio
params_unexplained no_return_description
Transcribes audio into text (Speech-to-Text). `response_format` selects the output shape: json, text, srt, verbose_json, or vtt (word-level timestamps require verbose_json). Returns the transcription in the requested format, typically including the recognized text.
translate_audio
name_restates_behavior params_unexplained
Transcribes audio and translates the result to English. `model` selects the transcription/translation model (default whisper-1); `prompt` is optional text to bias the transcription; `response_format` selects the output shape (e.g. json, text, srt); `temperature` controls sampling randomness (0-1) for the transcription.
translate_text
name_restates_behavior params_unexplained no_return_description
Translates text into a target language using the current translation request format. `model` selects the translation model; `text` is the content to translate; `source_language` optionally specifies the source language (auto-detected if omitted); `target_language` specifies the required destination language; `mime_type` indicates whether `text` is plain text or HTML; `user` is an end-user identifier. Returns the translated text.
compare_models
name_restates_behavior params_unexplained no_return_description
Compares public TokenLab model details and pricing across several models. `models` lists 2-8 model IDs to compare; `include_raw` includes the raw underlying model records in the response when true. Returns a comparison object with per-model details and pricing side by side.
get_api_overview
no_return_description
Fetches TokenLab's agent-readable API overview. Returns a document summarizing available endpoints, models, and usage guidance.

Selection evidence

Confusable tool pairs.

9 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
create_image create_image_file high Both create an image from a prompt with nearly identical schemas; the only real difference is that create_image_file takes local file paths (image, image[]) while create_image takes URLs (image_url, image_urls). A task like 'generate an image from this prompt' gives no signal about which to pick, and if a local reference image is mentioned an agent could still default to the wrong one.
edit_image edit_image_file high Identical purpose (edit an image via multipart/JSON/images array) with the same parameter set except edit_image uses URLs/file_id references and edit_image_file uses local file paths for image/mask. An agent given a task like 'edit this image with a mask' must correctly infer local-vs-URL context, which is easy to get wrong.
create_embedding create_multimodal_embedding medium Both create embeddings; create_embedding is text-only while create_multimodal_embedding supports text+image input objects. A task like 'create an embedding for this text' could plausibly be routed to either, especially since create_multimodal_embedding also accepts pure text input.
get_model get_model_pricing medium Both take a single model ID and return model info; get_model returns full details including pricing 'when available', so a request like 'what's the pricing for model X' could be sent to either tool since get_model also surfaces pricing.
get_model_pricing get_pricing medium Both are pricing lookups differing mainly in scope (single model vs. list with filters). A task like 'get pricing for model X' could be handled by get_pricing with a tag/provider filter mistaken for exact model filtering, or vice versa, given overlapping naming and purpose.
retrieve_file retrieve_file_content medium Both take file_id and 'retrieve' a file; the distinction between metadata (retrieve_file) and actual content (retrieve_file_content) is subtle and a task like 'get me the file' doesn't clearly indicate which is wanted.
create_music create_video low Both are async generation tasks with a task ID returned, but their domains (music vs video) are distinct enough that a natural-language task ('generate a song' vs 'generate a video') is unlikely to cause confusion despite structural similarity.
delete_file upload_file low Opposite operations sharing 'file' terminology and purpose enum; unlikely to be confused since delete vs upload intents are clearly distinguishable in natural language.
transcribe_audio translate_audio medium Both take an audio file and produce text via Whisper-like models; a task like 'convert this audio to English text' is ambiguous because transcribe_audio (same-language transcription) and translate_audio (translate to English) could both seem applicable if the source language isn't specified, especially for non-English audio where the user wants English output but says 'transcribe'.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard