Skip to main content
Glama

Islam West Africa Collection (IWAC)

Filter articles by AI sentiment

search_by_sentiment
Read-onlyIdempotent

Filter articles by claude-haiku-5-5 sentiment labels (accent/case-insensitive exact match). One model's reading, not a consensus — 5 other models scored the same articles and often disagree; get_sentiment_distribution with model:"all" shows by how much. subjectivity is much the weakest of the three scales, so treat a set selected on it as a lead to read rather than as a finding.

Input Schema

NameRequiredDescriptionDefault
limitNoDefault 20, max 100
offsetNo
countryNoExact country name: Benin | Burkina Faso | Côte d'Ivoire | Niger | Togo (accents optional)
subjectNo
disputedNopolarite | centralite | subjectivite — keep only articles the panel SPLIT on for that field (French field names, as stored). Selects contested readings, not a sentiment value.
polarityNoTrès positif | Positif | Neutre | Négatif | Très négatif | Non applicable
centralityNoTrès central | Central | Secondaire | Marginal | Non abordé
subjectivityNoTrès objectif | Plutôt objectif | Mixte | Plutôt subjectif | Très subjectif — least to most subjective. Unscored where the model answered Non abordé, so this filter also excludes those.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  2. Changed4 schema fields changed
    • removedInput schema / properties / limit / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / limit / minimum
      Removed value: --9007199254740991
    • removedInput schema / properties / offset / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / offset / minimum
      Removed value: --9007199254740991
  3. Changed1 schema field changed
    • addedInput schema / properties / disputed
      Added value: +{
      +  "description": "polarite | centralite | subjectivite — keep only articles the panel SPLIT on for that field (French field names, as stored). Selects contested readings, not a sentiment value.",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / subjectivity
      Added value: +{
      +  "description": "Très objectif | Plutôt objectif | Mixte | Plutôt subjectif | Très subjectif — least to most subjective. Unscored where the model answered Non abordé, so this filter also excludes those.",
      +  "type": "string"
      +}
  5. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  6. Changed5 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / limit / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / limit / minimum
      Added value: +-9007199254740991
    • addedInput schema / properties / offset / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / offset / minimum
      Added value: +-9007199254740991
  7. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already establish readOnly/idempotent/non-destructive safe reads, so the description is free to add the genuinely non-obvious behaviour: results reflect a single model (claude-haiku-5-5), five other models disagree, and matching is accent/case-insensitive. The caveat that the subjectivity scale is the weakest of three and produces leads rather than findings is exactly the kind of trait an agent cannot infer from 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 sentences, all front-loaded on the action, with the model-disagreement caveat before the scale caveat — a sensible priority order. Density is high but nothing is filler; the model identifier quote is the only slightly bumpy patch.

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?

For an 8-parameter, no-output-schema read tool, the description covers the interpretation risks an agent most needs (single-model bias, weak scale) and the matching semantics. It stops short of saying what a result row contains or how limit/offset paginate, which matters somewhat given there is no output schema to fall back on.

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 coverage is 75%, so the baseline is 3 and the description only needs to add value. It does add two genuinely non-schema details — accent/case-insensitive matching and the reliability caveat on `subjectivity` — but leaves `subject`, `limit`, and `offset` untouched and doesn't explain how the three sentiment facets combine (AND vs. independent).

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?

Opens with a specific verb+resource+facet: 'Filter articles by ... sentiment labels', so the agent knows exactly what class of operation this is. It does not contrast itself with the near-neighbour 'search_articles' / 'search' (which could plausibly also carry filters), so the differentiation from siblings is only partial — it names get_sentiment_distribution, but for a different question (distribution vs. selection).

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 a concrete routing rule: to see how much models disagree, use get_sentiment_distribution with model:"all" instead. It also tells the agent how to treat results from the subjectivity filter ('a lead to read rather than a finding'), which is real usage guidance. What's missing is any statement of when NOT to use this tool (e.g. vs. generic article search).

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.