Overview
Text Embeddings runs all-MiniLM-L6-v2, a 6-layer sentence-transformer, on APIVerve's own servers through ONNX Runtime. Each text is tokenized, passed through the model, mean-pooled over its tokens and scaled to unit length, giving a 384-dimension vector. The model reads at most 256 word pieces, so a text longer than about 180 words is split into 180-word chunks; each chunk is embedded and the chunk vectors are averaged and normalized again, so every text yields exactly one vector.
Send `text` for a single string or `texts` for a JSON array, not both. Text is trimmed before embedding. A text over 10,000 characters, a request over 50,000, more than 32 texts, or an empty string returns 400; more than 4 texts on the Free plan returns 403. When `compare` is present it is embedded in the same model call and `similarity` is the cosine of the angle between each vector and the compare vector, rounded to 4 places. Paraphrases typically score 0.6 to 0.9 and unrelated sentences under 0.2.
Vector values are rounded to 6 decimal places. Because the vectors are normalized, a plain dot product in your own code or vector database gives the same cosine similarity. Vectors are only comparable with vectors from this same model, so re-embed your corpus if you switch models.
Live Test Text Embeddings Source →
The tool
Once your client is connected to the VerveContext server, this appears in its tool list as TextEmbeddings. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "TextEmbeddings",
"arguments": {}
}Connecting
One server URL covers every source in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervecontext": {
"url": "https://api.vervecontext.com/v1/mcp"
}
}
}https://api.vervecontext.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
textOptional | string | The text to embed, up to 10,000 characters. Send text or texts length 0–10000 |
textsOptional | array | A JSON array of texts to embed in one call: up to 32 on paid plans and 4 on the Free plan, 10,000 characters each and 50,000 in total. Send text or texts |
compareOptionalPremium | string | Optional reference text; each embedding gets its cosine similarity to it length 0–10000 |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"model": "all-MiniLM-L6-v2",
"dimensions": 384,
"normalized": true,
"embedding": [
0.015935,
-0.051158,
-0.08069,
-0.037722,
-0.041567,
0.069786,
0.012189,
0.027276,
0.069194,
0.022245,
-0.042573,
0.037621,
0.043625,
-0.041836,
-0.056157,
0.00667,
-0.068362,
0.112544,
-0.021071,
-0.090057,
0.004028,
-0.031519,
-0.041218,
-0.011646,
0.013743,
-0.016609,
-0.002956,
0.030607,
-0.106868,
0.001514,
0.001547,
0.020945,
0.028474,
0.027638,
-0.010214,
0.04415,
-0.042242,
0.011779,
0.043924,
-0.008672,
-0.089182,
-0.020857,
-0.087462,
0.028674,
0.08814,
0.025155,
-0.042181,
0.054494,
0.048532,
0.009761,
0.107937,
0.000774,
0.000686,
-0.028623,
-0.058207,
0.059224,
0.065291,
0.063502,
0.056031,
0.041444,
0.018389,
0.006527,
-0.025379,
0.100695,
-0.071208,
-0.020917,
-0.005925,
0.004708,
0.040568,
-0.020998,
-0.091728,
-0.046622,
-0.084695,
-0.031808,
0.01667,
0.02989,
0.005032,
-0.055746,
0.063165,
0.116765,
-0.071768,
-0.022474,
-0.009307,
0.049127,
0.118566,
0.059996,
0.023227,
-0.007489,
0.011,
-0.040044,
0.051527,
-0.027689,
-0.051349,
-0.011261,
-0.111196,
-0.012924,
0.044306,
0.022978,
-0.071736,
0.056197,
0.044321,
-0.024127,
0.003852,
-0.074818,
0.042519,
-0.046473,
0.117393,
0.08601,
-0.013658,
0.028927,
0.032663,
-0.044648,
0.012891,
0.058705,
0.011859,
-0.008381,
-0.026583,
0.007164,
0.017871,
0.027932,
-0.041322,
0.008515,
0.001873,
-0.02367,
-0.050241,
-0.017463,
-0.034542,
0,
-0.062251,
0.004076,
-0.036463,
0.010555,
-0.039321,
-0.067142,
0.013812,
-0.071026,
-0.051261,
0.057907,
0.023454,
0.01625,
-0.045207,
-0.087902,
-0.019768,
0.007788,
-0.019921,
0.007324,
-0.012854,
-0.001863,
-0.019662,
0.017874,
0.079734,
-0.008303,
0.015725,
-0.036594,
0.025994,
-0.032027,
-0.036135,
0.019403,
-0.017327,
-0.000511,
0.000872,
0.019909,
-0.057479,
0.000474,
0.075845,
-0.030035,
-0.042511,
0.026453,
-0.026771,
-0.029517,
0.051743,
-0.069742,
0.054797,
0.000037,
0.026588,
0.054662,
0.030867,
0.008791,
-0.051588,
-0.002533,
0.003057,
0.002774,
0.017355,
0.007094,
0.012687,
-0.045407,
-0.086406,
-0.068595,
0.086327,
0.036987,
-0.026459,
0.001031,
0.021954,
-0.049635,
0.074866,
-0.04183,
-0.000295,
0.049797,
-0.029262,
0.013973,
-0.023409,
0.029798,
-0.103474,
0.039347,
0.038171,
0.05988,
-0.052313,
0.049653,
-0.004409,
0.017919,
-0.077781,
0.080555,
-0.046249,
0.016249,
0.017335,
0.084156,
-0.00726,
-0.032936,
-0.054922,
-0.012744,
0.075304,
-0.121707,
-0.082506,
0,
-0.007864,
-0.066508,
0.030534,
-0.022107,
0.0539,
-0.021819,
-0.002716,
0.043627,
-0.021448,
-0.015385,
0.057646,
0.122854,
0.0182,
-0.029586,
0.134486,
0.085412,
-0.035002,
0.090932,
-0.125456,
-0.00437,
-0.102856,
0.051666,
-0.002521,
-0.02113,
0.043273,
-0.002127,
0.021891,
0.082963,
0.011011,
0.001568,
0.069904,
-0.016033,
-0.003045,
0.153703,
0.050273,
-0.014532,
0.085554,
0.009679,
-0.055562,
-0.031634,
0.005374,
0.042663,
-0.010425,
-0.005738,
-0.049902,
-0.008218,
0.037462,
-0.052941,
0.01358,
0.037513,
-0.028075,
-0.065099,
0.100573,
-0.064201,
-0.009629,
0.021812,
0.052269,
-0.016687,
0.005393,
-0.102985,
-0.025369,
0.079842,
-0.016843,
0.038335,
-0.01167,
0.001197,
-0.026137,
-0.022323,
-0.076328,
0.062972,
-0.044764,
0.10601,
0.076878,
0.01546,
0.106406,
-0.109352,
-0.071418,
0.039775,
-0.086625,
-0.01426,
0.097484,
-0.014352,
-0.068561,
-0.052108,
-0.070306,
-0.094529,
0.02975,
0.049288,
0.046155,
-0.007938,
-0.040781,
-0.036678,
0.006408,
-0.000094,
0.000799,
0,
-0.013822,
-0.056042,
0.082071,
0.005924,
0.087829,
0.032089,
-0.048997,
0.01165,
-0.088562,
-0.088651,
-0.038811,
0.027432,
0.026942,
0.006228,
-0.028242,
-0.031951,
-0.059847,
-0.008865,
0.022552,
0.016139,
-0.03609,
-0.003508,
-0.021258,
-0.07641,
0.07868,
0.076684,
-0.007732,
0.084901,
0.052902,
-0.017653,
-0.038105,
0.021126,
-0.002817,
-0.066709,
-0.164925,
-0.023914,
-0.029452,
0.008349,
-0.025644,
-0.014505,
0.010479,
0.051549,
0.051218,
0.066133,
-0.05291,
0.003186,
0.018309,
0.018868,
0.026376,
0.008602,
-0.110013,
0.091777,
0.025643,
0.065606,
-0.017918,
0.005675,
0.047761,
-0.047534,
-0.111482,
-0.006169,
0.020921,
0.069579,
0.001407,
-0.082195
],
"characters": 27,
"similarity": 0.6762
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
model | string | all-MiniLM-L6-v2 | Model that produced the vectors |
dimensions | number | 384 | Length of each vector |
normalized | boolean | true | Always true: every vector has length 1 |
embedding | array | [0.015935,-0.051158,-0.08069] | The vector for text (single-text requests) |
characters | number | 27 | Characters embedded from text (single-text requests) |
similarityPremium | number | 0.6762 | Cosine similarity of text to compare, from -1 to 1 (when compare is sent) |
Why ground on it
A model can produce something that looks like this answer from its training data, and be confidently out of date or simply wrong. This source returns the current value in a shape you can check, which is the difference between an answer you can cite and one you have to hedge.
Point an evaluation at model: it is the field most worth pinning a claim to, and it is either present and current or absent — never plausibly invented.
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This source is not part of VerveContext. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 5 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Semantic Search
- Embed documents once, store the vectors in a vector database, and embed each search query to find passages by meaning rather than exact keywords.
- Retrieval for Chatbots
- Build the retrieval step of a RAG pipeline: embed knowledge-base chunks and fetch the closest ones to a user question before calling a language model.
- Duplicate Detection
- Flag support tickets, reviews or listings that say the same thing in different words by comparing their vectors.
- Clustering and Tagging
- Group feedback, articles or products by topic with k-means or any clustering library run on the vectors.
Other ways to use Text Embeddings
Set up Text Embeddings on VerveContext, or reach the same source a different way. Your VerveContext account and credits work on all of them — one key, one balance.
Related
More in AI/Computer Vision: