Skip to main content
Glama

AIsa Web Search & Research

Sonar Deep Research

post_perplexity_sonar_deep_research
Destructive

Commission a report: this endpoint runs many searches and writes a long, cited document. model (required, sonar-deep-research) and messages in; choices[0].message.content, citations, search_results[] and usage out, where usage also reports num_search_queries and reasoning_tokens. Many clients time out well before it answers, so call it only when a report is genuinely the deliverable, and never in a loop. For anything you would read in one sitting, the other three Perplexity endpoints answer in seconds.

Usage-based billing; Default request estimate: $0.23932 USD (not a fixed price). Account-specific pricing and final settlement may differ.

Input Schema

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / body
      Added value: +{
      +  "properties": {
      +    "frequency_penalty": {
      +      "default": 1,
      +      "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
      +      "maximum": 2,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "max_tokens": {
      +      "description": "The maximum number of tokens to generate in the response.",
      +      "type": "integer"
      +    },
      +    "messages": {
      +      "description": "A list of messages comprising the conversation so far.",
      +      "items": {
      +        "properties": {
      +          "content": {
      +            "description": "The content of the message.",
      +            "type": "string"
      +          },
      +          "role": {
      +            "description": "The role of the message author.",
      +            "enum": [
      +              "system",
      +              "user",
      +              "assistant"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "role",
      +          "content"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "model": {
      +      "description": "The Sonar model to use.",
      +      "enum": [
      +        "sonar",
      +        "sonar-pro",
      +        "sonar-reasoning-pro",
      +        "sonar-deep-research"
      +      ],
      +      "type": "string"
      +    },
      +    "presence_penalty": {
      +      "default": 0,
      +      "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
      +      "maximum": 2,
      +      "minimum": -2,
      +      "type": "number"
      +    },
      +    "return_citations": {
      +      "default": true,
      +      "description": "Whether to return citations and search results in the response.",
      +      "type": "boolean"
      +    },
      +    "search_context": {
      +      "default": "low",
      +      "description": "Controls how much search context to use. Affects per-request cost.",
      +      "enum": [
      +        "low",
      +        "medium",
      +        "high"
      +      ],
      +      "type": "string"
      +    },
      +    "search_domain_filter": {
      +      "description": "Limit search to specific domains.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "search_recency_filter": {
      +      "description": "Filter search results by recency.",
      +      "enum": [
      +        "month",
      +        "week",
      +        "day",
      +        "hour"
      +      ],
      +      "type": "string"
      +    },
      +    "stream": {
      +      "default": false,
      +      "description": "Whether to stream the response using server-sent events.",
      +      "type": "boolean"
      +    },
      +    "temperature": {
      +      "default": 0.2,
      +      "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
      +      "maximum": 2,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    "top_k": {
      +      "default": 0,
      +      "description": "The number of tokens to keep for top-k filtering.",
      +      "maximum": 2048,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "top_p": {
      +      "default": 0.9,
      +      "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
      +      "maximum": 1,
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "model",
      +    "messages"
      +  ],
      +  "type": "object"
      +}
    • removedInput schema / properties / frequency_penalty
      Removed value: -{
      -  "default": 1,
      -  "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
      -  "maximum": 2,
      -  "minimum": 0,
      -  "type": "number"
      -}
    • removedInput schema / properties / max_tokens
      Removed value: -{
      -  "description": "The maximum number of tokens to generate in the response.",
      -  "type": "integer"
      -}
    • removedInput schema / properties / messages
      Removed value: -{
      -  "description": "A list of messages comprising the conversation so far.",
      -  "items": {
      -    "properties": {
      -      "content": {
      -        "description": "The content of the message.",
      -        "type": "string"
      -      },
      -      "role": {
      -        "description": "The role of the message author.",
      -        "enum": [
      -          "system",
      -          "user",
      -          "assistant"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "role",
      -      "content"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedInput schema / properties / model
      Removed value: -{
      -  "description": "The Sonar model to use.",
      -  "enum": [
      -    "sonar",
      -    "sonar-pro",
      -    "sonar-reasoning-pro",
      -    "sonar-deep-research"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / presence_penalty
      Removed value: -{
      -  "default": 0,
      -  "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
      -  "maximum": 2,
      -  "minimum": -2,
      -  "type": "number"
      -}
    • removedInput schema / properties / return_citations
      Removed value: -{
      -  "default": true,
      -  "description": "Whether to return citations and search results in the response.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / search_context
      Removed value: -{
      -  "default": "low",
      -  "description": "Controls how much search context to use. Affects per-request cost.",
      -  "enum": [
      -    "low",
      -    "medium",
      -    "high"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / search_domain_filter
      Removed value: -{
      -  "description": "Limit search to specific domains.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedInput schema / properties / search_recency_filter
      Removed value: -{
      -  "description": "Filter search results by recency.",
      -  "enum": [
      -    "month",
      -    "week",
      -    "day",
      -    "hour"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / stream
      Removed value: -{
      -  "default": false,
      -  "description": "Whether to stream the response using server-sent events.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / temperature
      Removed value: -{
      -  "default": 0.2,
      -  "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
      -  "maximum": 2,
      -  "minimum": 0,
      -  "type": "number"
      -}
    • removedInput schema / properties / top_k
      Removed value: -{
      -  "default": 0,
      -  "description": "The number of tokens to keep for top-k filtering.",
      -  "maximum": 2048,
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • removedInput schema / properties / top_p
      Removed value: -{
      -  "default": 0.9,
      -  "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
      -  "maximum": 1,
      -  "minimum": 0,
      -  "type": "number"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "model",
      -  "messages"
      -]New value: +[
      +  "body"
      +]
  2. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Adds behavior beyond the annotations: the operation takes long enough that 'many clients time out well before it answers', must not be looped, and carries usage-based billing with a concrete default estimate. It does not explain why the tool is flagged destructiveHint=true (a surprising trait for a research call) or address auth requirements, so it falls just short of full disclosure.

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 the purpose, then scope limits, then alternatives — dense and largely waste-free. The sentence enumerating `choices[0].message.content`, `citations`, `search_results[]` and `usage` is partly redundant given an output schema exists, which costs a little tightness.

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 high-latency, high-cost, open-world POST with an output schema and rich annotations, the description covers purpose, inputs, outputs, latency, cost, and routing alternatives. Nothing an agent needs before deciding to call it 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?

With a single top-level `body` parameter and reported 0% schema coverage, the description compensates by naming the required inputs and pinning the model choice to `sonar-deep-research` — a constraint the schema's four-value enum does not enforce. It stays silent on the sampling, search-context, and domain-filter sub-parameters, which are the ones most likely to be mis-set.

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?

The description gives a specific verb and artifact: 'Commission a report: this endpoint runs many searches and writes a long, cited document.' It also differentiates from siblings by contrasting with 'the other three Perplexity endpoints' that 'answer in seconds', so an agent can place it relative to post_perplexity_sonar, sonar_pro, and sonar_reasoning_pro without opening a schema.

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

Usage Guidelines5/5

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

Explicit when-to-use and when-not: 'call it only when a report is genuinely the deliverable, and never in a loop', with a named alternative class for lighter needs. Both the positive condition and the exclusion are stated, which is exactly what routing between four near-identical Sonar siblings requires.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources