AI Platform Engineer at rubica — LLM & MCP infrastructure and application & supply-chain security for a regulated Australian financial-advice platform. I built the platform's core end-to-end: multi-provider chat (AWS Bedrock, native Anthropic, Google, OpenAI), a Model Context Protocol (MCP) connector fleet, and the security posture that runs them.
Background in Cyber Security and Computer Engineering. Mostly TypeScript on Node.js and Next.js, with the Anthropic SDK on the platform side.
→ yusufhan.dev · /now · linkedin · x
- vercel-seo-audit — CLI and GitHub Action auditing Next.js / Vercel deploys for SEO and indexing failures; the October 2026 releases added a check for metadata streamed into the body, plus
--onlyand--ignore. Published on npm. - webhook-hmac-kit — Webhook signing that hashes the bytes, not a decoded string. Stripe-style and Standard Webhooks formats, no runtime dependencies. The 2.2.0 and 2.3.0 releases ship a test-vector corpus (
npx webhook-hmac-kit vectors), a Web Request adapter and Hono middleware. - clean-repo-standard — Production-safe GitHub repo template: branch protection, CI, PR templates, verified commits.
modelcontextprotocol/registry#1583— fix(validators): reject invalid argument types and empty positional argumentsmodelcontextprotocol/registry#1457— fix(publisher): pad ECDSA P-384 signature to fixed widthmodelcontextprotocol/registry#1588— fix(publisher): tolerate transient device-flow failures during login pollinggetsentry/sentry-javascript#24233— feat(bun): Capture Bun.serve request bodies withmaxRequestBodySizegetsentry/sentry-javascript#24070— fix(deno): Gate tracing integrations on hasSpansEnabledgetsentry/sentry-javascript#24030— fix(deno): Don't throw in Deno.serve wrapper when no client is boundmodelcontextprotocol/conformance#476— fix(http-base): return valid empty results for unhandled list methodsmodelcontextprotocol/servers#3893— fix(memory): resolve Vitest false positive for expected rejectionaws/aws-sdk-js-v3#8281— fix(credential-provider-node): handle passive credential refresh rejectionmodelcontextprotocol/registry#1436— fix(api): allow PATCH in CORS so browsers can call the status endpointsrjsf-team/react-jsonschema-form#5044— fix(@rjsf/core): prevent extraErrors duplication on array field mutation (#5041)modelcontextprotocol/registry#1145— feat(publisher): copy version from package.json and prefer mcpName in initmodelcontextprotocol/registry#1149— fix(publisher): omit repository when URL cannot be detectedmodelcontextprotocol/typescript-sdk#1875— feat(client): support custom claims in PrivateKeyJwtProvidercased/kit#189— fix: don't post non-actionable errors as GitHub review commentscloudflare/workerd#6040— Add TextDecoder support for x-user-defined encoding (fixes #6039)CodeWithCJ/SparkyFitness#621— fix(health-data): apply default units for HealthConnect sync (fixes #567)
- CVE-2026-44429 — Stored XSS in the official Model Context Protocol Registry catalogue UI; reported May 2026, fixed by the maintainers in 1.7.7.
- CVE-2026-104850 — MCP TypeScript SDK, High 7.5. The client sent stored OAuth credentials to whichever authorisation server the MCP server named. Credited reporter (shared credit); published 06 Oct 2026.
- GHSA-8w82-h3w4-62r5 — Twenty CRM, no CVE. A user allowed to manage members but not roles could invite an account straight into the Admin role. Credited reporter (shared credit); fixed in 2.47.0, published 19 Oct 2026.
The Lessons series — long-form essays on production AI systems, MCP, LLM infrastructure, and security engineering.
Write-ups: CVE-2026-44429 · CVE-2026-104850 · two bodies, one valid webhook signature




