Skip to main content
Glama

Islam West Africa Collection (IWAC)

Search publications

search_publications
Read-onlyIdempotent

Search Islamic publications (periodical issues, books). keyword matches title, subject, table of contents, and full OCR text (TOC hits come back as matching_toc_entries); use French concept keywords regardless of the user's report language. Filter by newspaper/series, subject, country and year. Use list_periodicals to discover series titles, and get_publication_fulltext for keyword excerpts from a single issue.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
exactNoAND values. Fields: subject/spatial/author/language/country/newspaper/topic_id/min_prob/scored_by; country_raw=whole cell; polarity:<model>.
limitNoDefault 20, max 100
offsetNo
countryNoExact country name: Benin | Burkina Faso | Côte d'Ivoire | Niger | Togo (accents optional)
date_toNoLatest year, YYYY
keywordNoFrench concept keyword; substring match on title + subject + table of contents + OCR (accent-insensitive)
subjectNoSubject tag (~87% of issues are tagged)
date_fromNoEarliest year, YYYY
newspaperNoPeriodical/series title (see list_periodicals)
hijri_yearNoIslamic (Umm al-Qura) year, e.g. 1445
hijri_monthNoIslamic lunar month: 1-12, or a name (Ramadan, Chaabane, Chawwal, Dhu al-Hijja). Matches only issues with a full YYYY-MM-DD date — ~83% of them.
keyword_modeNo
keyword_aliasesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedInput schema / properties / exact
      Added value: +{
      +  "additionalProperties": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "maxItems": 20,
      +    "minItems": 1,
      +    "type": "array"
      +  },
      +  "description": "AND values. Fields: subject/spatial/author/language/country/newspaper/topic_id/min_prob/scored_by; country_raw=whole cell; polarity:<model>.",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / hijri_year / maximum
      Removed value: -9007199254740991
    • removedInput schema / properties / hijri_year / minimum
      Removed value: --9007199254740991
    • addedInput schema / properties / keyword_aliases
      Added value: +{
      +  "items": {
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 12,
      +  "type": "array"
      +}
    • addedInput schema / properties / keyword_mode
      Added value: +{
      +  "enum": [
      +    "literal",
      +    "all_terms"
      +  ],
      +  "type": "string"
      +}
    • 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
  2. Changed2 schema fields changed
    • addedInput schema / properties / hijri_month
      Added value: +{
      +  "description": "Islamic lunar month: 1-12, or a name (Ramadan, Chaabane, Chawwal, Dhu al-Hijja). Matches only issues with a full YYYY-MM-DD date — ~83% of them.",
      +  "type": "string"
      +}
    • addedInput schema / properties / hijri_year
      Added value: +{
      +  "description": "Islamic (Umm al-Qura) year, e.g. 1445",
      +  "maximum": 9007199254740991,
      +  "minimum": -9007199254740991,
      +  "type": "integer"
      +}
  3. 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"
  4. Changed1 schema field changed
    • changedInput schema / properties / keyword / description
      Previous value: -"French concept keyword; substring match on title + subject + OCR (accent-insensitive)"New value: +"French concept keyword; substring match on title + subject + table of contents + OCR (accent-insensitive)"
  5. Changed6 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedInput schema / properties / keyword / description
      Previous value: -"Substring match on title + subject + OCR (accent-insensitive)"New value: +"French concept keyword; substring match on title + subject + OCR (accent-insensitive)"
    • 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
  6. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description adds real behavioral context beyond them: the keyword match surface (title, subject, TOC, full OCR), that TOC hits surface as matching_toc_entries, and the French-keyword requirement. It doesn't explain result ordering or pagination behavior.

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?

Four front-loaded sentences with little waste: purpose first, then matching semantics, then filters, then alternative tools. Dense but each sentence earns its place; slight compression possible in the keyword-matching clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 13-parameter tool with no output schema and no required fields leaves the agent needing more guidance. The description covers keyword semantics, filters, and the matching_toc_entries return hint, but omits keyword_mode/keyword_aliases behavior, the exact filter object's mechanics, and overall result shape or default limit/pagination.

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 77%, near the high band, so the schema does most of the work. The description adds semantic meaning for keyword (French concept, accent-insensitive substring) and filter usage (newspaper/series, subject, country, year), but leaves keyword_mode, keyword_aliases, and the nested exact object entirely to the schema.

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?

States a specific verb and resource ('Search Islamic publications (periodical issues, books)') and scopes the corpus. It differentiates from get_publication_fulltext (single-issue excerpts) and list_periodicals (series discovery), but does not distinguish itself from the numerous other search_* siblings such as search_articles or search_documents.

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 concrete when-to-use guidance by naming two alternatives with their roles: list_periodicals to discover series titles and get_publication_fulltext for keyword excerpts from a single issue. It also prescribes using French concept keywords regardless of report language. It stops short of explicit exclusions against the other search_* tools.

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.