MCP Server

newtqnia

com.newtqnia/newtqnia
Knowledge & Documentation Search & Research Public & reachable MCP 2025-11-25

What this MCP does

Provides read-only access to bilingual news, terminology, timelines, and explanatory content, with search and retrieval tools.

get_news_by_id
Get a news article by ID
Returns one published article. Administrators get the complete bilingual record, including bodies, tags, citations, and access to unpublished drafts. Other accounts get a single locale (pass the caller's language in locale) with a title, summary, and canonical URL to read the full article - never the article body.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['news_id'], 'properties': {'locale': {'enum': ['en', 'ar', None], 'type': ['string', 'null'], 'default': 'en', 'description': "The calling user's language. Ignored for administrator tokens, which always receive both languages."}, 'news_id': {'type': 'integer', 'minimum': 1, 'description': 'The exact NewTqnia article ID.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['id', 'slug', 'category', 'tags', 'citations', 'image_path', 'read_time', 'created_at', 'updated_at'], 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string', 'format': 'uri'}, 'slug': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'object'}}, 'title': {'type': 'string'}, 'source': {'enum': ['fresh', 'archived'], 'type': 'string'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'url_ar': {'type': 'string', 'format': 'uri'}, 'url_en': {'type': 'string', 'format': 'uri'}, 'body_ar': {'type': 'string'}, 'body_en': {'type': 'string'}, 'summary': {'type': 'string'}, 'category': {'type': 'object', 'description': 'Full taxonomy record for administrator tokens; {slug, name} for other accounts.'}, 'editable': {'type': 'boolean'}, 'title_ar': {'type': 'string'}, 'title_en': {'type': 'string'}, 'citations': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'url'], 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}}, 'additionalProperties': False}}, 'read_time': {'type': 'integer', 'minimum': 1}, 'created_at': {'type': 'string', 'format': 'date-time'}, 'image_path': {'type': 'string'}, 'summary_ar': {'type': 'string'}, 'summary_en': {'type': 'string'}, 'updated_at': {'type': 'string', 'format': 'date-time'}, 'view_count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
get_recent_news
Get recent published news
Returns published news from the past X days (90 by default). Administrators get bilingual titles, summaries, and URLs; other accounts get a single locale (pass the caller's language in locale) with a title, summary, and canonical URL to read the full article.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'days': {'type': 'integer', 'default': 90, 'maximum': 3650, 'minimum': 1}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1}, 'locale': {'enum': ['en', 'ar', None], 'type': ['string', 'null'], 'default': 'en', 'description': "The calling user's language. Ignored for administrator tokens, which always receive both languages."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['days', 'count', 'news'], 'properties': {'days': {'type': 'integer'}, 'news': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'slug', 'category', 'image_path', 'created_at', 'updated_at'], 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string', 'format': 'uri'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'url_ar': {'type': 'string', 'format': 'uri'}, 'url_en': {'type': 'string', 'format': 'uri'}, 'summary': {'type': 'string'}, 'category': {'type': 'object', 'description': 'Full taxonomy record for administrator tokens; {slug, name} for other accounts.'}, 'title_ar': {'type': 'string'}, 'title_en': {'type': 'string'}, 'created_at': {'type': 'string', 'format': 'date-time'}, 'image_path': {'type': 'string'}, 'summary_ar': {'type': 'string'}, 'summary_en': {'type': 'string'}, 'updated_at': {'type': 'string', 'format': 'date-time'}, 'category_id': {'type': 'integer'}}, 'additionalProperties': False}}, 'count': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
get_timeline_by_id
Get a timeline by ID
Returns one published timeline. Administrators get the complete bilingual record with every event, source, and related link, plus access to draft content. Other accounts get a single locale (pass the caller's language in locale): each event's title, summary, media, sources, and related links, plus a canonical URL to the full timeline - never event bodies or the timeline introduction/conclusion.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['timeline_id'], 'properties': {'locale': {'enum': ['en', 'ar', None], 'type': ['string', 'null'], 'default': 'en', 'description': "The calling user's language. Ignored for administrator tokens, which always receive both languages."}, 'timeline_id': {'type': 'integer', 'minimum': 1, 'description': 'The exact NewTqnia timeline ID.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['id', 'slug', 'timeline_type', 'is_ongoing', 'start_date', 'end_date', 'event_count', 'events', 'created_at', 'updated_at'], 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string', 'format': 'uri'}, 'slug': {'type': 'string'}, 'uuid': {'type': 'string'}, 'title': {'type': 'string'}, 'events': {'type': 'array', 'items': {'type': 'object'}}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'url_ar': {'type': 'string', 'format': 'uri'}, 'url_en': {'type': 'string', 'format': 'uri'}, 'summary': {'type': 'string'}, 'end_date': {'type': ['string', 'null'], 'format': 'date'}, 'featured': {'type': 'boolean'}, 'title_ar': {'type': 'string'}, 'title_en': {'type': 'string'}, 'created_at': {'type': 'string', 'format': 'date-time'}, 'is_ongoing': {'type': 'boolean'}, 'start_date': {'type': ['string', 'null'], 'format': 'date'}, 'summary_ar': {'type': 'string'}, 'summary_en': {'type': 'string'}, 'updated_at': {'type': 'string', 'format': 'date-time'}, 'cover_media': {'type': ['object', 'null']}, 'event_count': {'type': 'integer'}, 'conclusion_ar': {'type': ['string', 'null']}, 'conclusion_en': {'type': ['string', 'null']}, 'timeline_type': {'type': 'string'}, 'introduction_ar': {'type': ['string', 'null']}, 'introduction_en': {'type': ['string', 'null']}}, 'additionalProperties': False}
search_explainers
Search existing explainers
Searches explainers by English/Arabic title, slug, summary, or content. Administrators see draft and published explainers with both languages, and should call this before creating a new explainer to avoid duplicates. Other accounts see published explainers only, in a single locale (pass the caller's language in locale), each with a canonical URL to the full explainer.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 255}, 'locale': {'enum': ['en', 'ar', None], 'type': ['string', 'null'], 'default': 'en', 'description': "The calling user's language. Ignored for administrator tokens, which always receive both languages."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['success', 'results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'slug'], 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string', 'format': 'uri'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'summary': {'type': ['string', 'null']}, 'title_ar': {'type': 'string'}, 'title_en': {'type': 'string'}, 'summary_ar': {'type': ['string', 'null']}, 'summary_en': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'success': {'enum': [True], 'type': 'boolean'}}, 'additionalProperties': False}
search_terminology
Search existing terminology
Searches terminology by English term, Arabic term, abbreviation, or slug using normalized, case-insensitive matching. Administrators see draft and published terms with both languages, and should call this before creating a new term to avoid duplicates. Other accounts see published terms only, in a single locale (pass the caller's language in locale), each with a canonical URL to the full definition.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 255}, 'locale': {'enum': ['en', 'ar', None], 'type': ['string', 'null'], 'default': 'en', 'description': "The calling user's language. Ignored for administrator tokens, which always receive both languages."}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['success', 'results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'slug'], 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string', 'format': 'uri'}, 'slug': {'type': 'string'}, 'term': {'type': 'string'}, 'status': {'enum': ['draft', 'published'], 'type': 'string'}, 'arabic_term': {'type': 'string'}, 'abbreviation': {'type': ['string', 'null']}, 'english_term': {'type': 'string'}}, 'additionalProperties': False}}, 'success': {'enum': [True], 'type': 'boolean'}}, 'additionalProperties': False}
server_status
Server status
Returns the current health and timestamp of the NewTqnia server.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['status', 'application', 'timestamp'], 'properties': {'status': {'enum': ['ok'], 'type': 'string'}, 'timestamp': {'type': 'string', 'format': 'date-time'}, 'application': {'type': 'string'}}, 'additionalProperties': False}
Added
search_explainers
Sept. 17, 2026, 12:36 p.m.
Added
search_terminology
Sept. 17, 2026, 12:36 p.m.
Added
get_timeline_by_id
Sept. 17, 2026, 12:36 p.m.
Added
get_news_by_id
Sept. 17, 2026, 12:36 p.m.
Added
get_recent_news
Sept. 17, 2026, 12:36 p.m.
Added
server_status
Sept. 17, 2026, 12:36 p.m.