<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>MirrorMingo Developers Blog</title>
        <link>https://developers.mirrormingo.com/blog</link>
        <description>MirrorMingo Developers Blog</description>
        <lastBuildDate>Fri, 23 Oct 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[New: the MirrorMingo games playbook]]></title>
            <link>https://developers.mirrormingo.com/blog/2026-10-games-playbook</link>
            <guid>https://developers.mirrormingo.com/blog/2026-10-games-playbook</guid>
            <pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[A screenshot-led guide to every MirrorMingo learner game and reward — how to play, what you can win, and the exact rules — for learners, parents and teachers.
]]></description>
            <content:encoded><![CDATA[<p>Learners ask us how many Sparks a game pays. Parents ask what "the ladder" is.
Teachers ask how the Sunday class competition picks its finalists. The answers
are now in one place: the <strong><a class="" href="https://developers.mirrormingo.com/docs/playbook">games playbook</a></strong>.</p>
<div class="pb-gallery"><figure class="pb-shot is-phone"><div class="pb-shot__frame"><img src="https://developers.mirrormingo.com/img/playbook/arena-home-basic.webp" alt="The Arena home." loading="lazy"></div><figcaption>The Arena home.</figcaption></figure><figure class="pb-shot is-phone"><div class="pb-shot__frame"><img src="https://developers.mirrormingo.com/img/playbook/times-play.webp" alt="Times Fun, a Basic quick game." loading="lazy"></div><figcaption>Times Fun, a Basic quick game.</figcaption></figure><figure class="pb-shot is-phone"><div class="pb-shot__frame"><img src="https://developers.mirrormingo.com/img/playbook/ladder-home.webp" alt="The Mingo Ladder." loading="lazy"></div><figcaption>The Mingo Ladder.</figcaption></figure></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-inside">What's inside<a href="https://developers.mirrormingo.com/blog/2026-10-games-playbook#whats-inside" class="hash-link" aria-label="Direct link to What's inside" title="Direct link to What's inside" translate="no">​</a></h2>
<ul>
<li class=""><strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/mingo-sprint">Mingo Sprint</a></strong> — two rounds of five lesson questions, Relaxed or Beat the Clock, 2 Sparks per right answer.</li>
<li class=""><strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/basic-games">Twelve quick games</a></strong> — six for Basic 1 to 6 and <a class="" href="https://developers.mirrormingo.com/docs/playbook/secondary-games">six for secondary school</a>, each with step-by-step screenshots of the real game and its levels.</li>
<li class=""><strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/sparks">Sparks</a></strong> and the <strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/style-lab">Style Lab</a></strong> — every way to earn, the 60-a-day limit, outfit prices and the Beginner, Stylish and Iconic ranks.</li>
<li class=""><strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/mingo-ladder">The Mingo Ladder</a></strong> — 70 steps from Rookie to Legend, gift boxes, streak shields and term seasons.</li>
<li class=""><strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/stickers">Stickers</a></strong> and <strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/friends">playing with friends</a></strong>.</li>
<li class=""><strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/class-competition">The Sunday class competition</a></strong> — 4 pm to 5 pm Lagos time, three knockout rounds, monthly points and prize Sunday, plus how <strong><a class="" href="https://developers.mirrormingo.com/docs/playbook/mmt-tokens">MMT tokens</a></strong> from lessons can earn a seat in the class final.</li>
</ul>
<figure class="pb-shot is-desktop"><div class="pb-shot__frame"><img src="https://developers.mirrormingo.com/img/playbook/sprint-desktop-play.webp" alt="A Mingo Sprint on a computer." loading="lazy"></div><figcaption>A Mingo Sprint on a computer.</figcaption></figure>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="written-for-families">Written for families<a href="https://developers.mirrormingo.com/blog/2026-10-games-playbook#written-for-families" class="hash-link" aria-label="Direct link to Written for families" title="Direct link to Written for families" translate="no">​</a></h2>
<p>Every page is in plain language, with numbered steps, tables and
screenshots taken from the app itself — no made-up drawings. Every number in it comes from the rules the app actually runs.
If the team changes a price in the Style Lab, the app always shows the current
one.</p>]]></content:encoded>
            <category>arena</category>
            <category>games</category>
            <category>learners</category>
            <category>parents</category>
        </item>
        <item>
            <title><![CDATA[Build an AI exam tutor in 10 minutes with MirrorMingo + MCP]]></title>
            <link>https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp</link>
            <guid>https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp</guid>
            <pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Connect any MCP-capable agent to MirrorMingo's verified exam content and build a study tutor that quizzes students on real past papers — without writing integration code.
]]></description>
            <content:encoded><![CDATA[<p>In our <a class="" href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api">launch post</a> we
opened up verified African exam content via a REST API and six SDKs. This post
is about the other way in: the <strong>Model Context Protocol (MCP) server</strong>, which
lets an AI agent use MirrorMingo as a native tool.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-mcp-matters-for-edtech">Why MCP matters for edtech<a href="https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp#why-mcp-matters-for-edtech" class="hash-link" aria-label="Direct link to Why MCP matters for edtech" title="Direct link to Why MCP matters for edtech" translate="no">​</a></h2>
<p>A lot of new study software isn't a traditional app at all — it's an agent. A
chat tutor, an IDE-style "explain this" assistant, a WhatsApp study buddy.
Those agents are only as good as the tools they can reach.</p>
<p>The problem with most AI tutors is the same one we've always had: when an LLM
<em>invents</em> exam questions, students practise on material that won't appear and
sometimes isn't even correct. MCP fixes the plumbing; MirrorMingo fixes the
content. Together, the agent stops guessing and starts pulling <strong>real past
papers</strong>, then marks the student against the verified answer key.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-mcp-briefly">What is MCP, briefly<a href="https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp#what-is-mcp-briefly" class="hash-link" aria-label="Direct link to What is MCP, briefly" title="Direct link to What is MCP, briefly" translate="no">​</a></h2>
<p>The <a href="https://modelcontextprotocol.io/" target="_blank" rel="noopener noreferrer" class="">Model Context Protocol</a> is an open
standard for connecting AI assistants to tools and data. A "server" exposes
tools; a "client" lets the model call them. MirrorMingo ships an MCP server, so
MCP-capable clients can use our exam tools with zero glue code.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="setup">Setup<a href="https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp#setup" class="hash-link" aria-label="Direct link to Setup" title="Direct link to Setup" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">pip </span><span class="token function" style="color:hsl(221, 87%, 60%)">install</span><span class="token plain"> mirrormingo</span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token builtin class-name" style="color:hsl(35, 99%, 36%)">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:hsl(221, 87%, 60%)">MIRRORMINGO_API_KEY</span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain">mirrormingo_xxx   </span><span class="token comment" style="color:hsl(230, 4%, 64%)"># from Account → Developer</span><br></div></code></pre></div></div>
<p>Add it to your MCP client config:</p>
<div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token property" style="color:hsl(5, 74%, 59%)">"mcpServers"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token property" style="color:hsl(5, 74%, 59%)">"mirrormingo"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"command"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"mirrormingo-mcp"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">      </span><span class="token property" style="color:hsl(5, 74%, 59%)">"env"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"> </span><span class="token property" style="color:hsl(5, 74%, 59%)">"MIRRORMINGO_API_KEY"</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"mirrormingo_xxx"</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><br></div></code></pre></div></div>
<p>Restart your MCP client. That's the whole integration.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="use-it">Use it<a href="https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp#use-it" class="hash-link" aria-label="Direct link to Use it" title="Direct link to Use it" translate="no">​</a></h2>
<blockquote>
<p><strong>You:</strong> Use MirrorMingo to give me 5 real JAMB Physics questions, one at a
time. Mark each answer and explain what I get wrong.</p>
</blockquote>
<p>Behind the scenes the agent calls <code>list_mock_papers</code> to find a Physics paper,
<code>open_mock_paper</code> to pull real questions, and <code>submit_mock_attempt</code> to score
your answers — all against verified content, none of it invented.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-tools">The tools<a href="https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp#the-tools" class="hash-link" aria-label="Direct link to The tools" title="Direct link to The tools" translate="no">​</a></h2>
<table><thead><tr><th>Tool</th><th>What the agent does with it</th></tr></thead><tbody><tr><td><code>list_exams</code></td><td>Discover supported exams</td></tr><tr><td><code>get_exam_overview</code></td><td>Understand structure and scoring</td></tr><tr><td><code>list_mock_papers</code></td><td>Find a real past paper</td></tr><tr><td><code>open_mock_paper</code></td><td>Start a timed attempt</td></tr><tr><td><code>submit_mock_attempt</code></td><td>Score answers with explanations</td></tr></tbody></table>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="safe-by-design">Safe by design<a href="https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp#safe-by-design" class="hash-link" aria-label="Direct link to Safe by design" title="Direct link to Safe by design" translate="no">​</a></h2>
<p>The MCP server is a thin layer over the <strong>same public API</strong> as our SDKs. It uses
your API key, so it inherits the same authentication and rate limits — an agent
can never reach beyond what your key allows. And because it's the same contract,
your MCP tutor and your REST-based app stay perfectly in sync.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="sdk-or-mcp--which">SDK or MCP — which?<a href="https://developers.mirrormingo.com/blog/2026-06-build-an-ai-exam-tutor-with-mcp#sdk-or-mcp--which" class="hash-link" aria-label="Direct link to SDK or MCP — which?" title="Direct link to SDK or MCP — which?" translate="no">​</a></h2>
<p>Both, usually. Use the <strong>SDKs</strong> for deterministic app logic (a timed exam UI, a
nightly sync job). Use the <strong>MCP server</strong> when an LLM should decide <em>when</em> to
fetch questions and <em>how</em> to coach. Same content underneath.</p>
<p><a href="https://developers.mirrormingo.com/quickstart" target="_blank" rel="noopener noreferrer" class="">Get an API key →</a></p>]]></content:encoded>
            <category>mcp</category>
            <category>ai-agents</category>
            <category>tutorial</category>
            <category>edtech</category>
        </item>
        <item>
            <title><![CDATA[Introducing the MirrorMingo Exam API]]></title>
            <link>https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api</link>
            <guid>https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api</guid>
            <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[Verified African exam content — JAMB, WAEC, NECO, IELTS, SAT and more — now available to every developer through a clean REST API, six SDKs, and an MCP server.
]]></description>
            <content:encoded><![CDATA[<p>Today we're opening up the engine behind MirrorMingo. The <strong>Exam API</strong> gives any
developer programmatic access to the thing that's hardest to build in African
edtech: a library of <strong>real, verified past-question papers</strong> and a timed
mock-exam engine — JAMB, WAEC, NECO, IELTS, SAT and more.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-we-built-it">Why we built it<a href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api#why-we-built-it" class="hash-link" aria-label="Direct link to Why we built it" title="Direct link to Why we built it" translate="no">​</a></h2>
<p>Every team building a study app in Nigeria — and across Africa — hits the same
wall. The questions.</p>
<p>Authentic past papers are scattered across PDFs, photocopies
and link-rot. Re-keying them is slow and error-prone, and the tempting shortcut —
asking an LLM to "generate JAMB questions" — produces plausible nonsense that
quietly teaches students the wrong things.</p>
<p>We spent years assembling and verifying this content against official exam-board
sources. Our one rule has never changed: <strong>we never fabricate a question.</strong> Now
you can build on that same foundation instead of rebuilding it.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-you-get">What you get<a href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api#what-you-get" class="hash-link" aria-label="Direct link to What you get" title="Direct link to What you get" translate="no">​</a></h2>
<ul>
<li class=""><strong>An exam registry</strong> — supported exams with official section specs, timing,
question types and scoring rubrics.</li>
<li class=""><strong>Verified past papers</strong> — grouped by year, each with a stable <code>paper_id</code>.</li>
<li class=""><strong>A mock-exam engine</strong> — open a paper into a timed attempt, page through
questions, submit answers, get scored feedback.</li>
<li class=""><strong>Verified source links</strong> — official exam-board and past-question references.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="hello-world">Hello, world<a href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api#hello-world" class="hash-link" aria-label="Direct link to Hello, world" title="Direct link to Hello, world" translate="no">​</a></h2>
<div class="language-ts codeBlockContainer_Ckt0 theme-code-block" style="--prism-background-color:hsl(230, 1%, 98%);--prism-color:hsl(230, 8%, 24%)"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-ts codeBlock_bY9V thin-scrollbar" style="background-color:hsl(230, 1%, 98%);color:hsl(230, 8%, 24%)"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token keyword" style="color:hsl(301, 63%, 40%)">import</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"> MirrorMingo </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">from</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"@mirrormingo/sdk"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> mm </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">new</span><span class="token plain"> </span><span class="token class-name" style="color:hsl(35, 99%, 36%)">MirrorMingo</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"> apiKey</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> process</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">env</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token constant" style="color:hsl(35, 99%, 36%)">MIRRORMINGO_API_KEY</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> learnerId </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token string" style="color:hsl(119, 34%, 47%)">"student-42"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> catalog </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">await</span><span class="token plain"> mm</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">mockExams</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">listPapers</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">"jamb"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> attempt </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">await</span><span class="token plain"> mm</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">mockExams</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">open</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">"jamb"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  paperId</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> catalog</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">years</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">[</span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">]</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">papers</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">[</span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">]</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">paper_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  questionLimit</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">10</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  learnerId</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> answers </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> Object</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">fromEntries</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  attempt</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">questions</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">slice</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token number" style="color:hsl(35, 99%, 36%)">0</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token number" style="color:hsl(35, 99%, 36%)">3</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">map</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">question</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token plain"> </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    question</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">answer_id </span><span class="token operator" style="color:hsl(221, 87%, 60%)">??</span><span class="token plain"> </span><span class="token function" style="color:hsl(221, 87%, 60%)">String</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">question</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">question_number</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">    </span><span class="token string" style="color:hsl(119, 34%, 47%)">"A"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">]</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token keyword" style="color:hsl(301, 63%, 40%)">const</span><span class="token plain"> result </span><span class="token operator" style="color:hsl(221, 87%, 60%)">=</span><span class="token plain"> </span><span class="token keyword" style="color:hsl(301, 63%, 40%)">await</span><span class="token plain"> mm</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">mockExams</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">submit</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token string" style="color:hsl(119, 34%, 47%)">"jamb"</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  attemptId</span><span class="token operator" style="color:hsl(221, 87%, 60%)">:</span><span class="token plain"> attempt</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">attempt_id</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  answers</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain">  learnerId</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">}</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:hsl(230, 8%, 24%)"><span class="token plain"></span><span class="token builtin" style="color:hsl(119, 34%, 47%)">console</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token function" style="color:hsl(221, 87%, 60%)">log</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">(</span><span class="token plain">result</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">.</span><span class="token plain">feedback</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">)</span><span class="token punctuation" style="color:hsl(119, 34%, 47%)">;</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="six-sdks-one-source-of-truth">Six SDKs, one source of truth<a href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api#six-sdks-one-source-of-truth" class="hash-link" aria-label="Direct link to Six SDKs, one source of truth" title="Direct link to Six SDKs, one source of truth" translate="no">​</a></h2>
<p>We ship official SDKs for <strong>TypeScript/Node, Python, Java, PHP, Go and Dart</strong>.
All six are generated from a single OpenAPI spec, so they never drift from the
API. The TypeScript SDK is hand-crafted for the DX we wanted across our own apps.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="built-for-the-agent-era-too">Built for the agent era too<a href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api#built-for-the-agent-era-too" class="hash-link" aria-label="Direct link to Built for the agent era too" title="Direct link to Built for the agent era too" translate="no">​</a></h2>
<p>Because so much new learning software is being built <em>by AI agents</em>, we also
ship a <strong>Model Context Protocol (MCP) server</strong>. Point any MCP-capable app, IDE,
or agent at it and it can pull real JAMB questions and mark answers — no glue
code. More on that in the next post.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="pricing--access">Pricing &amp; access<a href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api#pricing--access" class="hash-link" aria-label="Direct link to Pricing &amp; access" title="Direct link to Pricing &amp; access" translate="no">​</a></h2>
<p>Start free in the <strong>sandbox</strong> with non-billable test keys. Production keys are
metered per request with a generous free tier. Create your first key at
<strong>Account → Developer</strong>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="get-started">Get started<a href="https://developers.mirrormingo.com/blog/2026-06-introducing-the-mirrormingo-exam-api#get-started" class="hash-link" aria-label="Direct link to Get started" title="Direct link to Get started" translate="no">​</a></h2>
<ul>
<li class=""><a href="https://developers.mirrormingo.com/quickstart" target="_blank" rel="noopener noreferrer" class="">Quickstart</a></li>
<li class=""><a href="https://developers.mirrormingo.com/integration-guide" target="_blank" rel="noopener noreferrer" class="">Integration guide</a></li>
<li class=""><a href="https://developers.mirrormingo.com/reference" target="_blank" rel="noopener noreferrer" class="">API reference</a></li>
</ul>
<p>We can't wait to see what you build. Tell us at <a href="mailto:developers@mirrormingo.com" target="_blank" rel="noopener noreferrer" class="">developers@mirrormingo.com</a>.</p>]]></content:encoded>
            <category>launch</category>
            <category>api</category>
            <category>developers</category>
            <category>edtech</category>
            <category>africa</category>
        </item>
    </channel>
</rss>