Skip to main content
May 2026
Update
Monthly update — May 2026

What shipped in May 2026

May was a wide-front month: the EkaScribe SDK surface kept maturing across web and mobile, EkaAgents broadened from doctor-booking into service and appointment workflows, EMR’s records experience on Android gained the time and state-recovery primitives it had been missing, and Platform shipped a quiet but meaningful run of design-system, network, and ABDM improvements.Reliability & Uptime — The biggest reliability work landed in the EMR records pipeline on Android. Health Records Android now keeps its own TimeProvider that tracks a server-time offset persisted in SharedPreferences, updated whenever a sync response comes back with a Date header. Anywhere the SDK previously called System.currentTimeMillis() for record and file timestamps, it now uses the synchronized clock — so createdAt, updatedAt, and lastUsed stay in sync across devices with skewed clocks. Alongside that, a stale-analysing-record reset clears the is_analysing flag for documents stuck in analysis past a cutoff, triggered automatically when records are read — so a crashed or interrupted parse no longer leaves a document permanently in the analysing state. On EkaScribe Android, session polling that previously slid into COMPLETED on failure now correctly transitions to ERROR and short-circuits the rest of the poll chain.Performance — Android record-preview hot paths moved off the UI thread: image URI resolution, large-image validation, and orientation handling now run on Dispatchers.IO via LaunchedEffect, and the preview list passes File objects directly to AsyncImage instead of manually decoding bitmaps. File downloads switched to MediaStore on Android Q+ for scoped-storage compliance, with stream-based copy to public Downloads and a dedicated records_temp cache sub-directory with stricter cleanup on failure. On the JS side, the new scribe UI widget cut the integration surface significantly — what used to require wiring capture, status, and transcript primitives is now one drop-in component.Security & Compliance — The MCP server’s OAuth discovery flow was hardened to derive its origin from RFC 7239 forwarded headers before falling back to x-forwarded-proto, so https:// URLs are advertised correctly when fronted by AWS API Gateway. /.well-known/oauth-protected-resource also now matches subpaths (e.g. /mcp), fixing 404s for clients that probe with the resource path appended. On the ABDM front, abdm-ecdh picked up a Java implementation of the ECDH primitives alongside the existing Python and Go bindings, with a CI pipeline added and the Python release path corrected — making it materially easier for JVM-based HIP/HIU integrations to handle ABDM consent and data exchange.Scalability — EkaNetwork Android’s init now accepts a list of custom OkHttp interceptors, stored per appId and threaded into both the AuthApi and dynamically-created services. Eka Scribe Android, Health Records Android, and android-document-ui all picked up the new network version, so hosts can plug in logging, tracing, or header interceptors without forking the network layer. The Aakaar design system’s tokens.ts was decoupled from antd, so consumers of @eka/aakaar/tokens and the Aakaar MCP server no longer transitively pull antd into their bundles.Developer Infrastructure & Tooling — The Aakaar MCP server got a component-metadata path-resolution fix, and the EditableTable bottom AutoSuggest dropdown now anchors to the nearest scrollable ancestor via a configurable getPopupContainer — eliminating stale dropdown positions after row inserts and the stuck-scroll state after mass-clearing rows. The EkaScribe TS SDK wrapped VadWebClient’s lifecycle methods in defensive try/catch with namespaced [EkaScribe] logging, so errors in the VAD path no longer escape to the host page.EkaScribe — The product surface continued to mature on every runtime. The Eka JS SDK shipped a packaged scribe recording widget and a startRecordingV2 entry point that exposes the next-generation recording flow alongside the existing startRecording. The MedScribe Alliance TypeScript SDK added pause and resume controls for in-progress recordings, plus a feature update tracking the LIFE-1696 work item that refreshed session and recording surfaces across thirteen files. The EkaScribe TS SDK at v2.1.50 picked up getDocument, getSessionDetails, and startRecordingForExistingSession, alongside an optional publish payload on the document API and user_status on patchTransactionStatus — closing out the full document and session lifecycle.EMR — Templar receipts now print GST and use a pt attribute that carries a date. The OPD slip template was rewritten from string templates to JSX, aligning it with the rest of the engine. A new examinationFindings property group landed with backward-compatible support for legacy notes, and a long-running text-wrapping rendering bug was fixed. The patient age field on Templar receipts moved from a numeric ageInM to a richer age string — a breaking change for TPdfObject callers, but one that produces a more clinically meaningful age label. On Android, the records grid item’s analysing state was consolidated into the SmartTag component, and the AddRecord preview activity got the stability, performance, and scoped-storage work described above.EkaAgents — The Eka MCP SDK widened its tool surface meaningfully. New tools — service_availability_elicitation, book_service, show_appointments_basic, get_patient_appointments_basic, and a CRM lead-creation tool — extend agents from doctor-booking into service/health-package booking, appointment lookups, and lead capture. The doctor_availability_elicitation flow now returns selected_doctor_id and selected_hospital_id in _meta.tool_result, the doctor-availability success response was enriched, and the user’s selected hospital is now ranked first in availability listings. The Echo Agent Kit added AG-UI streaming, Anthropic Claude prompt support, and a skills concept for building modular, reusable agent capabilities.
April 2026
FeatureUpdate
Monthly Transparency Post

