Skip to main content
Glama
aiexp1

Tanod MCP server

mlpeek: embed texts as vectors

embed_texts
Read-onlyIdempotent

Convert 1-64 texts into 384-dimension vectors for search, clustering, or similarity work, using pinned open embedding models with optional query and passage prefixes.

Instructions

mlpeek: Create text embeddings. For images too use embed_multimodal; for pair scores use text_similarity. Returns 384-dimension embeddings of 1-64 texts with bge-small-en-v1.5 (English) or multilingual-e5-small (about 100 languages), normalised by default; input_type applies the model's query or passage prefix. Each text is cut at the model's 512-token window (truncated says so); over 16,384 tokens per request is a 422 too_many_tokens (not charged). Runs an open model pinned by hash on Tanod's own CPU (no LLM, no third-party API); an unavailable model is a 503 (not charged). Typically 20 ms for one short text, up to about 10 s at the token budget. Price: USD 0.0005 per text, at least USD 0.001 per call (1-64 texts per call: USD 0.001-0.032). Free: 5 mlpeek calls per IP per UTC day. The submitted text is never logged or stored. Docs: https://tanod.dev/learn/text-embeddings-api-no-account.html

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelNosmall-en = BAAI/bge-small-en-v1.5 (English); multilingual = intfloat/multilingual-e5-small (~100 languages). 384 dimensions both.small-en
textsYes1-64 texts, each at most 8,000 characters; each is truncated at 512 tokens (reported per text). Priced per text, minimum USD 0.001 per call.
encodingNobase64 = little-endian float32 bytes.float
normalizeNoL2-normalise (cosine similarity = dot product).
input_typeNoRetrieval prefix: query / passage (e5: 'query: ' / 'passage: '; bge: its query instruction / nothing). none = symmetric use.none

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
noteNo
errorNoOnly on an error result: an object {code, message}, or the reason string of an x402 PaymentRequired object.
modelNo
usageNo
encodingNo
dimensionsNo
input_typeNo
normalizedNo
prefix_appliedNo
max_tokens_per_textNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: token-window truncation with per-text reporting, the 422 too_many_tokens and 503 unavailable error cases, pricing per call, the 5-free-calls-per-day limit, latency ranges, and a privacy guarantee that text is never logged or stored.

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?

Purpose and sibling routing are front-loaded, followed by return facts, then operational details (errors, pricing, limits). Despite its length, each sentence carries distinct, non-redundant information justified by the tool's pricing and rate-limit complexity.

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?

Even though an output schema exists (so return values need not be explained), the description covers model choice, dimensions, truncation, encoding, error codes, cost, and privacy — everything an agent needs to invoke this paid, rate-limited embedding tool correctly.

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 description coverage is 100% with clear enum descriptions, so the schema does the heavy lifting (baseline 3). The description adds a little context by restating that outputs are normalised by default and that input_type applies the model's query/passage prefix, which helps consolidate meaning across params.

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 ('Create text embeddings') and explicitly distinguishes itself from siblings: 'For images too use embed_multimodal; for pair scores use text_similarity.' An agent can identify this tool among the many text/image siblings without opening a schema.

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?

Names the two closest alternatives with the exact condition that selects each (multimodal for images, text_similarity for pair scores). It also conveys the input-type usage (symmetric vs query/passage retrieval), leaving little to inference.

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

Deploy Server

Other Tools