Agent Discovery
This page maps the machine-readable side of gabrimatic.info. Every important link here is live: JSON, MCP, A2A, OAuth metadata, Markdown alternates, and the policy files agents need before they start guessing.
Quickstart for LLM agents: /llms.txt is the shortest text path through the same surface.
Level 5 / 5, Agent-Native. Verified by isitagentready.com. The score is re-scanned after deploys so it reflects the public site, not a local assumption.
Real-time protocols
- Model Context Protocol (Streamable HTTP, JSON-RPC 2.0):
POST https://www.gabrimatic.info/api/mcp. Stateless MCP server for the portfolio. It implementsinitialize,ping,tools/list,tools/call,resources/list,resources/read,prompts/list, andprompts/get. Tools:get_profile,get_journey,get_repos,get_page_markdown. Prompts:profile_overview,hiring_snapshot,repo_tour. Requests must sendAccept: application/json, text/event-stream(the streamable HTTP transport requires both). Discovery card at/.well-known/mcp/server-card.json. Try it:
`` curl -s -X POST https://www.gabrimatic.info/api/mcp \ -H 'Content-Type: application/json' \ -H 'Accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' ``
- Google Agent-to-Agent (A2A) (JSON-RPC 2.0):
POST https://www.gabrimatic.info/api/a2a. Stateless A2A endpoint. It implementsmessage/send,tasks/get, andtasks/cancel. Responses complete synchronously and point back to the sources they rely on. Agent Card at/.well-known/agent-card.json. - WebMCP (in-page tool registration):
navigator.modelContextonhttps://www.gabrimatic.info/. When the site loads in an MCP-aware browser,/webmcp.jsregistersnavigate,get_page_markdown, andlist_reposvianavigator.modelContext.registerTool.
JSON API
| Resource | URL | Cache |
|---|---|---|
| Profile | /api/profile | 1 hour |
| Professional journey | /api/journey | 1 hour |
| GitHub repositories (live) | /api/repos | edge 5 min, SWR 1 day |
| Merged open-source contributions (live) | /api/contributions | edge 15 min, SWR 1 day |
/api/repos accepts ?per_page= (1 to 100, default 100) and ?sort= (updated, created, pushed, full_name; default updated). /api/contributions groups merged external public PRs into one project entry with a same-origin logo URL and a link to the merged PRs in that repository. All endpoints set Access-Control-Allow-Origin: *.
The two live endpoints serve stale copies while revalidating, so the fetchedAt in a cached response can legitimately lag: up to one day beyond the fresh cache window. Each payload carries its own cache object stating exactly that policy - check it before flagging a timestamp as stale.
The JSON API is described by /openapi.json (OpenAPI 3.1). /api/profile and /api/journey return an ETag; send If-None-Match to skip unchanged bodies. A bare GET /api returns a JSON index of every live endpoint, and an unknown /api/* path returns a 404 that carries the same map, so a wrong guess always shows the way back.
OAuth 2.1 authorization server
An optional OAuth authorization server issues client tokens. Portfolio reads remain public, and tokens do not unlock additional data. Dynamic Client Registration supports loopback agent callbacks and same-site callbacks; authorization requires exact redirect_uri matching against the registration.
| Endpoint | URL | Spec |
|---|---|---|
| Authorization server metadata | /.well-known/oauth-authorization-server | RFC 8414 |
| OpenID Connect discovery | /.well-known/openid-configuration | OIDC Core |
| Origin resource metadata | /.well-known/oauth-protected-resource | RFC 9728 |
| MCP resource metadata | /.well-known/oauth-protected-resource/api/mcp | RFC 9728 |
| JWKS (EdDSA public key) | /.well-known/jwks.json | RFC 7517 |
| Optional OAuth client guide | /auth.md | OAuth only, no user claims |
| Web Bot Auth directory | /.well-known/http-message-signatures-directory | Web Bot Auth + RFC 9421 |
| Dynamic client registration | POST /api/oauth/register | RFC 7591, loopback or same-site redirect URIs |
| Authorization endpoint | GET /api/oauth/authorize | RFC 6749 + PKCE S256, exact registered redirect match |
| Token endpoint | POST /api/oauth/token | RFC 6749 + OAuth 2.1 |
OAuth registration creates a client, not a user account or a verified agent identity. All reads are public, and their handlers do not validate bearer tokens. The site does not advertise an agent_auth claim flow. See /auth.md for the actual limits.
Access tokens are EdDSA-signed JWTs (typ: at+jwt), iss = https://www.gabrimatic.info, aud = https://www.gabrimatic.info/api/mcp, 1 hour TTL. Supported scopes: mcp:read, mcp:tools.
Markdown for Agents
Every page route returns Markdown when the request carries Accept: text/markdown. Direct *.md URLs are equivalent. This keeps the visual Flutter app and the retrievable text connected to the same source of truth.
curl -s -H 'Accept: text/markdown' https://www.gabrimatic.info/journey
| Route | Markdown alternate |
|---|---|
/ | /index.md |
/journey | /journey.md |
/interests | /interests.md |
/opensource | /opensource.md |
/flutter-sdk | /flutter-sdk.md |
/definition | /definition.md |
/accessibility | /accessibility.md |
/agents | /agents.md |
Discovery
- AI Catalog:
/.well-known/ai-catalog.json. AI Catalog 1.0 listing the existing MCP server card, A2A card, OpenAPI description, and portfolio skill. No new services are implied.
- llms.txt (LLM agent quickstart):
/llms.txt. Single Markdown file in the de-facto llms.txt format. Lists the JSON endpoints, Markdown alternates, MCP/A2A discovery cards, and OAuth surfaces. It is the shortest path from a domain name to useful context. The companion/llms-full.txtis every page's Markdown concatenated in reading order, for agents that want the whole site in one request. - Agent Skills index:
/.well-known/agent-skills/index.json. Lists each SKILL.md with a SHA-256 digest so agents can cache it and verify what they read. - API Catalog (RFC 9727):
/.well-known/api-catalog. Linkset advertising the APIs, discovery cards, and Markdown alternates exposed by the site. - Sitemap:
/sitemap.xml. Standard XML sitemap, also advertised through RFC 8288Linkheaders on/. - RFC 8288 Link headers:
HEAD /returnsLinkheaders for the sitemap,/llms.txt, the Agent Skills index, the A2A card, the MCP server card, OAuth metadata, the API catalog, the HTTP message signatures directory, the agents page, the Markdown alternate, and service links for/api/mcpand/api/a2a. - Content Signals:
/robots.txt.Content-Signal: search=yes, ai-input=yes, ai-train=no: retrieval and user-requested answering are allowed; training use is not. Training-only crawlers are blocked by user-agent.