Under the Hood — April 2026

April was about turning the AI agent infrastructure we’ve been investing in into something production-grade — faster, more bounded, and easier to authenticate against — while continuing to harden the EMR, EkaScribe, and ABDM surfaces around it. We also opened up two pieces of internal IP to the wider community.

AI agent infrastructure

The Echo Agent Kit’s MCP integration got the most substantial rework of the month. The old monolithic MCP cache was retired in favor of a split design: tool discovery and MCP sessions now live in separate caches, each with its own idle and absolute TTLs, LRU eviction on pool exhaustion, and concurrent cache-miss serialization to prevent duplicate discovery work. Tool cache keys are partitioned by configurable headers, and user_session_id is now plumbed through MCPTool.run via tool_context — so per-user sessions stay correctly isolated even under load.We also put bounds on tool execution: MCP tool calls in the Echo Agent Kit are now capped at a 10-second timeout, so a slow downstream tool can no longer block an agent response indefinitely. Empty prompt variables are handled gracefully too — optional placeholders no longer throw.On the MCP Server itself, we shipped OTP-based authentication for EMR workspaces (with country code selection and UHID profile picking, all mid-conversation), added a doctor discovery tool for EMR clinics, introduced an interactive elicitation flow that lets agents confirm doctor availability before booking, and made the MCP SDK fall back to the default EMR tool set when a workspace has no explicit configuration — a meaningful resilience improvement for new workspace onboarding. Profile creation in the MCP SDK now requires a mobile number, ensuring downstream integrations always have a contactable identifier.The MedAssist surface saw steady iteration too — a contextual popup tied to conversation state, configurable onboarding nudges so partners can suppress unsolicited prompts, a proper agent-ID resolution fix, file-upload validation against an allow-list of supported types, and a responsive layout pass that fixes overflow on screens under 360px and 767px wide. A microphone regression was caught and reverted same-day.

Reliability and SDK hardening

EkaScribe’s SDKs leveled up across all three runtimes. The Android SDK switched from AAC/MP4 to LAME-based MP3 encoding for more reliable chunk uploads, and its result polling now inspects integration, transcript, and custom statuses inside templateResults instead of the legacy output list — with empty statuses correctly treated as failures rather than timing out. The iOS SDK now processes audio chunks in parallel, cutting end-to-end transcription latency for longer recordings. The JavaScript SDK gained createDocument, deleteDocument, and getChunkTranscript for full programmatic document lifecycle control, plus expanded polling parameters and a longer 20-second status API timeout. EkaScribe iOS DocAssist also now surfaces voice-to-text failures with a clear error state instead of silently dropping recordings.On the Android side, the document UI no longer crashes when PDF rendering initializes before view layout constraints are available — view setup is now properly gated. Medical Records Android validates oversized images before upload, moves PDF URI resolution off the main thread, and the Health Records SDK handles missing files during record processing gracefully with improved MD5 checksum error handling.The Patient Directory TypeScript SDK got a forceApiSearch flag for high-confidence lookups that need to bypass the local cache, and we fixed a stale-cache edge case where partial cached state could surface incorrect results.

Platform and integrations

We extended the Patient Directory APIs with two new endpoints — retrieve a patient profile by username and update an EMR user profile — plus a GET endpoint to retrieve an EMR user by OID. The extras field also got documented restrictions (no nested lists, dictionaries with one level of nesting, 16-character key limit, leading-underscore keys ignored) so integrators can rely on consistent shape contracts. The eka-usage-sdk shipped at v0.1.1 with a fixed test runner and the latest Kafka usage metric event definitions, and the ABDM-related usage events were updated to match current consent and linking flows.The Templar prescription engine saw a steady drumbeat of EMR-facing improvements: clinic name on OPD slips; cleaner doctor name rendering on IPD receipts and bills (using profile first/last name fields directly); a show_signature flag plus cache-busting query parameters for S3-hosted PDF assets; corrected ophthalmology table ordering; richer IPD admission templates; an IPD admission TinyMCE preview fix; QR code repositioned into the footer details for cleaner headers; a unit_display_name fallback to name for cleaner unit labels; the addition of pachymetry, Amsler grid, and contact lens examination tables; structured diet chart sections in prescriptions; and a Total Paid / Amount Due summary on IPD billing PDFs. OPD slips also got tags and a larger token font for readability at the front desk.

