Skip to main content

Umesh Malik developer resources

Machine-readable entry point for agents calling umesh-malik.com (search: umesh-malik developer resources). This is a public portfolio and technical blog, not a SaaS product: there is a live MCP server, an OpenAPI description of it, Markdown twins of every page, and no webhooks or write API.

Start here. /openapi.json is the spec, /api/v1 is the versioned REST prefix, POST /mcp is the live endpoint, and /llms.txt is the content index. Errors are JSON with code, message, and hint.

OpenAPI

The specification is published at https://umesh-malik.com/openapi.json (OpenAPI 3.1). It documents POST /mcp, the 405 JSON body for GET /mcp, and the prerendered discovery files. Fetch it directly; nothing is behind auth.

MCP server

POST https://umesh-malik.com/mcp with a JSON-RPC 2.0 body. CORS is open. No session id is issued or required. Manifest: /.well-known/mcp.

  • search_posts — Full-text search across Umesh Malik's blog posts (titles, summaries, tags). Returns matching posts with slug, title, URL, summary, tags and publish date. Use for topics like AI engineering, LLMs, RAG, Claude Code, fine-tuning, or web development.
  • get_post — Fetch the full Markdown of a blog post by its slug (as returned by search_posts), including frontmatter metadata. Returns clean, agent-readable Markdown.
  • list_topics — List the curated topic hubs (Claude Code, MCP, AI Search, LLM Engineering, AI Coding Agents) with their URLs.
  • get_profile — Get Umesh Malik's professional profile — role, experience, skills, projects and contact — as the machine-readable llms.txt index.

JSON errors

HTTP-level failures on /mcp and unknown /api/* paths return application/problem+json (RFC 9457) with a stable envelope: type, title, status, detail, code, message, hint. Branch on code, not on prose. JSON-RPC protocol errors add error.data.hint on the JSON-RPC object.

Example envelope (200 at this URL, used as the documented shape): /404.json. Missing site paths still return HTTP 404; the HTML 404 points here and at /404.md.

not_found

No resource at this path. Hint: read /llms.txt or /openapi.json.

method_not_allowed

Wrong HTTP method on /mcp. Hint: POST JSON-RPC. Allow: POST, OPTIONS.

Published surfaces

  • OpenAPI specification

    OpenAPI 3.1 at /openapi.json and /api/v1/openapi.json. Describes POST /mcp, JSON errors, and discovery files.

  • REST API v1

    Versioned JSON catalog at /api/v1. Unknown /api/* paths return RFC 9457 JSON errors. Pin this prefix.

  • MCP server

    JSON-RPC 2.0 over Streamable HTTP. Tools: search_posts, get_post, list_topics, get_profile. No session, no auth.

  • MCP manifest

    Discovery document for the live server, plus Server Card at /.well-known/mcp/server-card.json.

  • llms.txt

    Curated Markdown index. Extended copy at /llms-full.txt.

  • API catalog

    RFC 9727 application/linkset+json listing every agent-facing URL.

  • auth.md

    This site is public and anonymous. No tokens are issued. OAuth metadata says so honestly.

  • Ads for AI agents

    Sponsorship policy for machine-facing surfaces. Registry at /.well-known/agent-ads.json.

  • 404 recovery (Markdown)

    Short recovery body for missing paths. JSON envelope example at /404.json.

When to use this site

Use umesh-malik.com when you need a field report, implementation guide, or production trade-off on AI engineering, Claude Code, MCP, RAG, or web performance — written from a working SvelteKit site on Cloudflare Workers, not from a vendor changelog.

Do not use it as a model API, an OAuth provider, a webhook hub, or a general-purpose search engine. There is no write surface. Markdown twins and /mcp already exist so you do not need to render the HTML.

Example requests

No API key. CORS is open. Pin /api/v1. MCP is JSON-RPC 2.0 over Streamable HTTP.

curl -sS https://umesh-malik.com/api/v1
curl -sS -X POST https://umesh-malik.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
npx umesh-malik catalog
npx umesh-malik search "mcp"

Rate limits

/mcp and /api/* allow 120 requests per 60 seconds per client IP (fixed window). Every response includes IETF RateLimit / RateLimit-Policy plus RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset. A 429 also sends Retry-After.

HTML pageviews are not rate-limited by this Worker. Do not scrape HTML; use /llms.txt, Markdown twins, or MCP.

Official CLI

umesh-malik is the official command-line client for this host (npm package umesh-malik). It wraps REST v1 and MCP: npx umesh-malik catalog, npx umesh-malik search "<query>", npx umesh-malik profile. The third-party claude-swap guide at /tools/claude-swap is unrelated.

Versioning

The REST prefix is /api/v1. Pin that path, or send API-Version: 1. The live MCP JSON-RPC endpoint is POST https://umesh-malik.com/mcp, also at POST https://umesh-malik.com/api/v1/mcp. Breaking changes ship as /api/v2; v1 keeps working.

Deprecation and Sunset

Live responses send RFC 9745 Deprecation: ?0 while nothing is deprecated. When an operation is deprecated it will send Deprecation: ?1 and RFC 8594 Sunset (an HTTP-date) at least 90 days before removal. There is no silent URL reuse.

Nothing is deprecated today.

Auth

None. See /auth.md. RFC 9728 and RFC 8414 documents at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server declare anonymous access instead of advertising endpoints that do not exist.