Skip to main content
Glama
DMontgomery40

DeepSeek MCP Server

DeepSeek MCP Server

An MCP server for DeepSeek's current V4.1 Flash API: text and visual chat, the Responses API, FIM completion, Files API lifecycle operations, model discovery, balance checks, and bounded in-memory conversations.

Version 1.0.1 uses the stable MCP TypeScript SDK v2 and serves both the 2026-07-28 protocol and stateless legacy clients.

What's current

As of September 10, 2026:

  • The canonical fast model is deepseek-flash, currently DeepSeek V4.1 Flash.

  • deepseek-v4-flash and deepseek-v4-flash-vision-exp are temporary aliases for deepseek-flash.

  • DeepSeek announced that deepseek-v4-pro will begin serving V4.1 Flash on September 14 until V4.1 Pro is released.

  • V4.1 Flash accepts visual input through Chat Completions and Responses.

  • The Files API supports upload, list, retrieve, and delete for reusable image inputs.

  • DeepSeek documents a 1M-token context window and up to 384K output tokens for deepseek-flash.

“Multimodal” here means image understanding. This server does not generate images, video, or audio.

Related MCP server: DeepSeek MCP Server

Tools

The server exposes eleven tools:

  • chat_completion: text or visual Chat Completions, thinking controls, function tools, JSON output, streaming aggregation, and optional conversation_id memory.

  • create_response: stateless Responses API calls with text/images, reasoning controls, function/custom tools, web search, structured output, and semantic streaming aggregation.

  • completion: FIM completion through /beta/completions.

  • list_models: live model discovery.

  • get_user_balance: account availability and balances.

  • upload_file: upload base64 JPEG, PNG, GIF, or WebP data and receive a reusable DeepSeek file_id.

  • list_files: list uploaded files with cursor, order, and purpose filters.

  • retrieve_file: retrieve metadata for one file_id.

  • delete_file: delete one uploaded file.

  • reset_conversation: clear one local in-memory conversation.

  • list_conversations: list local in-memory conversation IDs.

Every tool declares an MCP output schema and behavior annotations. Full provider payloads remain opt-in through include_raw_response=true.

Install

Node.js 20 or newer is required.

Run directly over stdio:

DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" npx -y deepseek-mcp-server@1

Codex CLI:

codex mcp add deepseek --env DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" -- npx -y deepseek-mcp-server@1

Claude Code:

claude mcp add deepseek --env DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" -- npx -y deepseek-mcp-server@1

Example MCP client configuration:

{
  "mcpServers": {
    "deepseek": {
      "command": "npx",
      "args": ["-y", "deepseek-mcp-server@1"],
      "env": {
        "DEEPSEEK_API_KEY": "REPLACE_WITH_DEEPSEEK_KEY"
      }
    }
  }
}

Visual input

chat_completion accepts image URLs:

{
  "message": [
    { "type": "text", "text": "Describe this image." },
    {
      "type": "image_url",
      "image_url": {
        "url": "https://example.com/photo.png",
        "detail": "high"
      }
    }
  ]
}

It also accepts a supported base64 data URL without first uploading it:

{
  "message": [
    { "type": "text", "text": "What is shown here?" },
    {
      "type": "file",
      "file_data": "data:image/png;base64,iVBORw0KGgo...",
      "filename": "image.png"
    }
  ]
}

For reuse, call upload_file, then pass its returned ID:

{
  "filename": "diagram.png",
  "file_data": "iVBORw0KGgo...",
  "expires_after_seconds": 86400
}
{
  "message": [
    { "type": "text", "text": "Explain this diagram." },
    { "type": "file", "file_id": "file-api-..." }
  ]
}

The same uploaded file can be used with create_response:

{
  "input": [
    {
      "role": "user",
      "content": [
        { "type": "input_text", "text": "Read the image." },
        { "type": "input_image", "file_id": "file-api-..." }
      ]
    }
  ]
}

Supported image formats are JPEG, PNG, GIF, and WebP. Detail may be low, high, original, or auto.

Upload safety boundary

upload_file accepts raw base64 or a supported image data URL. It deliberately does not accept local file paths and does not fetch arbitrary URLs on the server. Decoded uploads are limited to 64 MiB, and the bytes are signature-checked before upload. Uploaded data is stored by DeepSeek under your account; use an expiry or delete_file when it should not persist. Expiry must be between 3,600 and 2,592,000 seconds.

Streamable HTTP

Run a local HTTP endpoint:

DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" \
MCP_TRANSPORT=streamable-http \
MCP_HTTP_HOST=127.0.0.1 \
MCP_HTTP_PORT=3001 \
npx -y deepseek-mcp-server@1

The endpoint defaults to http://127.0.0.1:3001/mcp.

For browser clients, set an exact comma-separated origin allowlist:

MCP_HTTP_ALLOWED_ORIGINS=https://app.example.com,http://localhost:3000

Requests that include an Origin header are rejected with 403 unless the origin is allowlisted. Native clients that omit Origin are unaffected.

Hosted endpoint

A separately deployed endpoint is available at https://deepseek-mcp.ragweld.com/mcp using Authorization: Bearer <token>. The hosted deployment has its own release cycle and may lag the npm/GitHub release; inspect tools/list before relying on a newly added tool.

Environment

Required:

DEEPSEEK_API_KEY=your-api-key

Optional:

DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_REQUEST_TIMEOUT_MS=120000
DEEPSEEK_DEFAULT_MODEL=deepseek-flash
MCP_TRANSPORT=stdio
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=3001
MCP_HTTP_PATH=/mcp
MCP_HTTP_ALLOWED_ORIGINS=https://app.example.com,http://localhost:3000
CONVERSATION_MAX_MESSAGES=200

CONVERSATION_MAX_MESSAGES bounds the total messages retained in the process-local conversation store. Restarting the process clears this store.

MCP compatibility

  • Built on @modelcontextprotocol/server, @modelcontextprotocol/node, and @modelcontextprotocol/client 2.0.

  • Streamable HTTP negotiates MCP 2026-07-28 and falls back to stateless 2025-era handling for older clients.

  • Stdio chooses the protocol era from the opening exchange and pins one server instance for that connection.

  • Static discovery/list results carry one-hour public cache hints; dynamic resource lists, runtime data, live account data, and conversations remain private and short-lived or uncached.

  • Explicit conversation_id memory is application state and works independently of transport session state.

Migrating from 0.6.0

  • The default model changed from deepseek-v4-flash to deepseek-flash.

  • The MCP SDK moved from the monolithic v1 package to the split v2 packages.

  • MCP_HTTP_STATEFUL_SESSION was removed. HTTP protocol handling is now per-request/stateless; use conversation_id for retained chat context.

  • Four Files API tools and visual inputs were added.

  • Existing tool names and include_raw_response behavior remain compatible.

Development and verification

npm ci
npm run build
npm test
npm pack --dry-run

Credentialed smoke tests:

DEEPSEEK_API_KEY="REPLACE_WITH_DEEPSEEK_KEY" npm run test:live
DEEPSEEK_MCP_AUTH_TOKEN="REPLACE_WITH_TOKEN" npm run test:remote

The live smoke covers model listing, balance, text chat, thinking streaming, Responses, FIM, visual input, and a Files upload/retrieve/list/delete lifecycle with cleanup.

Registry identity

  • MCP Registry: io.github.DMontgomery40/deepseek

  • npm: deepseek-mcp-server@1.0.1

  • OCI: docker.io/dmontgomery40/deepseek-mcp-server:0.5.0 is the last published image and does not contain the 1.0.1 feature set.

Official references

License

MIT

Available Tools

11 tools
chat_completionA

Primary DeepSeek V4.1 chat tool for text, images, and multi-turn generation. Defaults to deepseek-flash. Provide either message (a text string or text/image/file content parts) or messages (full chat history); if both are provided, messages is used. Images may use an HTTP(S) URL, supported base64 data URL, or Files API file_id. Thinking is enabled by default; use reasoning_effort for current effort controls. Use conversation_id for explicit in-memory context. Set include_raw_response=true only for provider-payload debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault
stopNo
modelNodeepseek-flash
toolsNo
top_pNo
streamNo
messageNo
user_idNo
logprobsNo
messagesNo
thinkingNo
extra_bodyNo
max_tokensNo
temperatureNo
tool_choiceNo
top_logprobsNo
stream_optionsNo
conversation_idNo
response_formatNo
presence_penaltyNo
reasoning_effortNo
frequency_penaltyNo
clear_conversationNo
include_raw_responseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelNo
usageNo
statusNo
messageNo
retryableNo
error_typeNo
suggestionNo
tool_callsNo
raw_responseNo
finish_reasonNo
response_textNo
conversation_idNo
reasoning_contentNo
stream_chunk_countNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnly=false, openWorld=true), and the description adds non-obvious behavior beyond them: default model, thinking enabled by default, how reasoning_effort controls it, and that conversation_id maintains in-memory state. It does not cover streaming behavior or side effects of clear_conversation.

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?

Five dense sentences, no filler, with the core capability and input-routing rule front-loaded. Slightly cramped since it compresses many parameter caveats into a single block, but nothing is wasteful.

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

Completeness4/5

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

For a 23-parameter, open-world generative tool with an output schema, the description covers routing, defaults, state, and the two primary input modes, so return values need not be described. Gaps remain around streaming and clear_conversation semantics, but the essential picture is complete.

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 coverage is 0% across 23 params, so the description must compensate, and it does explain the highest-stakes ones: message/messages mutual exclusivity, accepted image URL forms, file_id usage, model default, reasoning_effort, and include_raw_response. The remaining ~16 parameters (temperature, tools, tool_choice, stream, clear_conversation, penalties, response_format, etc.) are left entirely to the bare schema, so it only partially fills a large gap.

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?

States a specific verb+resource ('chat tool for text, images, and multi-turn generation') and names the model family and default. It does not, however, differentiate itself from siblings like `completion` or `create_response`, so an agent still has to infer why 'primary' means this one should be preferred.

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

Usage Guidelines3/5

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

Gives clear conditional rules for its own parameters (message vs messages precedence, when to use conversation_id, when to set include_raw_response), which is genuine usage guidance. But it never says when to pick this tool over `completion`/`create_response`, which is the more consequential routing decision.

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

completionA

