You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Release v1.6.0: search both AI summaries, return one
The dataset now splits bibo:shortDescription's two @language literals into
descriptionAI (fr) + descriptionAI_en rather than pipe-joining them
(fmadore/IWAC-Hugging-Face#9). Both are added to SUBSET_FIELDS for articles,
documents and audiovisual.
The English column is `searchable: true` with `views: []` — searched, never
returned. Those two halves are each load-bearing:
- Without `searchable`, the English summaries ship to the Hub but stay out of
TEXT_COLS/FAST_TEXT_COLS, so an English query matches nothing they contain.
That is strictly worse for anglophone discovery than the pipe-joined column
it replaced, which at least had the English text inside a searched field.
- Without `views: []`, every response carries both summaries. They say the same
thing about the same item, so that roughly doubles the ~125 tokens/row an
abstract costs to tell the reader nothing new. French is the one returned:
source language, and the only one present on every row (the 51 non-FR/EN
articles keep an untagged French summary with no English counterpart).
So a keyword hit can now come from a language the item is not written in. The
tool descriptions, the MCP instructions string and the research skill all say so
— an English keyword matching a French article is a discovery route, not
evidence the term is attested in the source.
Guards: a unit test asserting the English column reaches both TEXT_COLS and
FAST_TEXT_COLS wherever the French one exists, another asserting no view ever
projects it, and a fixture where "pilgrimage" appears only in descriptionAI_en
so a hit can only have arrived through the English column. Fixtures carry the
column with English text that is deliberately not a translation.
Tool definitions grow 32 tokens (0.2%), within budget.
Copy file name to clipboardExpand all lines: .agents/skills/iwac-mcp/references/biases-and-limitations.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -110,7 +110,8 @@ The 4,697 index entries (persons, organizations, places, events, subjects) repre
110
110
## 8. Search Limitations
111
111
112
112
-**Substring matching only** — no wildcards, fuzzy matching, or Boolean operators. One term per call; run variants as separate searches.
113
-
-**Keyword scope varies by tool:** articles = title + OCR + AI abstract; publications = title + subject + table of contents + OCR; references = title + abstract. Keyword does NOT search the spatial field — use `subject` for curated tags.
113
+
-**Keyword scope varies by tool:** articles = title + OCR + AI abstracts (**both languages**); publications = title + subject + table of contents + OCR; references = title + abstract. Keyword does NOT search the spatial field — use `subject` for curated tags.
114
+
-**An English keyword can match a French article through its AI abstract.** Articles and documents carry two AI summaries, French and English, and keyword search matches both — so `keyword: "pilgrimage"` returns French-language articles about the hajj even though that word appears nowhere in the source. This is deliberate: it is the only English-language entry point into a francophone corpus. But it means a keyword hit does **not** imply the term is attested in the item itself. For what the sources actually say, read the OCR; for counting how often a word appears *in the press*, AI abstracts are not evidence. Only one summary (the French one) is returned in responses.
114
115
-**Accents and case are folded** (server ≥ 0.6.0): `pelerinage`, `Bénin`, `These` all match. Spelling differences still matter.
115
116
-**Country filters take exact names** (Benin, Burkina Faso, Côte d'Ivoire, Niger, Togo; Nigeria only in references/index/audiovisual). Partial names ("Burkina") are invalid and return an `{error, valid_values}` response — pick a valid value and retry; never read the error as a finding.
116
117
-**Keyword search terms must be French for primary-source subsets** — formulate keyword terms in French for press, publications, documents, and index searches. Academic references are multilingual: search titles/abstracts with French and English concept terms when relevant, while keeping metadata/filter values in French. Semantic embedding queries may be in any language.
Copy file name to clipboardExpand all lines: .agents/skills/iwac-mcp/references/capabilities-overview.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,7 +36,7 @@ Because reports are date-stamped and location-specific, the collection also supp
36
36
37
37
## Ways into the data (recommend 2-3, matched to the question)
38
38
39
-
-**Keyword search** (French concept terms for press/publications; French and English title/abstract terms for scholarship) across titles, full OCR text and AI abstracts.
39
+
-**Keyword search** (French concept terms for press/publications; French and English title/abstract terms for scholarship) across titles, full OCR text and AI abstracts. Articles and documents carry a French **and** an English AI abstract and both are searched, so an English term can reach a French item through its summary — responses still return only the French one.
-**People, organisations, places** — find the canonical name among the 4,700 index records, then pull every article that mentions it.
42
42
-**Conceptual (semantic) search** in any language, when keywords would miss paraphrases — "Islamic education reform" also surfaces madrasa-modernisation pieces.
Copy file name to clipboardExpand all lines: .agents/skills/iwac-mcp/references/research-domains.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -172,7 +172,7 @@ Server matching is **accent- and case-insensitive** (v0.6.0+), so `pelerinage` a
172
172
-**Country filters take exact names:** Benin, Burkina Faso, Côte d'Ivoire, Niger, Togo (+ Nigeria for references/index/audiovisual). Partial names ("Burkina") are invalid and return an error listing the valid values.
173
173
-**Start broad, then narrow:** begin with a general term (e.g., "madrasa"), then add country or date filters.
174
174
-**Check the index first:** use `search_index` to find the canonical form of a person/organization name, then search articles with that exact form.
175
-
-**Prefer `subject` over `keyword`** for known thematic categories: `keyword` searches title + OCR + AI abstract; `subject` searches the curated tags (which may use different terminology than the OCR text). Discover tags via `list_subjects`.
175
+
-**Prefer `subject` over `keyword`** for known thematic categories: `keyword` searches title + OCR + AI abstracts (French and English); `subject` searches the curated tags (which may use different terminology than the OCR text). Discover tags via `list_subjects`.
176
176
-**Islamic publications vs. mainstream press:**`search_publications` covers Islamic community media (Islam Info, An-Nasr Vendredi, …). Most items are entire issues — navigate by series (`list_periodicals`), subject (87% tagged), country and year; keyword also matches tables of contents (17 of 25 series have them, returned as `matching_toc_entries`); use `get_publication_fulltext` keyword excerpts to read inside an issue.
177
177
-**State press vs. private press:** pre-1991 articles come almost entirely from state/single-party organs, and some outlets changed names across regimes (Ehuzu → La Nation; Togo-Presse ↔ La Nouvelle Marche; L'Observateur → L'Observateur Paalga) — search all name variants when following one outlet across time (see biases-and-limitations.md §6).
178
178
-**Temporal filtering:** articles take `YYYY-MM-DD` or `YYYY`; publications/references take years.
Copy file name to clipboardExpand all lines: .agents/skills/iwac-mcp/references/tools-by-phase.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ Cross-subset search for skill-less clients and quick discovery.
9
9
-`query` (required): one concept, name, or short phrase. Tokens are AND-ed across each subset's searchable fields; use French concepts for primary-source discovery, and French/English terms for references. A query whose every word is under 2 characters is **refused** (it would otherwise return an empty result indistinguishable from a real absence).
10
10
-`limit` (default 20, max 50)
11
11
- Returns `results` with namespaced ids (`articles:28576`, `references:11045`, `images:12237`), `title`, `url`, `category`, plus a `ranking` note and `deep_scan`. There is no numeric relevance score; for precise filters use the granular `search_*` tools.
12
-
-**Two passes.** Pass 1 matches curated metadata only (titles, subjects, AI abstracts, tables of contents) and answers in ~0.2 s; if that fills fewer than `limit` results, pass 2 also scans the full OCR (~2.5 s) and `deep_scan: true` says so. A common term therefore never pays for the OCR scan, and a rare one still finds everything — but treat `search` as discovery, not a census: for exhaustive counts use `search_*` or `get_temporal_distribution`.
12
+
-**Two passes.** Pass 1 matches curated metadata only (titles, subjects, AI abstracts in both languages, tables of contents) and answers in ~0.2 s; if that fills fewer than `limit` results, pass 2 also scans the full OCR (~2.5 s) and `deep_scan: true` says so. A common term therefore never pays for the OCR scan, and a rare one still finds everything — but treat `search` as discovery, not a census: for exhaustive counts use `search_*` or `get_temporal_distribution`.
13
13
14
14
### fetch
15
15
Fetch one item returned by `search`.
@@ -58,7 +58,7 @@ The 25 Islamic periodical/series titles in the publications subset, with issue c
58
58
59
59
### search_articles
60
60
Primary search tool for the 12,287 newspaper articles.
61
-
-`keyword` (optional): substring match on **title + OCR + AI abstract** (does NOT search subject/spatial — use the `subject` parameter for curated tags)
61
+
-`keyword` (optional): substring match on **title + OCR + AI abstracts, French and English** (does NOT search subject/spatial — use the `subject` parameter for curated tags). An English term can therefore match a French article via its English summary
Copy file name to clipboardExpand all lines: mcpb/manifest.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
"manifest_version": "0.3",
3
3
"name": "iwac-mcp-server",
4
4
"display_name": "Islam West Africa Collection (IWAC)",
5
-
"version": "1.5.1",
5
+
"version": "1.6.0",
6
6
"description": "Read-only access to the Islam West Africa Collection via Hugging Face datasets.",
7
7
"long_description": "Search and analyse the Islam West Africa Collection (IWAC): ~12,000 newspaper articles, 1,500 Islamic publications (searchable by keyword, subject, series, and table of contents), 4,700 index entries, plus audiovisual recordings, fieldwork photographs, archival documents, and academic references. Includes AI sentiment analysis (polarity/centrality/subjectivity, scored independently by gemini-3-flash-preview, gpt-5-mini and ministral-14b-2512), per-article AI abstracts, and per-year coverage timelines. All matching is accent- and case-insensitive.\n\n**No API key is required for the core tools** (cross-subset search/fetch, keyword search, filtering, statistics, timelines, item details). Three optional semantic-search tools use Gemini embeddings — over all articles, the publication series with tables of contents, and the photographs (cross-modal: describe what an image shows) — and need a free Google/Gemini API key; these are disabled by default.\n\nOn first use the server downloads ~250 MB of parquet data from Hugging Face into a local cache.",
0 commit comments