Skip to main content
Glama

Source details and quote

procli_inspect
Read-onlyIdempotent

Input fields, price and a quote for one source (scraper id from procli_discover). quote.maxCharge is the most the run can cost; if quote.needsConfirmation is true, ask the user before running. Pass the planned input and maxItems to get the quote for exactly that run. Free.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputNoOptional: the input you plan to send, for a matching quote
scraperYesSource id from procli_discover, e.g. "procli_reddit_b"
maxItemsNoPer-result sources: how many results you plan to ask for (default 100)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
quoteYesQuote for the planned run
titleNoSource name
pricingNoPrice of the source
scraperYesSource id
estimateNo
platformNoPlatform
pagingNoteNoHow to get the next page
descriptionNoWhat it returns
inputFieldsNoInput fields the source accepts
exampleInputNoA working example input

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "description": {
      +      "description": "What it returns",
      +      "type": "string"
      +    },
      +    "estimate": {
      +      "properties": {
      +        "basis": {
      +          "description": "How the estimate was made",
      +          "type": "string"
      +        },
      +        "per100Results": {
      +          "description": "About what 100 results cost, in USD",
      +          "type": "number"
      +        },
      +        "resultsPerCall": {
      +          "description": "Rows per call for per-call sources",
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "exampleInput": {
      +      "description": "A working example input",
      +      "type": "object"
      +    },
      +    "inputFields": {
      +      "description": "Input fields the source accepts",
      +      "items": {
      +        "properties": {
      +          "default": {},
      +          "description": {
      +            "description": "What to put in it",
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "Field name",
      +            "type": "string"
      +          },
      +          "required": {
      +            "description": "Whether it is required",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "pagingNote": {
      +      "description": "How to get the next page",
      +      "type": "string"
      +    },
      +    "platform": {
      +      "description": "Platform",
      +      "type": "string"
      +    },
      +    "pricing": {
      +      "description": "Price of the source",
      +      "properties": {
      +        "amount": {
      +          "description": "Price in USD per call or per result",
      +          "type": "number"
      +        },
      +        "currency": {
      +          "description": "Always USD",
      +          "type": "string"
      +        },
      +        "display": {
      +          "description": "Price as text, e.g. \"$0.003 per call\"",
      +          "type": "string"
      +        },
      +        "type": {
      +          "description": "PER_CALL (one page per call) or PER_RESULT (charged per row returned)",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "quote": {
      +      "description": "Quote for the planned run",
      +      "properties": {
      +        "basis": {
      +          "description": "How the quote was worked out",
      +          "type": "string"
      +        },
      +        "currency": {
      +          "description": "Always USD",
      +          "type": "string"
      +        },
      +        "maxCharge": {
      +          "description": "The most this run can cost, in USD",
      +          "type": "number"
      +        },
      +        "maxChargeDisplay": {
      +          "description": "maxCharge as text, e.g. \"$0.30\"",
      +          "type": "string"
      +        },
      +        "needsConfirmation": {
      +          "description": "true when the user should confirm before the run",
      +          "type": "boolean"
      +        },
      +        "reducedByBalance": {
      +          "description": "true when fewer results were quoted because the balance is low",
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "maxCharge"
      +      ],
      +      "type": "object"
      +    },
      +    "scraper": {
      +      "description": "Source id",
      +      "type": "string"
      +    },
      +    "title": {
      +      "description": "Source name",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "scraper",
      +    "quote"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already establish readOnly/idempotent/non-destructive, so the lower bar applies. The description still adds substantive behavior: the run is 'Free,' quote.maxCharge bounds cost, and needsConfirmation mandates a user prompt before running — none of which appears in the structured fields.

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 returns before moving to quote semantics and cost. Each sentence carries distinct information, though the terse 'Free.' could be folded in more gracefully.

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 needn't enumerate return values, yet it helpfully names the key quote fields (maxCharge, needsConfirmation) and their decision implications. It covers the input-param role and the cost/confirmation behavior, leaving only minor run-order guidance unstated.

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 100%, so the baseline is 3, but the description adds a causal relation the schema does not: passing input and maxItems produces a quote 'for exactly that run.' That extra meaning (the params drive the price estimate) is genuinely useful beyond the field docs.

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 states the resource (one source, identified by a scraper id) and the concrete outputs (input fields, price, quote), which is more specific than a tautology. It also anchors the id's origin to the sibling procli_discover, helping distinguish it from discovery. The verb 'inspect' is only implicit, but an agent can still tell what it returns.

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?

It implies usage through the workflow: pull the id from procli_discover, pass planned input/maxItems to get a matching quote, and confirm with the user when needsConfirmation is true. However, it never explicitly says when to call this versus procli_run or that it should precede a run, leaving the ordering for the agent to infer.

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