Open-sourcing internal IP

Two pieces of work landed in the open-source column. BODHI — two SNOMED-linked clinical knowledge graphs (bodhi-s for condition–symptom mapping and bodhi-m for concept–drug–lab investigation mapping, with 9,300+ nodes and 16,700+ relationships across six interchange formats) — is now publicly available under CC BY-NC 4.0 for symptom checking, differential diagnosis, and patient health profiling use cases. And the ABDM ECDH key-exchange primitives we use internally for secure consent and data-fetch flows are now distributable as a Python package, so partners can integrate ABDM-aligned encryption helpers without re-implementing the protocol.

Developer experience

The EkaScribe documentation got a substantial revamp: a new Quick Start guide walks integrators through installing the TypeScript SDK and transcribing a first consultation in minutes; SDKs are now promoted as the recommended integration path with REST APIs second and Chrome Extension third; v1 APIs are clearly marked deprecated with migration pointers to v2; and SDK sidebar titles use proper casing. The result is a faster, less ambiguous path from “first time visiting the docs” to a working transcription.

What’s next

In May, we’re focused on continuing to extend the Echo Agent Kit (audio transcription, lazy-loaded skills, and Postgres-backed tools have already started landing in early May), expanding doctor and patient directory APIs further, and tightening the production posture of the MCP Server’s caching and authentication paths.
March 2026
FeatureUpdate
Monthly Transparency Post

Under the Hood — March 2026

March was about making AI agents more capable and more connected. We expanded what agents can do — from booking appointments to managing ABHA profiles — while investing in the developer experience to make sure integrators can connect, authenticate, and build quickly.

Product highlights

  • ABHA login and profile management via MCP — AI agents can now handle full ABHA workflows (login, OTP verification, profile selection, card retrieval) during a conversation, no manual steps needed. View changelog
  • Vaccination and appointment reminder webhooks — New webhook endpoints for vaccination reminders, appointment reminders, and follow-up variants let integrations react to scheduling events in real time.
  • Follow-up appointment confirmation API — A new endpoint to programmatically confirm follow-up appointments, removing the need for manual intervention.
  • Ophthalmology data in prescription PDFs — Prescription PDFs now include pachymetry, Amsler grid, and contact lens examination tables, rounding out ophthalmology support across the platform.
  • IPD billing PDF generation — Clinics can now generate inpatient billing documents as structured PDFs with itemized charges and pricing summaries.

AI agent infrastructure

March saw sustained investment in the Eka MCP Server — the core interface between AI assistants and the Eka healthcare platform.We added five new tools this month: appointment rescheduling, patient benefits lookup, ABHA login and profile management, and doctor discovery with metadata forwarding. Each tool follows the authenticated remote MCP specification, so any compatible AI client can use them without custom integration work.Authentication got more flexible too. The MCP Server now supports email-based verification alongside mobile, and tools can prompt for credentials mid-conversation through elicitation — meaning the user never has to leave their AI client to authenticate.On the developer experience side, we restructured the MCP documentation into separate Remote and Local SDK guides, published the server on Smithery for easier discovery, and added comparison tables so developers can choose the right deployment model in seconds.

SDK and integration tooling

The EkaScribe Android SDK shipped Architecture V2 (v4.0.4) with Java support, session cancellation, and idempotent state management — a significant reliability improvement for integrators running the SDK in production. The JS SDK received error tracking improvements, header handling fixes, and ES6 build support.The Echo Agent Kit gained _meta field support and improved elicitation handling, aligning it with the latest MCP specification. The Pagify SDK cleaned up iframe lifecycle management to prevent lingering embedded views.On the mobile side, MedAssist on iOS now handles app backgrounding gracefully — sessions reconnect automatically — and error messages are surfaced clearly instead of failing silently. Suggestion chips, message bubbles, and file upload handling were all refined.

Documentation and developer experience

We published structured ABDM milestone guides (M1–M4) covering the full integration path from ABHA creation through health data exchange. The Doctor Profile API was extended with a salutation field. OPD slips now display price and patient attributes.The Medical Records Android SDK gained conditional visibility for record grid items, and the changelog itself was cleaned up (Gmail subscription links and GitHub repository links corrected).

What’s next

In April, we’re focused on expanding MCP tool coverage across the EMR, improving real-time event delivery for webhook consumers, and continuing to harden the authentication and session management layers across all SDKs.