Built for humans. Queryable by machines.
Every page has a markdown variant. Every data point is structured. AI agents can query this portfolio as a tool.
Every page has a markdown variant. Every data point is structured. AI agents can query this portfolio as a tool. Everything below is auto-generated from four TypeScript data files.
01 — For LLMs
Markdown surfaces designed for large language models to read and index.
/llms.txt— Curated index with links. Follows the llms.txt spec./llms-full.txt— Complete site content in one document. ~28,000 words./llms-lite.txt— Elevator pitch. Under 100 words./profile.md— One-page identity document. Supports?context=recruiting|collaboration./system-prompt.md— Instructions for AI systems representing me.
02 — Structured Data
Machine-readable JSON endpoints for programmatic access.
/resume.json— JSON Resume v1.0.0. Work, education, skills./feed.json— JSON Feed v1.1 with full post content./knowledge-graph.json— 117 nodes, 146 edges. Skills, projects, companies, posts./.well-known/ai.json— AI discovery manifest. Lists every surface.
03 — APIs
RESTful endpoints returning structured JSON with content negotiation.
/api/profile— Structured identity JSON. Supports?context=for selective disclosure./api/introduce?to=— Tailored introductions for 6 audience types./api/capabilities— What this site can do, with endpoint URLs./api/mcp— MCP server. 5 tools via JSON-RPC. Details below.
04 — Markdown Pages
Every page available as clean markdown via content negotiation.
/about.md— Bio, experience, education, skills./blog.md— Blog index with excerpts./blog/{slug}.md— Full blog post as clean markdown./work.md— All projects, categorized./work/{slug}.md— Full case study./contact.md— Contact information and machine-readable links.
05 — MCP Server
Connect any MCP-compatible client to query this portfolio as a tool. No authentication required.
{
"mcpServers": {
"fardiniqbal": {
"url": "https://fardiniqbal.com/api/mcp"
}
}
}Available Tools
get_profile(context?: recruiting | collaboration | public)— Professional profile with selective disclosure.get_resume()— Full resume in JSON Resume format.search_blog(query: string)— Search posts by keyword, tag, or content.list_projects(category?, featured_only?)— Filter projects by category.get_skills()— Categorized skills from resume data.
How it works
Change the data, push to git, and every surface updates automatically. No manual files, no database, no CMS.
- 01 · Source — Four TypeScript data files are the single source of truth for everything on this site. (
blog.ts,projects.ts,experience.ts,case-studies.ts) - 02 · Pipeline — A generation library reads the data and produces every surface, route, and schema. (
ai-surfaces.ts,mcp-tools.ts) - 03 · Output — 30+ surfaces, 5 MCP tools, and 4 JSON-LD schemas. All auto-generated, zero maintenance. Push to git, everything updates.
Crawler Policy
AI crawlers are explicitly welcomed. GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and 9 others are allowed in robots.txt. Every page has JSON-LD structured data. Blog posts include BlogPosting schema with word count and full metadata.