
Search, read and cite The Moorish Times: Moroccan history, culture and news, in French and English.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Both editions of one piece aligned block by block, with both URLs. For readers comparing the languages or checking a translation.
An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http moorish-times https://mcp.moorish.cloud/mcp
Both editions of one piece aligned block by block, with both URLs. For readers comparing the languages or checking a translation.
| Argument | Type | Description |
|---|---|---|
| id* | string | An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language."
}
}
}The full text of one article or news brief, as Markdown with front matter (title, url, date, author, tags, translation link) and its references. format summary gives the front matter and summary only; outline gives the section headings. Falls back to French when the piece has no English edition, and says so. Returns JSON {id, title, text, url, metadata}.
| Argument | Type | Description |
|---|---|---|
| id* | string | An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language. |
| format | string | |
| locale | string | Edition: fr or en. Defaults to the reference's own edition, else fr. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language."
},
"format": {
"enum": [
"full",
"summary",
"outline"
],
"type": "string",
"default": "full"
},
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Edition: fr or en. Defaults to the reference's own edition, else fr."
}
}
}A piece's references, outbound links and image credits, plus a ready citation of the piece itself in APA, MLA or Chicago style.
| Argument | Type | Description |
|---|---|---|
| id* | string | An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language. |
| style | string | |
| locale | string | Edition: fr or en. Defaults to the reference's own edition, else fr. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language."
},
"style": {
"enum": [
"apa",
"mla",
"chicago"
],
"type": "string",
"default": "apa"
},
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Edition: fr or en. Defaults to the reference's own edition, else fr."
}
}
}Tags with the number of pieces carrying each, most used first, named in the asked edition with both names in the data. Use either name in search, whats_new and timeline.
| Argument | Type | Description |
|---|---|---|
| locale | string | Edition: fr (primary) or en. |
| prefix | string | Accent-insensitive start of the tag in either language, e.g. tan for Tanger. |
| category | string | Section: hist history, cult culture, pol politics, actu current affairs, sport, eco economy. |
| min_count | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"default": "fr",
"description": "Edition: fr (primary) or en."
},
"prefix": {
"type": "string",
"description": "Accent-insensitive start of the tag in either language, e.g. tan for Tanger."
},
"category": {
"enum": [
"hist",
"cult",
"pol",
"actu",
"sport",
"eco"
],
"type": "string",
"description": "Section: hist history, cult culture, pol politics, actu current affairs, sport, eco economy."
},
"min_count": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1
}
}
}Pieces that share tags and section with a given piece, the closest first.
| Argument | Type | Description |
|---|---|---|
| id* | string | An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language. |
| limit | integer | |
| locale | string | Edition: fr or en. Defaults to the reference's own edition, else fr. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "An id from search (news/<slug> or articles/<slug>) or a moorishtimes.com page URL in either language."
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1
},
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Edition: fr or en. Defaults to the reference's own edition, else fr."
}
}
}Tell The Moorish Times about a task a reader wanted that this server, the site or the API could not do. Describe the task, never the reader. No personal data.
| Argument | Type | Description |
|---|---|---|
| task* | string | The task in a few words, e.g. Read a piece in Arabic. |
| description* | string | What was wanted and what was missing. No names, emails or other personal data. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task",
"description"
],
"properties": {
"task": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The task in a few words, e.g. Read a piece in Arabic."
},
"description": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "What was wanted and what was missing. No names, emails or other personal data."
}
}
}Search every article and news brief by words, section, tags, author and date range, in French or English. Accent-insensitive keyword match first, then pieces close in meaning (match: semantic) when keywords find few. Leave query empty to browse newest first. Returns JSON {results: [{id, title, url, summary, published, ...}], next, total}; pass next as cursor for more.
| Argument | Type | Description |
|---|---|---|
| sort | string | |
| tags | array | Every tag must be present, in French or English, e.g. ["Casablanca", "Finance"]. See list_tags. |
| type | string | article for long-form features, news for briefs. |
| limit | integer | |
| query | string | Words to look for, e.g. zellige, Tanger Med, Guerre des Sables. |
| since | string | today, week, month, year, or a date (2026-09-01). |
| until | string | A date, inclusive. |
| author | string | An author's slug or name from site_map, e.g. amerruki. |
| cursor |
Send the newsroom a story tip, a correction, a rights or advertising request, or another message, on the user's behalf and with their consent. Write the message in the user's words; include their email in reply_to only if they want an answer. Agents with a token from https://moorishtimes.com/auth.md (scope newsroom:send) send it as a Bearer header on this connection; without one, sends are limited per network.
| Argument | Type | Description |
|---|---|---|
| kind* | string | story (a tip), correction (an error in a piece; give its page), rights, ads or other. |
| page | string | The moorishtimes.com page it is about, if any. |
| message* | string | The message, in French or English. |
| language | string | |
| reply_to | string | The user's email, only if they want a reply. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"kind",
"message"
],
"properties": {
"kind": {
"enum": [
"story",
"correction",
"rights",
"ads",
"other"
],
"type": "string",
"description": "story (a tip), correction (an error in a piece; give its page), rights, ads or other."
},
"page": {
"type": "string",
"format": "uri",
"description": "The moorishtimes.com page it is about, if any."
},
"message": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "The message, in French or English."
},
"language": {
"enum": [
"fr",
"en"
],
"type": "string"
},
"reply_to": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The user's email, only if they want a reply."
}
}
}Running stories the desk follows as one series, such as the 2026 elections or the Sahara. Without a slug, lists every series with its count and latest piece; with one, gives every piece in reading order, oldest first.
| Argument | Type | Description |
|---|---|---|
| slug | string | A series slug from the list, e.g. elections. |
| locale | string | Edition: fr (primary) or en. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"slug": {
"type": "string",
"description": "A series slug from the list, e.g. elections."
},
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"default": "fr",
"description": "Edition: fr (primary) or en."
}
}
}What the magazine covers: sections with counts and URLs, the most used tags, featured pieces, author pages and series. Start here to browse.
| Argument | Type | Description |
|---|---|---|
| locale | string | Edition: fr (primary) or en. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"default": "fr",
"description": "Edition: fr (primary) or en."
}
}
}Every piece on a tag or topic in date order, oldest first, to follow how a story unfolded. Marks the first and latest mention.
| Argument | Type | Description |
|---|---|---|
| tag | string | A tag from list_tags, e.g. Diplomatie. |
| type | string | article for long-form features, news for briefs. |
| query | string | Words, e.g. MINURSO or Tanger Med. |
| since | string | |
| until | string | |
| locale | string | Edition: fr (primary) or en. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tag": {
"type": "string",
"description": "A tag from list_tags, e.g. Diplomatie."
},
"type": {
"enum": [
"article",
"news"
],
"type": "string",
"description": "article for long-form features, news for briefs."
},
"query": {
"type": "string",
"description": "Words, e.g. MINURSO or Tanger Med."
},
"since": {
"type": "string"
},
"until": {
"type": "string"
},
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"default": "fr",
"description": "Edition: fr (primary) or en."
}
}
}A digest of recent pieces grouped by section, featured pieces first: what happened in Morocco today, this week or this month according to The Moorish Times.
| Argument | Type | Description |
|---|---|---|
| tag | string | |
| since | string | today, week, month, or a date. |
| locale | string | Edition: fr (primary) or en. |
| category | string | Section: hist history, cult culture, pol politics, actu current affairs, sport, eco economy. |
| featured_only | boolean |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"tag": {
"type": "string"
},
"since": {
"type": "string",
"default": "week",
"description": "today, week, month, or a date."
},
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"default": "fr",
"description": "Edition: fr (primary) or en."
},
"category": {
"enum": [
"hist",
"cult",
"pol",
"actu",
"sport",
"eco"
],
"type": "string",
"description": "Section: hist history, cult culture, pol politics, actu current affairs, sport, eco economy."
},
"featured_only": {
"type": "boolean",
"default": false
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
| string |
| locale | string | Edition: fr (primary) or en. |
| category | string | Section: hist history, cult culture, pol politics, actu current affairs, sport, eco economy. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"enum": [
"relevance",
"newest",
"oldest"
],
"type": "string",
"default": "relevance"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Every tag must be present, in French or English, e.g. [\"Casablanca\", \"Finance\"]. See list_tags."
},
"type": {
"enum": [
"article",
"news"
],
"type": "string",
"description": "article for long-form features, news for briefs."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1
},
"query": {
"type": "string",
"description": "Words to look for, e.g. zellige, Tanger Med, Guerre des Sables."
},
"since": {
"type": "string",
"description": "today, week, month, year, or a date (2026-09-01)."
},
"until": {
"type": "string",
"description": "A date, inclusive."
},
"author": {
"type": "string",
"description": "An author's slug or name from site_map, e.g. amerruki."
},
"cursor": {
"type": "string"
},
"locale": {
"enum": [
"fr",
"en"
],
"type": "string",
"default": "fr",
"description": "Edition: fr (primary) or en."
},
"category": {
"enum": [
"hist",
"cult",
"pol",
"actu",
"sport",
"eco"
],
"type": "string",
"description": "Section: hist history, cult culture, pol politics, actu current affairs, sport, eco economy."
}
}
}