Skip to main content
Glama
This connector has been deprecated

Duplicate listing. The official PumpGTM connector is https://glama.ai/mcp/connectors/com.pumpgtm/mcp (same server, https://mcp.pumpgtm.com/mcp).

One AI search question

get_ai_search_question
Read-onlyIdempotent

Returns question (the tracked question) and answers (its latest answer from each engine): whether it names the company, sentiment, position, the passage that mentions it, competitors named, cited pages and what the engine searched for. Answer text is cut to 1,000 characters; get_ai_search_answer reads it in full. Engines without an answer are in noAnswerYet with the status of their last check; answersInProgress counts answers still being asked. Read-only and free.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "questionId": "<questionId>"
    },
    "name": "get_ai_search_question"
  }
}

Input Schema

NameRequiredDescriptionDefault
questionIdYesA tracked question's questionId, from get_ai_search_overview questions or add_ai_search_questions.
workspaceIdNoA teammate's workspace you may manage: an active workspace ID from list_team_workspaces. Omit for your own workspace. Supply on every call for a teammate.

Output Schema

NameRequiredDescriptionDefault
answersYesThe latest answer from each engine, text cut to 1,000 characters.
questionYesThe tracked question.
noAnswerYetYesChosen engines with no answer yet and the status of their last check.
answersInProgressYesAnswers still being asked.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / questionId / description
      Previous value: -"A tracked question's questionId."New value: +"A tracked question's questionId, from get_ai_search_overview questions or add_ai_search_questions."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "answers": {
      +      "description": "The latest answer from each engine, text cut to 1,000 characters.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "answerId": {
      +            "description": "Pass to get_ai_search_answer for the full text.",
      +            "type": "string"
      +          },
      +          "answeredAt": {
      +            "description": "When the engine answered (ISO time); null when not recorded.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "citationCount": {
      +            "description": "How many pages it cites in total.",
      +            "type": "number"
      +          },
      +          "citations": {
      +            "description": "Pages the answer cites (up to 10 here, up to 50 in get_ai_search_answer).",
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "category": {
      +                  "description": "Who owns the page, as the customer acts on it: own, competitor, ugc (community post to join), review (listing to claim), reference, news or other (often a list to pitch).",
      +                  "type": "string"
      +                },
      +                "competitor": {
      +                  "description": "The tracked competitor that owns the page; null otherwise.",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "domain": {
      +                  "description": "The cited page's domain.",
      +                  "type": "string"
      +                },
      +                "rank": {
      +                  "description": "The citation's order in the answer (1 is first).",
      +                  "type": "number"
      +                },
      +                "title": {
      +                  "description": "The cited page's title; null when unknown.",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "url": {
      +                  "description": "The cited page.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "rank",
      +                "url",
      +                "domain",
      +                "title",
      +                "category",
      +                "competitor"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "competitorsNamed": {
      +            "description": "Tracked competitors the answer names, first named first.",
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "name": {
      +                  "description": "The tracked competitor's name.",
      +                  "type": "string"
      +                },
      +                "position": {
      +                  "description": "Where it is named among tracked companies (1 is first); null when unknown.",
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "sentiment": {
      +                  "description": "How the answer treats it: positive, neutral, negative or mixed; null when not judged.",
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "name",
      +                "position",
      +                "sentiment"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "engine": {
      +            "description": "The AI engine that answered, such as chatgpt or perplexity.",
      +            "type": "string"
      +          },
      +          "mentionsYou": {
      +            "description": "Whether the answer names the company; null until it has been read.",
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "position": {
      +            "description": "Where the company is named among tracked companies (1 is first); null when not named.",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "questionId": {
      +            "description": "The tracked question this answers.",
      +            "type": "string"
      +          },
      +          "quote": {
      +            "description": "The passage that names the company (up to 600 characters); null when it doesn't.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "searchedFor": {
      +            "description": "What the engine searched the web for to answer (up to 10); useful topics to write about.",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "sentiment": {
      +            "description": "How the answer treats the company when it names it: positive, neutral, negative or mixed; null when not named or not judged.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "completed when it was read and judged; failed when it was saved but couldn't be judged (it then has no mentionsYou).",
      +            "type": "string"
      +          },
      +          "text": {
      +            "description": "The answer text, cut to this tool's length.",
      +            "type": "string"
      +          },
      +          "textTruncated": {
      +            "description": "True when text was cut; get_ai_search_answer reads it in full.",
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "answerId",
      +          "questionId",
      +          "engine",
      +          "status",
      +          "answeredAt",
      +          "mentionsYou",
      +          "sentiment",
      +          "position",
      +          "quote",
      +          "competitorsNamed",
      +          "citations",
      +          "citationCount",
      +          "searchedFor",
      +          "text",
      +          "textTruncated"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "answersInProgress": {
      +      "description": "Answers still being asked.",
      +      "type": "number"
      +    },
      +    "noAnswerYet": {
      +      "description": "Chosen engines with no answer yet and the status of their last check.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "engine": {
      +            "description": "A chosen engine with no answer yet.",
      +            "type": "string"
      +          },
      +          "reason": {
      +            "description": "For failed: why, such as engine_unavailable or answer_unreadable; null otherwise.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "Its last check: not_checked, queued, running, answered (being read) or failed.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "engine",
      +          "status",
      +          "reason"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "question": {
      +      "additionalProperties": {},
      +      "description": "The tracked question.",
      +      "properties": {
      +        "branded": {
      +          "description": "True when the question names the company; branded questions don't count toward topics.",
      +          "type": "boolean"
      +        },
      +        "createdAt": {
      +          "description": "When it started being tracked (ISO time).",
      +          "type": "string"
      +        },
      +        "questionId": {
      +          "description": "Pass to get_ai_search_question, run_ai_search_check or remove_ai_search_question.",
      +          "type": "string"
      +        },
      +        "source": {
      +          "description": "How it was added: suggested, manual or audit.",
      +          "type": "string"
      +        },
      +        "text": {
      +          "description": "The question as tracked.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "questionId",
      +        "text",
      +        "branded",
      +        "source",
      +        "createdAt"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "question",
      +    "answers",
      +    "noAnswerYet",
      +    "answersInProgress"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations' readOnly/idempotent/non-destructive profile, it discloses concrete behavior: answer text truncated to 1,000 characters, engines lacking answers surfaced in noAnswerYet with last-check status, and answersInProgress as a count of pending answers. These partial/asynchronous-state details are exactly what an agent needs and are not derivable from the 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?

Front-loaded with the return contract and dense with useful facts; the sibling routing note is placed after the main clause where it belongs. The long colon-delimited field list is heavy but each item earns its place.

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?

Covers the return shape, truncation limit, the absence/in-progress states, and the full-text alternative. With an output schema already present, nothing an agent needs to call this 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 100%; the schema already explains questionId provenance and the workspaceId teammate-workspace rule including 'omit for your own workspace'. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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 ('Returns question ... and answers ... its latest answer from each engine') and enumerates the returned fields, so its scope is unmistakable. It also explicitly separates itself from get_ai_search_answer by noting that tool reads the full answer text.

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?

Guidance is present but mostly via routing cues rather than an explicit 'use this when' statement: the truncation note points to get_ai_search_answer for full text, and 'Read-only and free' frames it as a cheap check. No exclusions or prerequisite conditions (e.g., relating to get_ai_search_overview) are stated.

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