Skip to main content
Glama

AIsa Web Search & Research

Sonar Reasoning Pro

post_perplexity_sonar_reasoning_pro
Destructive

Ask a question that has to be worked through, not just looked up, and get a step-by-step answer backed by web search. Same shape as the other Perplexity endpoints — model (required, sonar-reasoning-pro) and messages in; choices[0].message.content, citations, search_results[] and usage out. Use it for comparison, causation and analysis. When the question is simply what is the case, post_perplexity_sonar is faster; when you need a long report over many sources rather than an answer, post_perplexity_sonar_deep_research.

Usage-based billing; Default request estimate: $0.03499 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?

Annotations already declare the open-world, non-idempotent, destructive-cost profile, so the bar is lower; the description still adds the input contract (model must be `sonar-reasoning-pro`, messages in) and the output contract (`choices[0].message.content`, `citations`, `search_results[]`, `usage`). The embedded pricing note also flags usage-based billing. It stops short of auth, rate-limit, or streaming behavior details.

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?

Purpose, then I/O shape, then sibling routing — a front-loaded ordering with no throwaway sentences. The only non-authored text is the vendor pricing block, which is boilerplate the author cannot condense.

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, the description is not obligated to document returns, yet it does so briefly, and annotations carry the safety profile. For a nested 13-property body it names only the required pair, but combined with schema descriptions and the sibling routing it is sufficient to call the tool correctly.

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?

Top-level schema coverage is reported at 0% (the `body` wrapper is undocumented), so the description must compensate, and it does by pinning the required enum value for `model` and describing the `messages` input shape. It adds no guidance on the optional tuning knobs (`search_context`, `top_k`, `return_citations`), which the nested schema does document.

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 names a specific verb and resource — ask a question that requires reasoning and receive a step-by-step, web-search-backed answer — rather than a generic 'query' framing. It explicitly distinguishes itself from two siblings by naming them (`post_perplexity_sonar` for lookups, `post_perplexity_sonar_deep_research` for long reports), so an agent can place it precisely in the family.

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?

It gives positive use cases (comparison, causation, analysis) and explicit exclusions with the routing alternative for each: simple factual questions go to `post_perplexity_sonar`, long multi-source reports go to `post_perplexity_sonar_deep_research`. A negation and its counterpart tool are both stated, leaving nothing to inference.

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