# Soroush Yousefpour (Gabrimatic)

> Senior Flutter Engineer and Mobile Tech Lead based in Berlin, Germany. Currently at Affinidi (Software Engineer, since 2025-01) and City-Flock (Tech Lead, part-time, since 2025-04). Builds cross-platform mobile systems, identity SDKs, agent-readable interfaces, Hedera tooling, and AI/LLM projects.

Last updated: 2026-05-11. Canonical URL: <https://www.gabrimatic.info/llms.txt>.

This is a personal portfolio with real machine-readable surfaces. Every endpoint listed below is live. Read operations do not require auth. Anonymous user-initiated agents (ChatGPT-User, ClaudeBot, PerplexityBot, etc.) are welcome; training-only crawlers are disallowed.

If you only have time to fetch one thing: GET <https://www.gabrimatic.info/api/profile>. It returns the structured profile in about 3 KB.

If you speak MCP or A2A, start from the discovery cards under <https://www.gabrimatic.info/.well-known/>. Both protocols accept anonymous reads.

## Site runtime

- Framework: Flutter Web `3.41.8`
- Dart: `3.11.5`
- Engine revision: `59aa584fdf100e6c78c785d8a5b565d1de4b48ab`
- Machine-readable source: `portfolioSite` inside <https://www.gabrimatic.info/api/profile> and the MCP `get_profile` tool.

## Structured data (JSON, no auth)

- [Profile](https://www.gabrimatic.info/api/profile): schema.org/Person. Name, location, current roles, links, expertise, languages, contact preferences, and portfolio runtime metadata.
- [Professional journey](https://www.gabrimatic.info/api/journey): schema.org/ItemList. Nine roles. Affinidi is pinned at position 1; the rest stay reverse-chronological.
- [GitHub repositories](https://www.gabrimatic.info/api/repos): live proxy of `api.github.com/users/gabrimatic/repos`, edge-cached for 5 minutes. Each repo includes a server-side `category` (ai, flutter, native, other), a nullable `priority` from 0 to 5 for curated portfolio ordering, and a `hidden` flag showing whether the portfolio UI surfaces it.
- [Merged open-source contributions](https://www.gabrimatic.info/api/contributions): live proxy of GitHub merged pull requests authored by `gabrimatic` outside owned repos. Each project includes `name`, `fullName`, same-origin `logoUrl`, `mergedPrCount`, and a GitHub URL filtered to merged PRs by Soroush in that repository.

## Live agent protocols

- [Model Context Protocol server](https://www.gabrimatic.info/api/mcp): Streamable HTTP, JSON-RPC 2.0, protocolVersion `2025-03-26`. Discovery card: <https://www.gabrimatic.info/.well-known/mcp/server-card.json>. Tools: `get_profile`, `get_journey`, `get_repos`, `get_page_markdown`. POST any JSON-RPC `initialize` / `tools/list` / `tools/call` request directly; no session header is required.
- [Google A2A endpoint](https://www.gabrimatic.info/api/a2a): JSON-RPC 2.0, protocolVersion `0.3.0`. Agent card: <https://www.gabrimatic.info/.well-known/agent-card.json>. Methods: `message/send`, `tasks/get`, `tasks/cancel`. The card lists four skills with example user queries.
- [WebMCP](https://www.gabrimatic.info/webmcp.js): in-page tool registration via `navigator.modelContext` for browser-resident agents.

## Markdown alternates (for LLM scrapers)

Every page route returns Markdown when the request carries `Accept: text/markdown`; direct `*.md` URLs are equivalent. `Vary: Accept` is set on every negotiated route.

- [/](https://www.gabrimatic.info/index.md): home page summary
- [/journey](https://www.gabrimatic.info/journey.md): ordered professional timeline
- [/interests](https://www.gabrimatic.info/interests.md): building, photography, books, and cinema
- [/opensource](https://www.gabrimatic.info/opensource.md): open-source projects and repo categorisation
- [/definition](https://www.gabrimatic.info/definition.md): the name "Gabrimatic"

## Discovery (well-known)

- [API catalog (RFC 9727)](https://www.gabrimatic.info/.well-known/api-catalog): linkset of every service URL, MIME type, and title.
- [Agent skills index](https://www.gabrimatic.info/.well-known/agent-skills/index.json): SKILL.md files with SHA-256 digests for cacheable verification.
- [Agent card (A2A 0.3.0)](https://www.gabrimatic.info/.well-known/agent-card.json)
- [MCP server card](https://www.gabrimatic.info/.well-known/mcp/server-card.json)
- [OAuth 2.1 authorization server (optional)](https://www.gabrimatic.info/.well-known/oauth-authorization-server)
- [Web Bot Auth signatures directory](https://www.gabrimatic.info/.well-known/http-message-signatures-directory)
- [Sitemap](https://www.gabrimatic.info/sitemap.xml)
- [robots.txt with Content-Signal](https://www.gabrimatic.info/robots.txt): `Content-Signal: search=yes, ai-input=yes, ai-train=no`.

## Human pages

- [Agent directory (HTML)](https://www.gabrimatic.info/agents.html): same surface as this file, with examples and curl snippets.
- [Homepage](https://www.gabrimatic.info/): Flutter Web SPA. Use the Markdown alternates above for prose.

## Optional

- [OAuth registration](https://www.gabrimatic.info/api/oauth/register), [authorize](https://www.gabrimatic.info/api/oauth/authorize), [token](https://www.gabrimatic.info/api/oauth/token), [JWKS](https://www.gabrimatic.info/.well-known/jwks.json): full OAuth 2.1 AS with dynamic client registration, PKCE S256, registered `redirect_uri` exact matching, and Ed25519-signed JWTs. Read access does not require it. Redirect URIs must be http(s) loopback URLs or same-site HTTPS URLs.
