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.

API v1.0.0Last updated Public · No auth required for reads
01

Start here

Discovery endpoints. Each is stable, cacheable, and CORS-enabled.

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.

TypeID formatKey properties
Articlepost_{id}id, title, content, datePublished, author
Personperson_will_haeringname, description, url, sameAs, expertise
CreativeWorkproject_{id}id, name, description, url, dateCreated
ImageObjectimg_{hash}id, contentUrl, description, dateCreated, category
NewsArticlenews_{timestamp}_{hash}title, timestamp, sourceName, url, summary
04

Actions

Available APIs. See the OpenAPI spec for full request and response schemas.

MethodPathDescription
GET/api/searchSearch published posts with pagination and relevance scoring
GET/api/postsList published blog posts with pagination
GET/api/posts/{id}Get a specific published post with markdown content
GET/api/healthCheck system health and status (IP-restricted)
POST/api/for-agents/replConstrained, 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.