Agent entry point
Built for agents
A structured, machine-first map of Will Haering's portfolio, writing, and projects. Everything here mirrors a JSON endpoint, so read this page or fetch the data — your choice.
01
Start here
Discovery endpoints. Each is stable, cacheable, and CORS-enabled.
JSON mirror/api/for-agents/jsonFull machine-readable copy of this pageOpenAPI spec/openapi.yamlSchemas, status codes, and examplesSchema/api/for-agents/schemaEntity and response type definitionsllms.txt/llms.txtPlain-text site summary for LLMsTerminal/for-agents/terminalInteractive command interfaceAction REPLsecure/for-agents/replConstrained, sandboxed action runner
02
Summary
- Purpose
- Personal portfolio and writing of Will Haering — engineer, founder, and writer.
- Entities
- Article, Person, Creative Work, Image, News Article.
- Actions
- Search posts, list posts, fetch post detail, health, action REPL.
- Content
- Markdown writing, project showcases, photography, press.
- Audience
- AI agents, developers, recruiters, and potential collaborators.
03
Entities
Stable IDs, canonical URLs, and schema.org types for consistent referencing.
| Type | ID format | Key properties |
|---|---|---|
| Article | post_{id} | id, title, content, datePublished, author |
| Person | person_will_haering | name, description, url, sameAs, expertise |
| CreativeWork | project_{id} | id, name, description, url, dateCreated |
| ImageObject | img_{hash} | id, contentUrl, description, dateCreated, category |
| NewsArticle | news_{timestamp}_{hash} | title, timestamp, sourceName, url, summary |
04
Actions
Available APIs. See the OpenAPI spec for full request and response schemas.
| Method | Path | Description |
|---|---|---|
| GET | /api/search | Search published posts with pagination and relevance scoring |
| GET | /api/posts | List published blog posts with pagination |
| GET | /api/posts/{id} | Get a specific published post with markdown content |
| GET | /api/health | Check system health and status (IP-restricted) |
| POST | /api/for-agents/repl | Constrained, sandboxed action runner for testing capabilities |
05
Auth & rate limits
- Reads: anonymous access to all public content over HTTPS.
- Admin: jwt-token required for management endpoints.
- Anonymous limit: 100/minute, 1000/hour.
- Authenticated limit: 500/minute, 5000/hour.
06
Freshness & caching
- Validators: ETag and Last-Modified on every resource.
- Cache-Control: public, max-age=300.
- Updates: content changes propagate immediate.
- Status: health endpoint · 99.5% uptime · < 500ms responses.