Open AI models through one OpenAI-compatible API: chat, live model list, prices and cost estimates.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <your Synap API key>. Only needed for synap_chat_completion; listing models and estimating cost work without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Send a conversation to a model on Synap, Linkrra's OpenAI-compatible inference API, and get the model's reply. Use this when you need text generated, code written or a question answered by one of the open models Synap serves. This is the only tool here that costs money: it bills prompt and completion tokens to the Synap API key supplied as the Authorization: Bearer header on the MCP connection. With no key it returns an error and nothing is spent; a key with no balance returns insufficient_credits. Call synap_estimate_cost first if the price matters. Returns the standard OpenAI chat.completion JSON (choices[0].message.content holds the reply, usage holds token counts). The call is not streamed and keeps no memory between calls — send the full message history each time.
Model id exactly as returned by synap_list_models, e.g. "qwen3-coder-30b". Use "synap-v1" to let Synap pick the cheapest model that can handle the request.
The conversation so far, oldest first. The last message is normally the user turn to answer.
Upper limit on tokens generated in the reply. Omit to use the model default; lower it to cap cost.
Sampling randomness, 0 to 2. Lower is more deterministic. Omit to use the model default.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Send a conversation to a model on Synap, Linkrra's OpenAI-compatible inference API, and get the model's reply. Use this when you need text generated, code written or a question answered by one of the open models Synap serves. This is the only tool here that costs money: it bills prompt and completion tokens to the Synap API key supplied as the Authorization: Bearer header on the MCP connection. With no key it returns an error and nothing is spent; a key with no balance returns insufficient_credits. Call synap_estimate_cost first if the price matters. Returns the standard OpenAI chat.completion JSON (choices[0].message.content holds the reply, usage holds token counts). The call is not streamed and keeps no memory between calls — send the full message history each time.
| Argument | Type | Description |
|---|---|---|
| model* | string | Model id exactly as returned by synap_list_models, e.g. "qwen3-coder-30b". Use "synap-v1" to let Synap pick the cheapest model that can handle the request. |
| messages* | array | The conversation so far, oldest first. The last message is normally the user turn to answer. |
| max_tokens | integer | Upper limit on tokens generated in the reply. Omit to use the model default; lower it to cap cost. |
| temperature | number | Sampling randomness, 0 to 2. Lower is more deterministic. Omit to use the model default. |
{
"type": "object",
"required": [
"model",
"messages"
],
"properties": {
"model": {
"type": "string",
"description": "Model id exactly as returned by synap_list_models, e.g. \"qwen3-coder-30b\". Use \"synap-v1\" to let Synap pick the cheapest model that can handle the request."
},
"messages": {
"type": "array",
"items": {
"type": "object",
"required": [
"role",
"content"
],
"properties": {
"role": {
"enum": [
"system",
"user",
"assistant"
],
"type": "string",
"description": "Who wrote the message: system (instructions), user, or assistant (an earlier model reply)."
},
"content": {
"type": "string",
"description": "The message text."
}
}
},
"minItems": 1,
"description": "The conversation so far, oldest first. The last message is normally the user turn to answer."
},
"max_tokens": {
"type": "integer",
"minimum": 1,
"description": "Upper limit on tokens generated in the reply. Omit to use the model default; lower it to cap cost."
},
"temperature": {
"type": "number",
"maximum": 2,
"minimum": 0,
"description": "Sampling randomness, 0 to 2. Lower is more deterministic. Omit to use the model default."
}
}
}Work out what a chat completion would cost on Synap from token counts, using the live price list. Use this before synap_chat_completion when budget matters, or to compare models for a job. Free, read-only, needs no API key and runs no model. Returns {model, prompt_tokens, completion_tokens, prompt_usd, completion_usd, total_usd, pricing}. It is an estimate: the real charge uses the token counts the model reports afterwards. Auto-routing ids such as "synap-v1" have no fixed price and return an error saying so.
| Argument | Type | Description |
|---|---|---|
| model* | string | Model id exactly as returned by synap_list_models. |
| prompt_tokens* | integer | Tokens you will send (system + conversation). Roughly 4 characters of English per token. |
| completion_tokens | integer | Tokens you expect back. Use your max_tokens for a worst case. Defaults to 0. |
{
"type": "object",
"required": [
"model",
"prompt_tokens"
],
"properties": {
"model": {
"type": "string",
"description": "Model id exactly as returned by synap_list_models."
},
"prompt_tokens": {
"type": "integer",
"minimum": 0,
"description": "Tokens you will send (system + conversation). Roughly 4 characters of English per token."
},
"completion_tokens": {
"type": "integer",
"minimum": 0,
"description": "Tokens you expect back. Use your max_tokens for a worst case. Defaults to 0."
}
}
}Return the complete catalogue record for one Synap model: pricing, context and output limits, supported parameters, quantisation, data-retention policy and readiness. Use this after synap_list_models when you need details the summary leaves out. Free, read-only and needs no API key. Returns the raw model object, or an error naming the id if Synap does not serve it.
| Argument | Type | Description |
|---|---|---|
| model* | string | Model id exactly as returned by synap_list_models. |
{
"type": "object",
"required": [
"model"
],
"properties": {
"model": {
"type": "string",
"description": "Model id exactly as returned by synap_list_models."
}
}
}List the models Synap serves right now, each with its price per million tokens, context window and what it is good at. Use this to choose a model id before calling synap_chat_completion, or to compare prices. Free, read-only, no API key needed, and safe to call repeatedly; the list is live, so models can appear or go between calls. Returns {"object":"list","count":N,"data":[{id,name,capability,tier,context_tokens,max_output_tokens,pricing,data_policy}]}; pricing is USD per million prompt and completion tokens and is absent for the auto-routing ids ("synap-v1"), which bill at the price of the model they route to. For every field of one model use synap_get_model.
| Argument | Type | Description |
|---|---|---|
| query | string | Optional case-insensitive filter matched against model id, name and capability, e.g. "coder", "qwen" or "vision". Omit to list everything. |
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional case-insensitive filter matched against model id, name and capability, e.g. \"coder\", \"qwen\" or \"vision\". Omit to list everything."
}
}
}