Skip to main content
For agents and the people who build them

Everything here is readable by a machine

The site publishes its content as markdown, its actions as an OpenAPI spec, and its structure as a plain-text index. No scraping, no HTML parsing, no guessing.

Start here

Discovery

Four URLs describe the whole site. Fetch any of them without a key.

Site index
/llms.txt Every public page, one line each, with a description.
Full content
/llms-full.txt Prose: services, pricing, how we work, FAQ.
Actions
/openapi.json OpenAPI 3.1 for every action an agent can take.
WebMCP
/mcp-actions.json The same actions as WebMCP task descriptors.
Sitemap
/sitemap.xml Canonical URLs with real lastModified dates.
Feed
/rss.xml Full blog feed.
MCP server
/mcp Streamable HTTP. Every action above, plus blog search and markdown, as MCP tools.
Content

Any post, as markdown

Append .md to a post URL, or ask for the canonical URL with an Accept header. Both return YAML frontmatter plus the body — no nav, no chrome, no cookie banner.

markdown
# the .md suffix
curl https://www.promptmetrics.dev/blog/ai-agents-in-production-problems.md

# or negotiate on the canonical URL
curl -H 'Accept: text/markdown' \
  https://www.promptmetrics.dev/blog/ai-agents-in-production-problems

# an index of every post
curl https://www.promptmetrics.dev/blog.md
A markdown request that misses returns a real 404 with a markdown body listing where to go instead, not an HTML error page.
Actions

Things an agent can do

Unauthenticated JSON endpoints. /v1 is canonical; the unversioned paths are permanent aliases kept for existing callers.

actions
# read the contract first
curl https://www.promptmetrics.dev/openapi.json

# subscribe to Field Notes
curl -X POST https://www.promptmetrics.dev/v1/actions/subscribe-blog \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]"}'
Every 4xx and 5xx returns { error: { code, message } } with a code from a published enum. Branch on the code, never on the message.

Read the OpenAPI spec

MCP

Or connect it as a server

The same actions, plus blog search and post retrieval, over Streamable HTTP. No auth, no session — point any MCP client at the endpoint.

mcp
# Claude Code
claude mcp add --transport http promptmetrics https://www.promptmetrics.dev/mcp

# or any MCP client, pointed at
https://www.promptmetrics.dev/mcp
Tools that submit a request on someone's behalf do exactly that. Confirm with the person before calling one.
Limits

What to expect

Auth
None. The action endpoints are public.
Versioning
In the path. Breaking changes ship under a new prefix, never in place.
Rate limit
20 requests per 60 seconds per IP. Responses carry RateLimit-Policy when the limit is being enforced; a 429 carries Retry-After.
Errors
Typed codes: invalid_body, missing_field, invalid_email, unknown_segment, rate_limited, not_configured, upstream_error, internal_error.
Crawlers
AI crawlers are welcome. See /robots.txt — training is reserved via Content-Signal, retrieval is not.
Open source

The code we publish

Skills are folders of markdown, MIT licensed. There is no CLI and no npm package to install — you clone a repo and copy what you want.

HubSpot Plugin
Natural-language HubSpot CRM admin, with a human approving every write /plugin install hubspot@hubspot-claude
HubSpot MCP Server
A standalone MCP server for HubSpot CRM with a write-safety layer /plugin install hubspot-mcp@promptmetrics-hubspot-mcp
The Human Layer
Rehearse the hard conversation before you have it /plugin install promptmetrics-coach@promptmetrics
The Habit Layer
One sharp question before Claude runs a real task /plugin install the-habit-layer@habit-layer
Video Skill
Plan a Kurzgesagt-style explainer, ready to hand to a renderer /plugin install promptmetrics-video@promptmetrics-video
pm-blog
AI Blog Writing & SEO Optimization Skill for Claude Code /plugin marketplace add promptmetrics/pm-blog

All open source