DeepSeek FIM completion tool for prompt/suffix fill-in-the-middle workflows. Defaults to deepseek-flash in non-thinking mode. Use this when you need raw completion text instead of chat message formatting. Set include_raw_response=true only when you need the full provider payload for debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault
echoNo
stopNo
modelNodeepseek-flash
top_pNo
promptYes
streamNo
suffixNo
logprobsNo
extra_bodyNo
max_tokensNo
temperatureNo
presence_penaltyNo
frequency_penaltyNo
include_raw_responseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
textNo
modelNo
usageNo
statusNo
messageNo
retryableNo
error_typeNo
suggestionNo
raw_responseNo
finish_reasonNo
stream_chunk_countNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), so the description needn't restate them. It adds useful behavior context: the default model is deepseek-flash in non-thinking mode, and include_raw_response is a debugging-only switch that expands the payload. It says nothing about cost, rate limits, or auth, so it adds value but is not rich.

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?

Three tight sentences, front-loaded with what the tool is and the differentiator, then the usage condition, then the debugging caveat. No filler, though the guidance sentence could be grouped more crisply.

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?

An output schema exists, so return-value explanation is not required, and annotations cover the safety profile. The remaining hole is the 14 undocumented parameters, plus no mention of suffix/prompt interaction semantics that are the point of FIM. Adequate but with a real gap.

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

Parameters2/5

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

Schema description coverage is 0% across 14 parameters, so the description must carry the semantic load. It only clarifies two of them (model default, include_raw_response) and leaves temperature/top_p/stop/suffix/logprobs/echo/stream/extra_body/etc. entirely undocumented in both places. This is a significant gap for a 14-param tool.

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 concrete verb and resource ('FIM completion tool for prompt/suffix fill-in-the-middle') and explicitly contrasts with the sibling chat path ('raw completion text instead of chat message formatting'). An agent can distinguish this from chat_completion/create_response without opening any schema.

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

Usage Guidelines4/5

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

Gives a clear selection condition: use this when you want raw completion text rather than chat-formatted messages, which implicitly routes agents away from chat_completion. It also scopes include_raw_response=true to debugging only. No explicit when-not or prerequisite conditions are stated, so it stops short of a 5.

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

create_responseA

Create a stateless DeepSeek V4.1 response using the OpenAI-compatible Responses API. Defaults to deepseek-flash and accepts text, image URLs, base64 images, and Files API file_id inputs. Use reasoning.effort for thinking control, tools for function or server-side web-search tools, and stream=true for semantic SSE aggregation. Send full input history for multi-turn work. Set include_raw_response=true only for provider-payload debugging.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
userNo
inputNo
modelNo
toolsNo
top_pNo
streamNo
reasoningNo
extra_bodyNo
temperatureNo
tool_choiceNo
instructionsNo
top_logprobsNo
max_output_tokensNo
include_raw_responseNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
modelNo
usageNo
statusNo
messageNo
retryableNo
error_typeNo
suggestionNo
output_textNo
raw_responseNo
function_callsNo
reasoning_textNo
incomplete_detailsNo
stream_event_countNo

TDQS

A4/5.0
Behavior4/5

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

Annotations mark it openWorld (true) and non-idempotent/non-destructive, so the description needn't re-establish safety. It adds real value beyond them: the default model (deepseek-flash), the stateless nature, SSE streaming semantics, and the caveat that include_raw_response is debugging-only. It does not mention auth requirements, rate limits, or cost/latency implications of effort levels.

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?

Front-loaded with capability and default, then feature guidance, then the debugging caveat. Five dense sentences with essentially no filler. Slightly long, but every clause maps to a real parameter or behavior.

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?

The presence of an output schema excuses it from explaining return values, and it covers the highest-leverage knobs. However, for a 15-parameter, deeply nested, zero-coverage schema, the majority of tunables (sampling, token limits, output format, tool_choice) are undocumented, leaving meaningful gaps for correct invocation.

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 0% across 15 parameters, so the description carries the full semantic burden. It explains defaults and intent for model, input (text/image URL/base64/file_id), reasoning.effort, tools, stream, and include_raw_response, but leaves temperature, top_p, top_logprobs, max_output_tokens, instructions, user, text/format, tool_choice, and extra_body completely undocumented.

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 concrete verb+resource ('Create a stateless DeepSeek V4.1 response') and pins the API surface ('OpenAI-compatible Responses API'). The 'stateless' framing plus the Responses-API naming distinguishes it from siblings chat_completion and completion without needing to open either schema.

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

Usage Guidelines4/5

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

Gives actionable guidance for when to use specific features: reasoning.effort for thinking control, tools for function/web-search, stream=true for SSE aggregation, include_raw_response only for debugging, and full input history for multi-turn. It never names chat_completion/completion as the alternative, so the when-not-to-use side is left to inference.

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

delete_fileB
DestructiveIdempotent

Delete one uploaded DeepSeek image by file_id. This permanently removes that provider-side file reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
objectNo
statusNo
deletedNo
messageNo
retryableNo
error_typeNo
suggestionNo

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, idempotentHint=true, and openWorldHint=true, so the agent already knows this is a destructive, irreversible operation. The description reinforces permanence ('permanently removes') and clarifies that only the provider-side reference is deleted, which adds nuance but little beyond what the annotations supply.

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?

Two short sentences, the action and identifier front-loaded, with the destructive consequence stated immediately after. No filler or redundancy.

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

Completeness4/5

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

Return values need not be explained since an output schema exists, and annotations cover the safety profile, so the description is nearly sufficient. It could still note where a valid file_id is obtained or what happens when the id is unknown, but for a one-parameter mutation it is largely complete.

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 0% for the single required parameter, so the description must carry the load; it identifies file_id as referencing an uploaded DeepSeek image, which gives useful meaning. However, it omits the expected 'file-api-' format/constraint and does not say where the id comes from (e.g., upload_file or list_files).

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?

