{"_id":"@alsotari/bio","_rev":"3-20591847b10b75a5428f6c1354ef4f60","name":"@alsotari/bio","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@alsotari/bio","version":"0.1.0","keywords":["mcp","model-context-protocol","bio","resume","claude","claude-desktop","cursor"],"author":{"url":"https://alsotari.online","name":"Mousa Soutari","email":"m.soutari@gmail.com"},"license":"Apache-2.0","_id":"@alsotari/bio@0.1.0","maintainers":[{"name":"msoutari","email":"m.soutari@gmail.com"}],"homepage":"https://alsotari.online","bugs":{"url":"https://github.com/MousaSoutari/alsotari-bio/issues"},"bin":{"alsotari-bio":"dist/index.js"},"dist":{"shasum":"cbbfdc0579994e6183aaca5fb0f98cb5aff89762","tarball":"https://registry.npmjs.org/@alsotari/bio/-/bio-0.1.0.tgz","fileCount":4,"integrity":"sha512-Cfd54YBZOWwfwjD8Nzm6Qw8IsnNzvU4kMIiBPlhLmojlBSvZ9zafca66F0umTExgPdqVbs543/+WRF2izR8Aag==","signatures":[{"sig":"MEUCIQCuXWT62L2v4emHEFKzVGO7N6a+dncF+IVX1tv99oOc+AIgbqGoifoAtf7rTIW3ow7U/ih7qoiGvBIyXMJUQCULa0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25343},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"b61b1f89ccee8aecea73238f99b756c8312bdcd0","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"msoutari","email":"m.soutari@gmail.com"},"repository":{"url":"git+https://github.com/MousaSoutari/alsotari-bio.git","type":"git"},"_npmVersion":"10.8.2","description":"Ask Claude about Mousa Soutari. An MCP server exposing Mousa's profile — availability, ventures, offerings, flagship work — as callable tools.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bio_0.1.0_1776671331206_0.7083269858136736","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@alsotari/bio","version":"0.1.1","keywords":["mcp","model-context-protocol","bio","resume","claude","claude-desktop","cursor"],"author":{"url":"https://alsotari.online","name":"Mousa Soutari","email":"m.soutari@gmail.com"},"license":"Apache-2.0","_id":"@alsotari/bio@0.1.1","maintainers":[{"name":"msoutari","email":"m.soutari@gmail.com"}],"homepage":"https://alsotari.online","bugs":{"url":"https://github.com/MousaSoutari/alsotari-bio/issues"},"bin":{"alsotari-bio":"dist/index.js"},"dist":{"shasum":"f67a9880430b9a949a8582527103daa1d71f5b2c","tarball":"https://registry.npmjs.org/@alsotari/bio/-/bio-0.1.1.tgz","fileCount":4,"integrity":"sha512-92rRxl9qzzsEKzSmRM5TByh2VXduEv7miccliQ4XlKgWMBMwi8IEdxy7KJaKS9cpBDYxny9co+TrdwCgecC+5Q==","signatures":[{"sig":"MEYCIQCVF43vq4k4yLR5QpvhOb3cmLK1BV9YO6KGTzcd1WHzegIhAO7FsH5wDpUppldq2CKx3cndEZmmpOLBfCPtWeleYPIv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28679},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"960632c8905c9d399f04b0bcf04111f1d2e382b8","scripts":{"dev":"tsup --watch","build":"tsup","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"_npmUser":{"name":"msoutari","email":"m.soutari@gmail.com"},"repository":{"url":"git+https://github.com/MousaSoutari/alsotari-bio.git","type":"git"},"_npmVersion":"10.8.2","description":"Ask Claude about Mousa Soutari. An MCP server exposing Mousa's profile — availability, ventures, offerings, flagship work — as callable tools.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.0.4"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3","@types/node":"^22.9.0"},"_npmOperationalInternal":{"tmp":"tmp/bio_0.1.1_1776672911188_0.9332076710590691","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@alsotari/bio","version":"0.2.0","description":"Ask Claude about Mousa Soutari. An MCP server exposing Mousa's profile — availability, ventures, offerings, flagship work — as callable tools.","license":"Apache-2.0","author":{"name":"Mousa Soutari","email":"m.soutari@gmail.com","url":"https://alsotari.online"},"homepage":"https://alsotari.online","repository":{"type":"git","url":"git+https://github.com/MousaSoutari/alsotari-bio.git"},"bugs":{"url":"https://github.com/MousaSoutari/alsotari-bio/issues"},"type":"module","bin":{"alsotari-bio":"dist/index.js"},"engines":{"node":">=18.0.0"},"scripts":{"build":"tsup","dev":"tsup --watch","start":"node dist/index.js","typecheck":"tsc --noEmit","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.4","zod":"^3.23.8"},"devDependencies":{"@types/node":"^22.9.0","tsup":"^8.3.5","typescript":"^5.6.3"},"keywords":["mcp","model-context-protocol","bio","resume","claude","claude-desktop","cursor"],"_id":"@alsotari/bio@0.2.0","gitHead":"2b80af6ccb39671a20e0cbdfb231eebb1f144ae4","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-gFF5bHtcJXL8dvuL8I6Lei2BwhZXU1q8FfJmmzoUJL5udAsM/PEKPAgRzEWC6aT+lgy4Z70ZlNBmueenKpL/PA==","shasum":"35c2d7dd31d51b946e4bc18138265bc2a4651781","tarball":"https://registry.npmjs.org/@alsotari/bio/-/bio-0.2.0.tgz","fileCount":4,"unpackedSize":31414,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAD2lhzKoMPUz2OsXqhjG/SFvTenU1wn5RyaodKertFzAiA9VUBmwPNVZpZgZpWXUPSkJx+VspxzrxYrNzQBCfQ0xA=="}]},"_npmUser":{"name":"msoutari","email":"m.soutari@gmail.com"},"directories":{},"maintainers":[{"name":"msoutari","email":"m.soutari@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bio_0.2.0_1776673902012_0.3704520648164633"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-20T07:48:51.100Z","modified":"2026-04-20T08:31:42.360Z","0.1.0":"2026-04-20T07:48:51.350Z","0.1.1":"2026-04-20T08:15:11.314Z","0.2.0":"2026-04-20T08:31:42.194Z"},"bugs":{"url":"https://github.com/MousaSoutari/alsotari-bio/issues"},"author":{"name":"Mousa Soutari","email":"m.soutari@gmail.com","url":"https://alsotari.online"},"license":"Apache-2.0","homepage":"https://alsotari.online","keywords":["mcp","model-context-protocol","bio","resume","claude","claude-desktop","cursor"],"repository":{"type":"git","url":"git+https://github.com/MousaSoutari/alsotari-bio.git"},"description":"Ask Claude about Mousa Soutari. An MCP server exposing Mousa's profile — availability, ventures, offerings, flagship work — as callable tools.","maintainers":[{"name":"msoutari","email":"m.soutari@gmail.com"}],"readme":"# @alsotari/bio\n\n**An MCP server that lets your AI assistant answer questions about Mousa Soutari — using the same data that powers [alsotari.online](https://alsotari.online).**\n\n```\nnpx @alsotari/bio\n```\n\nThis is a [Model Context Protocol](https://modelcontextprotocol.io) server. It exposes seven tools that let Claude Desktop, Claude Code, Cursor, Gemini CLI, OpenAI Codex, or any other MCP client answer questions about availability, ventures, flagship work, offerings, and draft an intro email. Profile data is pulled live from [alsotari.online/about.json](https://alsotari.online/about.json); Mosaic Bridge metrics come straight from the npm registry and GitHub API. Answers stay fresh without a republish.\n\n---\n\n## Why a bio as an MCP server?\n\nBecause Mousa ships MCP tooling for a living — it's on-brand for the résumé to *be* one. And it's more useful than a PDF:\n\n```\nYou: Is Mousa open to a 3-month CTO-level engagement starting in June?\n\nClaude: Let me check. [calls get_availability]\n        Yes — he's currently open to senior contracts, technical advisory,\n        CTO-level engagements, and full-time roles. Response time is\n        typically under one business day.\n\nYou: Draft the intro email.\n\nClaude: [calls compose_intro_email]\n        I've drafted it — click to send: mailto:m.soutari@gmail.com?…\n```\n\n---\n\n## Tools\n\n| Tool | What it returns |\n| --- | --- |\n| `get_availability` | Current status, what he's open to, response time |\n| `get_contact` | Email (preferred), GitHub, LinkedIn, website |\n| `get_flagship` | Mosaic Bridge — Unity Editor MCP plugin details, implemented research, supported clients |\n| `get_mosaic_bridge_stats` | **Live** metrics — GitHub stars / forks / open issues / last push; latest npm version and release count for `@mosaicxr-ai/create-bridge` and `@mosaicxr-ai/mcp-server`. 5-minute cache. |\n| `get_ventures` | MosaicXR, HiveForce, Al-Jazri — the three other active projects |\n| `get_offerings` | The five concrete engagements he takes on |\n| `compose_intro_email` | Drafts an intro email and returns a ready-to-send `mailto:` URL. Takes `from_name`, `problem`, optional `constraint`, `outcome`. |\n\n---\n\n## Install\n\n### Claude Desktop\n\nEdit the config file and restart Claude Desktop.\n\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"alsotari-bio\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@alsotari/bio\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\n```bash\nclaude mcp add alsotari-bio -- npx -y @alsotari/bio\n```\n\n### Cursor\n\nCursor → Settings → MCP → Add new MCP server:\n\n```json\n{\n  \"alsotari-bio\": {\n    \"command\": \"npx\",\n    \"args\": [\"-y\", \"@alsotari/bio\"]\n  }\n}\n```\n\n### Gemini CLI\n\n```bash\ngemini mcp add alsotari-bio npx -y @alsotari/bio\n```\n\n### Any other MCP client\n\nThe server speaks stdio transport. Launch it as a subprocess with:\n\n```\nnpx -y @alsotari/bio\n```\n\n…and wire its stdin/stdout to your client's JSON-RPC layer.\n\n---\n\n## Configuration\n\nEnvironment variables (all optional):\n\n| Variable | Default | Purpose |\n| --- | --- | --- |\n| `ALSOTARI_ABOUT_URL` | `https://alsotari.online/about.json` | Override the profile data source (dev / fork) |\n| `MOSAIC_BRIDGE_REPO` | `MosaicXR-AI/mosaic-bridge` | GitHub `owner/name` queried by `get_mosaic_bridge_stats` |\n| `MOSAIC_BRIDGE_NPM_PACKAGES` | `@mosaicxr-ai/create-bridge,@mosaicxr-ai/mcp-server` | Comma-separated npm packages to include in stats |\n| `GITHUB_TOKEN` | _unset_ | Optional — unauthenticated GitHub API allows 60 req/hour; set a token to get 5000/hour |\n\nBoth the profile data and the Mosaic Bridge stats are cached in-process for 5 minutes — independently, so each refreshes on its own cadence.\n\n---\n\n## Versioning\n\nThe server doesn't bundle any profile data — it live-fetches [`about.json`](https://alsotari.online/about.json) on each tool call (5-minute in-memory cache). That means most content updates ship *without* touching this package:\n\n- **No republish needed** — changing availability, ventures, offerings, research list, or any other `about.json` field. Edit the site, redeploy it, done.\n- **Republish needed** — adding a new tool, changing tool input schemas, renaming tools, altering the output shape of an existing tool, or fixing a server bug.\n\nBump `version` in `package.json` (patch for bug fixes, minor for new tools, major for breaking output-shape changes), then:\n\n```bash\nnpm run build\nnpm publish --access public\n```\n\n## Develop\n\n```bash\ngit clone https://github.com/MousaSoutari/alsotari-bio.git\ncd alsotari-bio\nnpm install\nnpm run build\nnpm start   # launches the built server on stdio\n```\n\nSmoke-test with a hand-written JSON-RPC flow:\n\n```bash\n(\n  printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"smoke\",\"version\":\"0.0.1\"}}}'\n  printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}'\n  printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{}}'\n  printf '%s\\n' '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"get_availability\",\"arguments\":{}}}'\n  sleep 1\n) | node dist/index.js\n```\n\n---\n\n## License\n\n[Apache 2.0](./LICENSE) — same as [Mosaic Bridge](https://github.com/MosaicXR-AI/mosaic-bridge).\n","readmeFilename":"README.md"}