Skip to main content
Glama
veniceai

Venice MCP Server

Official
by veniceai

Venice Chat (LLM)

venice_chat

Generate non-streaming, OpenAI-compatible chat completions from Venice text models for multimodal or uncensored prompts, using API key or x402 wallet authentication.

Instructions

Run an OpenAI-compatible chat completion via Venice's text-model catalog. Calls are non-streaming plaintext. enable_e2ee is rejected: this server does not encrypt chat. Uncensored: NSFW prompts allowed where the model permits. Supports x402 wallet auth (no Venice account needed) and API key.

Input Schema

NameRequiredDescriptionDefault
stopNo
modelNoModel id. Defaults to deepseek-v4-flash-0731.
toolsNo
top_pNo
messagesYesChat messages. Multimodal image, audio, video, and file blocks belong in user messages.
reasoningNo
verbosityNoHow much text the model returns.
max_tokensNo
timeout_msNoUpstream timeout for this call, covering the full response body. Long generations may need more than the VENICE_HTTP_TIMEOUT_MS default.
temperatureNo
tool_choiceNo
response_formatNo
prompt_cache_keyNo
reasoning_effortNoTakes precedence over reasoning.effort.
venice_parametersNoVenice-only options: web search, citations, system prompt control, reasoning control, and characters.
parallel_tool_callsNo
max_completion_tokensNoMaximum visible plus reasoning tokens. Preferred over deprecated max_tokens.
prompt_cache_retentionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changedv0.3.0
    • addedInput schema / properties / max_completion_tokens
      Added value: +{
      +  "description": "Maximum visible plus reasoning tokens. Preferred over deprecated max_tokens.",
      +  "exclusiveMinimum": 0,
      +  "type": "integer"
      +}
    • changedInput schema / properties / messages / description
      Previous value: -"Chat messages, OpenAI format."New value: +"Chat messages. Multimodal image, audio, video, and file blocks belong in user messages."
    • removedInput schema / properties / messages / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / messages / items / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "content": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "cache_control": {
      +                      "additionalProperties": false,
      +                      "description": "Prompt cache control for providers that support it.",
      +                      "properties": {
      +                        "ttl": {
      +                          "description": "Optional extended cache TTL, for example \"1h\".",
      +                          "type": "string"
      +                        },
      +                        "type": {
      +                          "const": "ephemeral",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "type"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "text": {
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "type": {
      +                      "const": "text",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "type",
      +                    "text"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "cache_control": {
      +                      "$ref": "#/properties/messages/items/anyOf/0/properties/content/anyOf/1/items/anyOf/0/properties/cache_control",
      +                      "description": "Prompt cache control for providers that support it."
      +                    },
      +                    "image_url": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "url": {
      +                          "description": "Public URL or base64 data URL for an image at least 64px square.",
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "url"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": {
      +                      "const": "image_url",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "type",
      +                    "image_url"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "cache_control": {
      +                      "$ref": "#/properties/messages/items/anyOf/0/properties/content/anyOf/1/items/anyOf/0/properties/cache_control",
      +                      "description": "Prompt cache control for providers that support it."
      +                    },
      +                    "input_audio": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "data": {
      +                          "description": "Base64-encoded audio bytes; direct audio URLs are not supported.",
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "format": {
      +                          "enum": [
      +                            "wav",
      +                            "mp3",
      +                            "aiff",
      +                            "aac",
      +                            "ogg",
      +                            "flac",
      +                            "m4a",
      +                            "pcm16",
      +                            "pcm24"
      +                          ],
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "data"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": {
      +                      "const": "input_audio",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "type",
      +                    "input_audio"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "cache_control": {
      +                      "$ref": "#/properties/messages/items/anyOf/0/properties/content/anyOf/1/items/anyOf/0/properties/cache_control",
      +                      "description": "Prompt cache control for providers that support it."
      +                    },
      +                    "type": {
      +                      "const": "video_url",
      +                      "type": "string"
      +                    },
      +                    "video_url": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "url": {
      +                          "description": "Public video URL, supported YouTube URL, or base64 video data URL.",
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "url"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "type",
      +                    "video_url"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "cache_control": {
      +                      "$ref": "#/properties/messages/items/anyOf/0/properties/content/anyOf/1/items/anyOf/0/properties/cache_control",
      +                      "description": "Prompt cache control for providers that support it."
      +                    },
      +                    "file": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "file_data": {
      +                          "description": "Public file URL or base64 data URL.",
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "filename": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "file_data"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": {
      +                      "const": "file",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "type",
      +                    "file"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        ]
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "role": {
      +        "const": "user",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "role",
      +      "content"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "content": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "$ref": "#/properties/messages/items/anyOf/0/properties/content/anyOf/1/items/anyOf/0"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "reasoning_content": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "reasoning_details": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "data": {
      +              "type": "string"
      +            },
      +            "format": {
      +              "type": "string"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "index": {
      +              "type": "number"
      +            },
      +            "text": {
      +              "type": "string"
      +            },
      +            "type": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "role": {
      +        "const": "assistant",
      +        "type": "string"
      +      },
      +      "thought_signature": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "tool_calls": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "function": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "arguments": {
      +                  "type": "string"
      +                },
      +                "name": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "name",
      +                "arguments"
      +              ],
      +              "type": "object"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "thought_signature": {
      +              "type": "string"
      +            },
      +            "type": {
      +              "const": "function",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "type",
      +            "function"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "role"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "content": {
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "role": {
      +        "const": "tool",
      +        "type": "string"
      +      },
      +      "tool_call_id": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "role",
      +      "content",
      +      "tool_call_id"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "content": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "$ref": "#/properties/messages/items/anyOf/0/properties/content/anyOf/1/items/anyOf/0"
      +            },
      +            "minItems": 1,
      +            "type": "array"
      +          }
      +        ]
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "role": {
      +        "enum": [
      +          "system",
      +          "developer"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "role",
      +      "content"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / messages / items / properties
      Removed value: -{
      -  "content": {
      -    "type": "string"
      -  },
      -  "role": {
      -    "enum": [
      -      "system",
      -      "user",
      -      "assistant"
      -    ],
      -    "type": "string"
      -  }
      -}
    • removedInput schema / properties / messages / items / required
      Removed value: -[
      -  "role",
      -  "content"
      -]
    • removedInput schema / properties / messages / items / type
      Removed value: -"object"
    • changedInput schema / properties / model / description
      Previous value: -"Model id. Defaults to venice-uncensored."New value: +"Model id. Defaults to deepseek-v4-flash-0731."
    • addedInput schema / properties / parallel_tool_calls
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / prompt_cache_key
      Added value: +{
      +  "type": "string"
      +}
    • addedInput schema / properties / prompt_cache_retention
      Added value: +{
      +  "enum": [
      +    "default",
      +    "extended",
      +    "24h"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / reasoning
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "effort": {
      +      "enum": [
      +        "none",
      +        "minimal",
      +        "low",
      +        "medium",
      +        "high",
      +        "xhigh",
      +        "max"
      +      ],
      +      "type": "string"
      +    },
      +    "summary": {
      +      "enum": [
      +        "auto",
      +        "concise",
      +        "detailed"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / reasoning_effort
      Added value: +{
      +  "$ref": "#/properties/reasoning/properties/effort",
      +  "description": "Takes precedence over reasoning.effort."
      +}
    • addedInput schema / properties / response_format
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "json_schema": {
      +          "additionalProperties": {},
      +          "type": "object"
      +        },
      +        "type": {
      +          "const": "json_schema",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "json_schema"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "type": {
      +          "const": "json_object",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "type": {
      +          "const": "text",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
    • addedInput schema / properties / stop / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "maxItems": 4,
      +    "minItems": 1,
      +    "type": "array"
      +  }
      +]
    • removedInput schema / properties / stop / items
      Removed value: -{
      -  "type": "string"
      -}
    • removedInput schema / properties / stop / maxItems
      Removed value: -8
    • removedInput schema / properties / stop / type
      Removed value: -"array"
    • addedInput schema / properties / timeout_ms
      Added value: +{
      +  "description": "Upstream timeout for this call, covering the full response body. Long generations may need more than the VENICE_HTTP_TIMEOUT_MS default.",
      +  "maximum": 600000,
      +  "minimum": 1000,
      +  "type": "integer"
      +}
    • addedInput schema / properties / tool_choice
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "none",
      +        "auto",
      +        "required"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "function": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "name": {
      +              "minLength": 1,
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "type": {
      +          "const": "function",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "type",
      +        "function"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
    • addedInput schema / properties / tools
      Added value: +{
      +  "items": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "function": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "description": {
      +                "type": "string"
      +              },
      +              "name": {
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "parameters": {
      +                "$ref": "#/properties/response_format/anyOf/0/properties/json_schema"
      +              },
      +              "strict": {
      +                "type": "boolean"
      +              }
      +            },
      +            "required": [
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "const": "function",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "function"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "type": {
      +            "enum": [
      +              "web_search",
      +              "x_search"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / venice_parameters
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Venice-only options: web search, citations, system prompt control, reasoning control, and characters.",
      +  "properties": {
      +    "character_slug": {
      +      "description": "Public ID of a Venice character to answer in. Discoverable via venice_list_characters.",
      +      "type": "string"
      +    },
      +    "disable_thinking": {
      +      "description": "Turn reasoning off entirely on supported models, and strip the <think></think> blocks.",
      +      "type": "boolean"
      +    },
      +    "enable_web_citations": {
      +      "description": "Ask the model to cite web sources with ^1^ style superscripts. Only applies when web search ran.",
      +      "type": "boolean"
      +    },
      +    "enable_web_scraping": {
      +      "description": "Scrape URLs found in the latest user message and feed the contents to the model.",
      +      "type": "boolean"
      +    },
      +    "enable_web_search": {
      +      "description": "Web search. \"on\" forces it, \"auto\" leaves it to the model, \"off\" (default) disables it.",
      +      "enum": [
      +        "auto",
      +        "on",
      +        "off"
      +      ],
      +      "type": "string"
      +    },
      +    "enable_x_search": {
      +      "description": "Native xAI web + X/Twitter search, on supported models such as Grok. Runs server-side instead of Venice search.",
      +      "type": "boolean"
      +    },
      +    "include_venice_system_prompt": {
      +      "description": "Keep Venice's default system prompt alongside your own. Defaults to true; set false for full control of behaviour.",
      +      "type": "boolean"
      +    },
      +    "strip_thinking_response": {
      +      "description": "Remove <think></think> blocks from the response of a reasoning model.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / verbosity
      Added value: +{
      +  "description": "How much text the model returns.",
      +  "enum": [
      +    "low",
      +    "medium",
      +    "high",
      +    "auto"
      +  ],
      +  "type": "string"
      +}
  2. First observedv0.2.0

TDQS

B3.4/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations: it discloses that calls are non-streaming plaintext, that enable_e2ee is rejected (a critical constraint for an agent that might try to use it), and that the server does not encrypt chat. It also mentions x402 wallet auth as an option. This is useful, non-obvious information. The annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false) are somewhat contradictory with the open-world nature of an LLM that can be prompted to do anything, but the description doesn't address that.

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?

The description is concise, front-loaded with the core purpose, and each sentence adds a distinct piece of information (operation, streaming behavior, encryption rejection, censorship policy, auth methods). It could be slightly more structured, but it effectively avoids waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (18 parameters, nested objects, no output schema) and the rich sibling set, the description is minimally adequate but leaves significant gaps. It doesn't explain how to select a model, how to handle multimodal inputs, how tool calling works, or what the response format looks like. The absence of an output schema places a higher burden on the description, which is not fully met.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 39%, which is moderately low. The description adds meaning for one parameter (enable_e2ee) by stating it is rejected, but otherwise provides no parameter-level guidance. With 18 parameters and many undocumented in the schema (e.g., temperature, top_p, stop, tools have no descriptions), the description fails to compensate for the coverage gap. Baseline for low coverage is 3 only if the description partially compensates; here it does so minimally.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the core action: 'Run an OpenAI-compatible chat completion via Venice's text-model catalog.' This is a specific verb+resource. However, it doesn't explicitly distinguish itself from the closest sibling, venice_responses, which is likely another chat/completion endpoint. The agent must infer the difference.

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

Usage Guidelines2/5

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

The description provides no explicit when-to-use guidance. It doesn't clarify when to choose venice_chat over venice_responses, venice_chat_with_character, or venice_web_search. The mention of uncensored NSFW prompts is a capability, not a usage condition.

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