States a specific verb ('Delete') and resource ('one uploaded DeepSeek image' identified by file_id'), which clearly separates it from siblings like upload_file, list_files, and retrieve_file. It stops short of explicitly naming those alternatives, but the action and target are unambiguous.

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?

There is no when-to-use or when-not-to-use guidance, no prerequisites (e.g., ownership of the file), and no mention of alternatives such as re-uploading or listing files first. Usage is only implied by the verb 'Delete'.

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

get_user_balanceA
Read-onlyIdempotent

Return the current DeepSeek account balance and availability status. This tool takes no parameters and is read-only. Use it for account health checks when diagnosing provider-side failures.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
messageNo
retryableNo
error_typeNo
suggestionNo
is_availableNo
balance_infosNo

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the description's 'read-only' clause is redundant with structured data. The genuinely additive content is the mention of an 'availability status' return and the diagnostic framing, which is useful but modest given the rich annotations.

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?

Two front-loaded sentences with no padding; purpose comes first and the usage hint second. The 'takes no parameters and is read-only' clause slightly duplicates schema/annotation data, keeping it just short of perfect.

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?

With an output schema present, a parameterless input, and full annotation coverage, the description only needs to convey purpose and when to reach for it — both are stated. Nothing an agent needs to invoke it correctly is missing.

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?

Zero parameters, so the baseline is 4. The description correctly states 'takes no parameters,' which matches the empty schema and prevents an agent from guessing at inputs.

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 ('Return the current DeepSeek account balance and availability status'), which no sibling tool covers — siblings are chat/completion/file operations. An agent can immediately tell this is an account-diagnostic read.

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

Usage Guidelines4/5

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

Gives a clear selection condition: 'Use it for account health checks when diagnosing provider-side failures.' It does not name explicit exclusions, but no sibling overlaps semantically, so the routing guidance is sufficient.

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

list_conversationsA
Read-onlyIdempotent

List all conversation IDs currently stored in this MCP process memory. This tool takes no parameters and does not call the DeepSeek API. Useful for debugging conversation persistence behavior.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countNo
statusNo
messageNo
retryableNo
error_typeNo
suggestionNo
conversation_idsNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral facts beyond that: it takes no parameters and, notably, does not call the DeepSeek API, meaning it reads local process state rather than network data. Return format is covered by the existing output schema.

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?

Three short sentences, front-loaded with the core action and scope, followed by the no-param/no-API constraint and then the use case. No filler, every sentence carries distinct information.

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?

For a zero-parameter, read-only inspection tool with a full annotation set and an output schema, the description supplies everything needed: what is listed, where it comes from, that no API call occurs, and why one would use it.

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?

Zero parameters, so the baseline is 4. The description reinforces this by explicitly stating 'takes no parameters', which prevents an agent from inventing filter arguments that appear on sibling list tools.

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 (List) and resource (conversation IDs) and pins the scope precisely to 'currently stored in this MCP process memory', which separates it from the API-backed siblings like chat_completion and reset_conversation. An agent can identify what it returns without opening the schema.

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

Usage Guidelines4/5

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

Gives clear usage context ('Useful for debugging conversation persistence behavior') so the agent knows when it applies, but names no alternatives or exclusions (e.g., that it only shows in-process conversations versus remote ones). Clear context without routing guidance.

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

list_filesA
Read-onlyIdempotent

List images uploaded to the DeepSeek Files API. Supports cursor pagination, creation-time order, and the user_data purpose filter.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNo
limitNo
orderNo
purposeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
objectNo
statusNo
last_idNo
messageNo
first_idNo
has_moreNo
retryableNo
error_typeNo
suggestionNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered externally. The description adds that pagination is cursor-based and ordering is by creation time, which is useful behavior context, but says nothing about page size limits or result boundaries.

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?

Two tight sentences with the core purpose front-loaded and capabilities following. No filler, no restatement of the title.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and the annotations cover the safety profile. Pagination, ordering, and the purpose filter are covered, but `limit` semantics are absent, leaving a small gap for a 4-parameter list tool.

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 0%, so the description must carry the load; it clarifies that `after` is a cursor, `order` is creation-time ordering, and `purpose` filters to user_data. It omits the `limit` parameter entirely and gives no format or syntax detail, so it only partially compensates for the coverage gap.

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?

States a specific verb and resource ("List images uploaded to the DeepSeek Files API"), which is unambiguous about what the tool returns. It does not name or contrast itself against siblings like retrieve_file or list_conversations, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies the read/list use case but offers no explicit when-to-use or when-not-to-use guidance, and never mentions the alternative tools (retrieve_file, delete_file, upload_file) that an agent might confuse it with. Usage is inferable rather than stated.

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

list_modelsA
Read-onlyIdempotent

List available DeepSeek models for model selection and validation. This tool takes no parameters. Use it before passing an explicit model ID to generation tools.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
objectNo
statusNo
messageNo
retryableNo
error_typeNo
suggestionNo

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered. The description's only behavioral addition is 'takes no parameters', which the schema already shows, and it says nothing about freshness/caching of the model list or whether the catalog is dynamic across the open world.

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?

Three short sentences, front-loaded with the purpose and ending with the actionable instruction. The middle sentence restates the empty schema, which is mildly redundant, keeping it just under full marks.

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

Completeness4/5

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

An output schema exists, so return-value shape need not be explained, and a no-parameter list tool needs little more than purpose and timing. The description covers both, though it omits any hint about catalog freshness or how returned IDs should be matched.

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?

With zero parameters and 100% schema coverage, the baseline is 4. The statement 'This tool takes no parameters' reinforces what the empty schema already conveys but adds no new parameter meaning.

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?

States a specific verb and resource: 'List available DeepSeek models', with the added scope of 'for model selection and validation'. It loosely differentiates itself from the generation siblings by positioning itself as a pre-step to them, but it never names a specific sibling tool, so differentiation is directional rather than explicit.

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

Usage Guidelines4/5

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

Explicitly gives a when-to-use condition: 'Use it before passing an explicit model ID to generation tools.' That is actionable guidance, though there is no when-not or named alternative (e.g., a cached static list), so it falls short of a full routing statement.

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

reset_conversationA
DestructiveIdempotent

Delete stored in-memory chat history for a conversation_id. Use this when you want to keep the same ID but start a fresh thread. This only affects server-side memory in the current MCP process.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo
messageNo
removedNo
retryableNo
error_typeNo
suggestionNo
conversation_idNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is known. The description adds real value beyond them by scoping the destruction to server-side memory 'in the current MCP process' and clarifying the conversation_id itself survives, which an agent could not infer from annotations alone.

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?

Three short sentences, front-loaded with the core action, then usage intent, then scope limitation. Every sentence earns its place with no redundancy.

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

Completeness4/5

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

For a single-param destructive reset with an output schema present, the description covers action, intent, and blast radius adequately. The only minor gap is behavior when the conversation_id doesn't exist, but return values are handled by the output schema.

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 coverage is 0% and there is one required param, but the description clarifies the semantics of conversation_id: it is the identifier of the thread whose history is erased, and it remains valid afterward. That is meaningful added meaning, though it doesn't state the format or error behavior for unknown IDs.

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 (Delete) and resource (stored in-memory chat history) scoped to a conversation_id, and is clearly distinguishable from siblings like delete_file or list_conversations. The 'in-memory' qualifier immediately frames what kind of history is affected.

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

Usage Guidelines4/5

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

Provides clear when-to-use context: 'Use this when you want to keep the same ID but start a fresh thread.' This tells the agent the intent (reset rather than delete the conversation), though it names no explicit alternative sibling tool for the opposite case.

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

retrieve_fileB
Read-onlyIdempotent

Retrieve metadata for one DeepSeek Files API image by file_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
bytesNo
objectNo
statusNo
messageNo
purposeNo
filenameNo
retryableNo
created_atNo
error_typeNo
expires_atNo
suggestionNo

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety and repeat-call profile is fully covered structurally. The description adds only that it returns metadata (not file bytes) for a single image, which is a modest but real clarification beyond annotations; it says nothing about permission requirements or error behavior for a missing id.

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?

One sentence, front-loaded with the verb and resource and back-loaded with the identifier; there is no filler whatsoever.

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

Completeness4/5

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

With an output schema present, return values need not be described, and annotations cover the safety profile. The remaining gap is minor: how the id is obtained and whether the tool is limited to images are left implicit, but nothing required to invoke it correctly is missing.

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 0% and the single parameter carries only a regex pattern, so the description does the naming work by stating the lookup is 'by file_id'. However, it adds no meaning beyond the parameter name — it does not explain the expected 'file-api-' prefix format or that the id comes from upload_file/list_files.

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 names a specific verb (Retrieve), a precise resource (metadata for one image), and the identifier used to select it (file_id), which separates it from the plural list_files and the mutating delete_file/upload_file siblings. It stops short of explicitly contrasting itself with list_files or stating whether non-image files are handled, so it is clear but not fully sibling-differentiated.

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?

There is no guidance on when to call this versus list_files or upload_file, no prerequisites, and no exclusions. The only implicit cue is that it fetches a single known file, which the agent must infer from the wording.

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

upload_fileA

Upload a JPEG, PNG, GIF, or WebP image to DeepSeek and return a reusable file_id. Supply base64 image data directly; server-local file paths are intentionally not accepted. Optional expiry is 3,600 to 2,592,000 seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes
file_dataYes
expires_after_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
bytesNo
objectNo
statusNo
messageNo
purposeNo
filenameNo
retryableNo
created_atNo
error_typeNo
expires_atNo
suggestionNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare write/non-idempotent/open-world semantics, so the bar is lower; the description still adds real value by disclosing the accepted formats, the base64-only input restriction, the reusable file_id return, and the expiry window bounds (3,600–2,592,000s). It omits size limits, auth requirements, and what happens to the file when expiry elapses.

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?

Three short sentences, front-loaded with purpose and return value, then the input constraint, then the expiry detail. No filler, no repetition of the tool name, and each sentence carries distinct information.

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

Completeness4/5

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

An output schema exists, so return-value documentation is not strictly required (the file_id mention is a bonus). For a 3-parameter upload tool the description covers formats, input mode, and expiry adequately, though it leaves file-size limits and any permission/auth prerequisites unaddressed.

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 0%, so the description must compensate, and it largely does: it explains file_data must be base64 image data of a listed type, and that expires_after_seconds is optional with a 3,600–2,592,000 second range. The filename parameter's role and its 512-character cap are left unstated.

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 precise verb+resource ('Upload a JPEG, PNG, GIF, or WebP image to DeepSeek') and names the concrete artifact returned ('a reusable `file_id`'). This is unmistakably distinct from the sibling read/delete operations (list_files, retrieve_file, delete_file) without needing to name them.

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

Usage Guidelines3/5

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

Gives one hard input constraint ('Supply base64 image data directly; server-local file paths are intentionally not accepted') which steers how to call it, but never states when to prefer this tool over siblings or what precondition must hold (e.g. a file_id is needed by a later chat call). Usage context is implied rather than explicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.1
    • Changedchat_completion8 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / message / anyOf
        Added value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "text": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "text",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "text"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "image_url": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "detail": {
        +                  "enum": [
        +                    "low",
        +                    "high",
        +                    "original",
        +                    "auto"
        +                  ],
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "image_url",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "image_url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "file_data": {
        +              "type": "string"
        +            },
        +            "file_id": {
        +              "pattern": "^file-api-[a-zA-Z0-9_-]+$",
        +              "type": "string"
        +            },
        +            "filename": {
        +              "maxLength": 512,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "file",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type"
        +          ],
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / message / minLength
        Removed value: -1
      • removedInput schema / properties / message / type
        Removed value: -"string"
      • changedInput schema / properties / messages / items / properties / content / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "text": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "text",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "text"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "image_url": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "detail": {
        +                  "enum": [
        +                    "low",
        +                    "high",
        +                    "original",
        +                    "auto"
        +                  ],
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "image_url",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "image_url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "file_data": {
        +              "type": "string"
        +            },
        +            "file_id": {
        +              "pattern": "^file-api-[a-zA-Z0-9_-]+$",
        +              "type": "string"
        +            },
        +            "filename": {
        +              "maxLength": 512,
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "file",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type"
        +          ],
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / model / default
        Previous value: -"deepseek-v4-flash"New value: +"deepseek-flash"
      • changedInput schema / properties / reasoning_effort / enum
        Previous value: -[
        -  "low",
        -  "high",
        -  "max"
        -]New value: +[
        +  "none",
        +  "minimal",
        +  "low",
        +  "medium",
        +  "high",
        +  "xhigh",
        +  "max"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "conversation_id": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "error_type": {
        +      "enum": [
        +        "deepseek_api_error",
        +        "tool_execution_error"
        +      ],
        +      "type": "string"
        +    },
        +    "finish_reason": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "type": "string"
        +    },
        +    "raw_response": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "reasoning_content": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "response_text": {
        +      "type": "string"
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "stream_chunk_count": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    },
        +    "tool_calls": {
        +      "items": {
        +        "additionalProperties": {},
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "usage": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcompletion3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / model / default
        Previous value: -"deepseek-v4-pro"New value: +"deepseek-flash"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "error_type": {
        +      "enum": [
        +        "deepseek_api_error",
        +        "tool_execution_error"
        +      ],
        +      "type": "string"
        +    },
        +    "finish_reason": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "type": "string"
        +    },
        +    "raw_response": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "stream_chunk_count": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    },
        +    "text": {
        +      "type": "string"
        +    },
        +    "usage": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedcreate_response3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / input / anyOf
        Previous value: -[
        -  {
        -    "minLength": 1,
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "anyOf": [
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "content": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "items": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": {},
        -                        "properties": {
        -                          "text": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "type": {
        -                            "const": "input_text",
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "type",
        -                          "text"
        -                        ],
        -                        "type": "object"
        -                      },
        -                      {
        -                        "additionalProperties": {},
        -                        "properties": {
        -                          "text": {
        -                            "minLength": 1,
        -                            "type": "string"
        -                          },
        -                          "type": {
        -                            "const": "output_text",
        -                            "type": "string"
        -                          }
        -                        },
        -                        "required": [
        -                          "type",
        -                          "text"
        -                        ],
        -                        "type": "object"
        -                      }
        -                    ]
        -                  },
        -                  "minItems": 1,
        -                  "type": "array"
        -                }
        -              ]
        -            },
        -            "role": {
        -              "enum": [
        -                "user",
        -                "assistant",
        -                "system",
        -                "developer"
        -              ],
        -              "type": "string"
        -            },
        -            "type": {
        -              "const": "message",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "role",
        -            "content"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "arguments": {
        -              "type": "string"
        -            },
        -            "call_id": {
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "name": {
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "type": {
        -              "const": "function_call",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "call_id",
        -            "name",
        -            "arguments"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "call_id": {
        -              "minLength": 1,
        -              "type": "string"
        -            },
        -            "output": {
        -              "type": "string"
        -            },
        -            "type": {
        -              "const": "function_call_output",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "call_id",
        -            "output"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "content": {
        -              "items": {
        -                "additionalProperties": {},
        -                "properties": {
        -                  "text": {
        -                    "minLength": 1,
        -                    "type": "string"
        -                  },
        -                  "type": {
        -                    "const": "reasoning_text",
        -                    "type": "string"
        -                  }
        -                },
        -                "required": [
        -                  "type",
        -                  "text"
        -                ],
        -                "type": "object"
        -              },
        -              "minItems": 1,
        -              "type": "array"
        -            },
        -            "type": {
        -              "const": "reasoning",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type",
        -            "content"
        -          ],
        -          "type": "object"
        -        },
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "type": {
        -              "const": "web_search_call",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "type"
        -          ],
        -          "type": "object"
        -        }
        -      ]
        -    },
        -    "minItems": 1,
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "content": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "items": {
        +                    "anyOf": [
        +                      {
        +                        "anyOf": [
        +                          {
        +                            "additionalProperties": {},
        +                            "properties": {
        +                              "text": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "type": {
        +                                "const": "input_text",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "text"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "additionalProperties": {},
        +                            "properties": {
        +                              "text": {
        +                                "minLength": 1,
        +                                "type": "string"
        +                              },
        +                              "type": {
        +                                "const": "output_text",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "text"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ]
        +                      },
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "detail": {
        +                            "enum": [
        +                              "low",
        +                              "high",
        +                              "original",
        +                              "auto"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "file_id": {
        +                            "pattern": "^file-api-[a-zA-Z0-9_-]+$",
        +                            "type": "string"
        +                          },
        +                          "image_url": {
        +                            "type": "string"
        +                          },
        +                          "type": {
        +                            "const": "input_image",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "type"
        +                        ],
        +                        "type": "object"
        +                      }
        +                    ]
        +                  },
        +                  "minItems": 1,
        +                  "type": "array"
        +                }
        +              ]
        +            },
        +            "role": {
        +              "enum": [
        +                "user",
        +                "assistant",
        +                "system",
        +                "developer"
        +              ],
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "message",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "role",
        +            "content"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "arguments": {
        +              "type": "string"
        +            },
        +            "call_id": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "name": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "function_call",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "call_id",
        +            "name",
        +            "arguments"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "call_id": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "output": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "items": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "text": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "type": {
        +                            "const": "input_text",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "type",
        +                          "text"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "detail": {
        +                            "enum": [
        +                              "low",
        +                              "high",
        +                              "original",
        +                              "auto"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "file_id": {
        +                            "pattern": "^file-api-[a-zA-Z0-9_-]+$",
        +                            "type": "string"
        +                          },
        +                          "image_url": {
        +                            "type": "string"
        +                          },
        +                          "type": {
        +                            "const": "input_image",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "type"
        +                        ],
        +                        "type": "object"
        +                      }
        +                    ]
        +                  },
        +                  "minItems": 1,
        +                  "type": "array"
        +                }
        +              ]
        +            },
        +            "type": {
        +              "const": "function_call_output",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "call_id",
        +            "output"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "call_id": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "input": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "custom_tool_call",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "call_id",
        +            "name",
        +            "input"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "call_id": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "output": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "items": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "text": {
        +                            "minLength": 1,
        +                            "type": "string"
        +                          },
        +                          "type": {
        +                            "const": "input_text",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "type",
        +                          "text"
        +                        ],
        +                        "type": "object"
        +                      },
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "detail": {
        +                            "enum": [
        +                              "low",
        +                              "high",
        +                              "original",
        +                              "auto"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "file_id": {
        +                            "pattern": "^file-api-[a-zA-Z0-9_-]+$",
        +                            "type": "string"
        +                          },
        +                          "image_url": {
        +                            "type": "string"
        +                          },
        +                          "type": {
        +                            "const": "input_image",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "required": [
        +                          "type"
        +                        ],
        +                        "type": "object"
        +                      }
        +                    ]
        +                  },
        +                  "minItems": 1,
        +                  "type": "array"
        +                }
        +              ]
        +            },
        +            "type": {
        +              "const": "custom_tool_call_output",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "call_id",
        +            "output"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "content": {
        +              "items": {
        +                "additionalProperties": {},
        +                "properties": {
        +                  "text": {
        +                    "minLength": 1,
        +                    "type": "string"
        +                  },
        +                  "type": {
        +                    "const": "reasoning_text",
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "type",
        +                  "text"
        +                ],
        +                "type": "object"
        +              },
        +              "minItems": 1,
        +              "type": "array"
        +            },
        +            "type": {
        +              "const": "reasoning",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type",
        +            "content"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "type": {
        +              "const": "web_search_call",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "type"
        +          ],
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "error": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "error_type": {
        +      "enum": [
        +        "deepseek_api_error",
        +        "tool_execution_error"
        +      ],
        +      "type": "string"
        +    },
        +    "function_calls": {
        +      "items": {
        +        "additionalProperties": {},
        +        "propertyNames": {
        +          "type": "string"
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "incomplete_details": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "model": {
        +      "type": "string"
        +    },
        +    "output_text": {
        +      "type": "string"
        +    },
        +    "raw_response": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "reasoning_text": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "stream_event_count": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    },
        +    "usage": {
        +      "anyOf": [
        +        {},
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "type": "object"
        +}
    • Addeddelete_file
    • Changedget_user_balance2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "balance_infos": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "currency": {
        +            "type": "string"
        +          },
        +          "granted_balance": {
        +            "type": "string"
        +          },
        +          "topped_up_balance": {
        +            "type": "string"
        +          },
        +          "total_balance": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "currency",
        +          "total_balance",
        +          "granted_balance",
        +          "topped_up_balance"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error_type": {
        +      "enum": [
        +        "deepseek_api_error",
        +        "tool_execution_error"
        +      ],
        +      "type": "string"
        +    },
        +    "is_available": {
        +      "type": "boolean"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedlist_conversations2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "conversation_ids": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "count": {
        +      "maximum": 9007199254740991,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "error_type": {
        +      "enum": [
        +        "deepseek_api_error",
        +        "tool_execution_error"
        +      ],
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedlist_files
    • Changedlist_models2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "data": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "created": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "object": {
        +            "type": "string"
        +          },
        +          "owned_by": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "object"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "error_type": {
        +      "enum": [
        +        "deepseek_api_error",
        +        "tool_execution_error"
        +      ],
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "object": {
        +      "type": "string"
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedreset_conversation2 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "conversation_id": {
        +      "type": "string"
        +    },
        +    "error_type": {
        +      "enum": [
        +        "deepseek_api_error",
        +        "tool_execution_error"
        +      ],
        +      "type": "string"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "removed": {
        +      "type": "boolean"
        +    },
        +    "retryable": {
        +      "type": "boolean"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "suggestion": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedretrieve_file
    • Addedupload_file
  2. 2 tool updatesv0.6.0
    • Changedchat_completion2 fields changed
      • changedInput schema / properties / reasoning_effort / enum
        Previous value: -[
        -  "high",
        -  "max"
        -]New value: +[
        +  "low",
        +  "high",
        +  "max"
        +]
      • addedInput schema / properties / user_id
        Added value: +{
        +  "maxLength": 512,
        +  "minLength": 1,
        +  "pattern": "^[a-zA-Z0-9_-]+$",
        +  "type": "string"
        +}
    • Addedcreate_response
  3. 7 tool updatesv0.5.0
    • Changedchat_completion32 fields changed
      • addedInput schema / properties / clear_conversation
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / extra_body
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • removedInput schema / properties / frequency_penalty / default
        Removed value: -0.1
      • addedInput schema / properties / include_raw_response
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / logprobs
        Added value: +{
        +  "type": "boolean"
        +}
      • removedInput schema / properties / max_tokens / default
        Removed value: -8000
      • addedInput schema / properties / message / minLength
        Added value: +1
      • addedInput schema / properties / messages / items / additionalProperties
        Added value: +{}
      • addedInput schema / properties / messages / items / properties / content / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / messages / items / properties / content / type
        Removed value: -"string"
      • addedInput schema / properties / messages / items / properties / name
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / messages / items / properties / prefix
        Added value: +{
        +  "type": "boolean"
        +}
      • addedInput schema / properties / messages / items / properties / reasoning_content
        Added value: +{
        +  "type": "string"
        +}
      • changedInput schema / properties / messages / items / properties / role / enum
        Previous value: -[
        -  "system",
        -  "user",
        -  "assistant"
        -]New value: +[
        +  "system",
        +  "user",
        +  "assistant",
        +  "tool"
        +]
      • addedInput schema / properties / messages / items / properties / tool_call_id
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / messages / items / properties / tool_calls
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / messages / items / required
        Previous value: -[
        -  "role",
        -  "content"
        -]New value: +[
        +  "role"
        +]
      • addedInput schema / properties / messages / minItems
        Added value: +1
      • changedInput schema / properties / model / default
        Previous value: -"deepseek-reasoner"New value: +"deepseek-v4-flash"
      • removedInput schema / properties / presence_penalty / default
        Removed value: -0
      • addedInput schema / properties / reasoning_effort
        Added value: +{
        +  "enum": [
        +    "high",
        +    "max"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / response_format
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "type": {
        +      "enum": [
        +        "text",
        +        "json_object"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "type"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / stop
        Added value: +{
        +  "anyOf": [
        +    {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    {
        +      "items": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "maxItems": 16,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  ]
        +}
      • addedInput schema / properties / stream
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / stream_options
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "include_usage": {
        +      "type": "boolean"
        +    }
        +  },
        +  "type": "object"
        +}
      • removedInput schema / properties / temperature / default
        Removed value: -0.7
      • addedInput schema / properties / thinking
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "type": {
        +      "enum": [
        +        "enabled",
        +        "disabled"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / tool_choice
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "none",
        +        "auto",
        +        "required"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "additionalProperties": {},
        +      "properties": {
        +        "function": {
        +          "additionalProperties": {},
        +          "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": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "function": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          "parameters": {
        +            "additionalProperties": {},
        +            "propertyNames": {
        +              "type": "string"
        +            },
        +            "type": "object"
        +          },
        +          "strict": {
        +            "type": "boolean"
        +          }
        +        },
        +        "required": [
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": {
        +        "const": "function",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "type",
        +      "function"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / top_logprobs
        Added value: +{
        +  "maximum": 20,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / top_p / default
        Removed value: -1
    • Addedcompletion
    • Addedget_user_balance
    • Addedlist_conversations
    • Addedlist_models
    • Removedmulti_turn_chat
    • Addedreset_conversation
  4. 2 tool updatesv1.0.0
    • First observedchat_completion
    • First observedmulti_turn_chat

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation4/5

The three generation tools (chat_completion, completion, create_response) have overlapping capabilities like text/image input and multi-turn support, which could cause confusion. However, their descriptions clearly differentiate use cases (chat vs FIM vs stateless Responses API), and all other tools target distinct resources or actions.

Naming Consistency4/5

Nine of eleven tools follow a consistent verb_noun pattern (e.g., list_models, upload_file, delete_file). The two exceptions (chat_completion and completion) are noun-only names, but they are conventional and readable, making the set mostly predictable.

Tool Count5/5

The server provides 11 tools, which is well within the ideal 3–15 range. Each tool covers a distinct aspect of the DeepSeek API (generation, file management, account info, conversation memory), with no obvious redundancy or bloat.

Completeness4/5

The surface covers core generation, file CRUD (upload/list/retrieve/delete), model listing, balance check, and conversation memory management. Minor gaps include no explicit update or detailed inspection of conversations, but these are not critical for typical workflows.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers