Skip to main content
Glama

Search stories

search_stories
Read-only

Pro: full-text story search (limit default 20, max 50; offset 0–1000, default 0). Matches any query term (English stop words ignored, English stemming; acronyms such as SEC, ETF or DPRK match their spelled-out forms, and a capitalised coin symbol matches the coin name). Ranked by relevance: more matched terms, especially in the headline, then boosts for live, summarised and recently updated stories; recent developments (updated_at, newest report) rank above older first reports of comparable relevance. since/until filter on event_at (first report). Twins of one article (same publisher url or headline) are collapsed and total counts them once. Categories: markets, economy, regulation, technology, security, business, adoption. Results mark archived:false for current stories and archived:true for archived ones (left out if the current edition is unavailable); archived ids resolve via get_story, which may return replaced_by; merged ids are returned as their current story with replaced_by. Each result’s reports (up to 3: the earliest published report, usually the original source, then those matching the query; summaries cut to two sentences; reports_total counts all of the story’s reports, and get_story lists them whole) carry an outlet’s own headline and summary. A result in a developing event carries developing {slug,label,state,url}: call get_developing with that slug for its timeline, mechanism and who said what, and cite the story ids listed on the entry. Cite every sentence that states news, the opening one included; cite the story whose own text, or one of its listed reports, carries the detail (for a report, also name source_name and published_at); do not add a generic "Sources: cryptonews.is" line. copy_pending marks missing copy; copy_skipped: the story is rated negligible and will not get a summary (it is dropped if copy arrives later); language null means the copy is not written yet. Cite stories by their full id or reader_url; ids are stable, and merged ids return replaced_by.

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": {
      "query": "<query>"
    },
    "name": "search_stories"
  }
}

Input Schema

NameRequiredDescriptionDefault
coinNo
limitNo
queryYes
sinceNo
untilNo
offsetNo
categoryNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare readOnlyHint and openWorldHint, so the description carries the burden and does so well: relevance ranking rules, twin collapsing affecting totals, archived:false/true semantics, merged ids returning replaced_by, and per-result reports capped at 3 with two-sentence summaries. The weak spot is that it spends significant space on citation policy, which is answer-formatting guidance rather than tool behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense block of roughly 350 words covering search behavior, result shape, edge-case flags, and citation rules. Useful facts are front-loaded, but the trailing citation-policy sentences (how to cite sentences, not adding a "Sources:" line) are behavioral instructions to the answering agent rather than tool-selection information, inflating length and burying callable detail.

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 no output schema, the description does the heavy lifting on returns — reports, developing-event objects, archived status, copy_pending/copy_skipped, language null — so an agent knows what to expect. The gap is the undocumented coin filter and no mention of what an empty result or the response envelope looks like.

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 compensate. It explains limit (default 20, max 50), offset (0–1000, default 0), since/until semantics, the seven category values, and query matching (any term, stop words, stemming, acronym expansion). However, the coin parameter is never described — its only hint is an ambiguous remark about capitalised coin symbols in the query — leaving one of seven params undefined.

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?

Opens with a specific verb+resource ("full-text story search") and immediately scopes it with pagination and matching semantics, which separates it from browsing siblings like latest_stories or fetching a single item via get_story. The field-level detail (ranking, category, date filtering) makes the tool's domain unmistakable.

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 routing for sub-tasks: use get_developing with the returned slug for an event timeline, use get_story to resolve archived ids and replaced_by. It also specifies that since/until filter on event_at (first report), which prevents a common mis-assumption. What's missing is an explicit statement of when to prefer this over latest_stories or changes_since — that choice is left inferential.

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.