Skip to main content
Glama
IDinsight

senegal-mohebs-tlm-server

by IDinsight

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP listen port (only used in HTTP mode).8080
KG_SOURCENoWhere curriculum + KG reads pull from: bundle (default) or firestore.bundle
TLM_GRADENoPre-select the active grade at startup, e.g., ci.
PUBLIC_URLNoThis server's public base URL (required when auth is on).
TLM_SUBJECTNoPre-select the active subject at startup, e.g., maths.
SUPABASE_URLNoSupabase project URL, e.g., https://<ref>.supabase.co (enables OAuth).
TLM_SOURCES_DIRNoRelocate the sources root directory../sources
TLM_BUCKET_PREFIXNoPut everything under a prefix in the bucket, e.g., pilot.
ALLOW_UNAUTHENTICATEDNoSet to '1' to run without authentication (local testing only).
FIREBASE_STORAGE_BUCKETYesThe Firebase Storage bucket name, e.g., your-project.appspot.com.
SERVICE_ACCOUNT_KEY_JSONNoContent of your Firebase service-account JSON (alternative to SERVICE_ACCOUNT_KEY_PATH).
SERVICE_ACCOUNT_KEY_PATHNoPath to your Firebase service-account JSON (used for auth and for signing upload URLs).
TLM_DOMAIN_NEIGHBORHOOD_KNoHow many chapters on each side count as a chapter's neighborhood for example-domain variety.3

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
set_contextA

Choose the grade (e.g. 'ci') and subject (e.g. 'maths') to work on. This selects which local sources load and which Firebase namespace documents and history live under, and MUST be set before any other tool. If you don't know which to use, call get_context to list the installed options, then ask the user.

get_contextA

Return the currently selected grade/subject (null if none is set yet) and every installed grade/subject option. Use this to discover what's available, then set_context.

list_unitsB

All top-level curriculum units for the active subject (for maths: chapters — number, title, domain). Numbering may skip.

get_curriculumA

The curriculum slice for one unit (for maths: a chapter's ordered lessons with components and tasks, the bilan lesson, and cross-unit progression). 'unit' is the unit's scope value (maths: the chapter number).

get_terminologyA

Search the MOHEBS French/Wolof terminology used as the fallback when the KG lacks a term's wording. Returns [] if nothing matches — then say the wording is missing rather than invent it.

terminology_sectionsA

List terminology sections and entry counts.

get_promptA

Return the generation prompt for one of the active subject's deliverables (its DeliverableSpec.promptFile). 'deliverable' is a deliverable key — for maths, 'manual' or 'lessons'.

get_generation_contextC

One call to load before generating: curriculum for the unit, plus subject-specific context (for maths: established characters, a fresh example-domain suggestion, and — for the teacher guide — the manual to build on). 'unit' is the scope value (maths: chapter number); 'deliverable' is a deliverable key (maths: 'manual' or 'lessons').

suggest_fresh_domainA

Suggest an unused (or least-recently-used) example domain so chapters rotate object families. Maths-specific (example-domain rotation).

domain_usageB

Which example domains have been used, and in which chapters. Maths-specific (example-domain rotation).

reconcileA

List the documents in Firebase Storage and diff against history: tracked docs, UNTRACKED docs needing ingestion, entries dropped because their object is gone, and duplicate resolutions.

list_documentsC

Current history: one canonical entry per document, with its known content.

create_upload_urlA

Get a short-lived signed URL to upload a generated .docx to the bucket. Upload with an HTTP PUT, Content-Type application/vnd.openxmlformats-officedocument.wordprocessingml.document. relPath is like 'chapitre_05/Manuel - Chapitre 5.docx'. After uploading, call log_generation with the same relPath. REQUIRES CONFIRMATION: called without confirm:true it only returns a needsConfirmation notice — ask the user to approve the upload, then call again with confirm:true.

create_download_urlA

Get a short-lived signed URL to download an EXISTING .docx from the bucket with an HTTP GET (no auth header needed). relPath is documents-relative, like 'chapitre_05/Manuel - Chapitre 5.docx' — the same path used by create_upload_url and get_document_text. Use this to fetch the original binary file (with its images and formatting intact) so you can edit it and re-upload via create_upload_url. Returns { url, objectKey, expiresAt, exists }; exists is false when there is no such object.

get_document_textA

Extract the plain text of a document in the bucket (by its documents-relative path) so you can read an UNTRACKED document and then record its content. When identifying characters, read the WHOLE document — characters appear in the opening scene AND in the activities and bilan, not only the amorce.

record_document_contentA

After reading an UNTRACKED document's text, store the structured content you extracted into history so it is never re-parsed. For characters, include every one found ANYWHERE in the document (opening scene and activities/bilan), each with details like {name, type}. The object must already be in the bucket. 'unit' is the scope value (maths: chapter number); 'deliverable' is a deliverable key (maths: 'manual' or 'lessons'). REQUIRES CONFIRMATION: called without confirm:true it only returns a needsConfirmation notice — ask the user to approve writing to history, then call again with confirm:true.

log_generationA

Call after uploading a generated .docx to the bucket (via create_upload_url). Reads the object's hash from storage and records what you produced so it feeds future consistency + variety. Log each character with details like {name, type} (e.g. {name:'Awa', type:'child'}), not just the name. No local file needed. 'unit' is the scope value (maths: chapter number); 'deliverable' is a deliverable key (maths: 'manual' or 'lessons'). REQUIRES CONFIRMATION: called without confirm:true it only returns a needsConfirmation notice — ask the user to approve writing to history, then call again with confirm:true.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/IDinsight/senegal-mohebs-tlm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server