Add agent-readiness discovery endpoints for AI agents#478
Conversation
Publish RFC 8288 Link headers, RFC 9727 API catalog, OAuth discovery metadata, MCP server card, agent skills index, auth.md, Content Signals in robots.txt, markdown negotiation, WebMCP tools, and DNS-AID zone templates for nextflow.io agent discovery. Co-authored-by: Edmund Miller <edmundmiller@users.noreply.github.com>
✅ Deploy Preview for nextflow-staging ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Replace the local nextflow-docs stub with the four official skills from https://github.com/nextflow-io/agent-skills, synced at build time with SHA-256 digests for the discovery index. Co-authored-by: Edmund Miller <edmundmiller@users.noreply.github.com>
Co-authored-by: Edmund Miller <edmundmiller@users.noreply.github.com>
ewels
left a comment
There was a problem hiding this comment.
Contains a mixture of deployment methods, which is very confusing.
Netlify is only used for deployment previews I think, so does not need to be agent-ready. It's only used for internal review and should not be accessed by an agent.
There are also many many broken URLs referenced in here, a lot of functionality that doesn't exist. Needs self-review before going any further.
There was a problem hiding this comment.
Nice! Should add mention of this to the agent-skills repo CLAUDE.md so that we keep them in sync.
There was a problem hiding this comment.
Good call — that's a change in the nextflow-io/agent-skills repo which is out of scope for this PR. Can you add that CLAUDE.md note there? Something like: "The website syncs skills from this repo at build time into /.well-known/agent-skills/index.json — update scripts/generate-agent-skills-index.mjs in nextflow-io/website if the skills directory structure changes."
Generated by Claude Code
- api-catalog: drop 'status' rel pointing at feed.xml (RSS != status) - mcp/server-card.json: replace fake streamable-http /mcp endpoint with webmcp transport pointing at the homepage (WebMcpBridge uses navigator.modelContext, not an HTTP server) - oauth-authorization-server: remove authorization_endpoint, token_endpoint, jwks_uri and related fields that all 404 - Delete jwks.json empty stub (no keys, no real OAuth flow) - _headers: remove jwks.json entry

Summary
Implements the agent-readiness checks reported by isitagentready.com for nextflow.io. The site is a static Astro app on S3 + CloudFront; this PR adds the discovery artifacts, headers, and infrastructure hooks needed for AI agent discovery.
Changes
Discoverability
public/_headers—Linkresponse headers on/pointing toapi-catalog,service-doc, andservice-desc(Netlify previews)infra/cloudfront/— CloudFront Function for markdown negotiation and response headers policy template for productionscripts/set-s3-agent-metadata.sh— Sets correctContent-TypeandLinkmetadata on S3 objects during publishContent accessibility
public/index.md— Markdown homepagenetlify/edge-functions/markdown-negotiate.js— Serves markdown whenAccept: text/markdownis present (withx-markdown-tokens)Bot access control
public/robots.txt— AddedContent-Signal: ai-train=no, search=yes, ai-input=yesProtocol discovery
/.well-known/api-catalog— RFC 9727 linkset (application/linkset+json)/openapi.json— Minimal OpenAPI 3.1 spec for public endpoints/.well-known/oauth-authorization-server— RFC 8414 metadata withagent_authblock (honest stub — no protected APIs today)/.well-known/oauth-protected-resource— RFC 9728 metadata/.well-known/jwks.json— Empty JWKS (reserved)/auth.md— Agent registration discovery document/.well-known/mcp/server-card.json— MCP server card (SEP-1649)/.well-known/agent-skills/index.json— Agent skills index synced from nextflow-io/agent-skills at build time (install-nextflow,create-workflow,run-module,launch-workflow) with SHA-256 digestssrc/components/WebMcpBridge— WebMCP tools vianavigator.modelContextDNS-AID
infra/dns-aid/nextflow.io.zone— SVCB records for_index._agentsand_a2a._agents(requires DNS operator to apply + DNSSEC)Agent skills
scripts/generate-agent-skills-index.mjsshallow-clones nextflow-io/agent-skills into.cache/agent-skills, copies eachskills/*/SKILL.mdtopublic/.well-known/agent-skills/, and regeneratesindex.jsonwith digests. Runs automatically viaprebuild.Deployment notes
After merge, production needs:
make publish— runs updated metadata script automaticallymarkdown-negotiation.jsviewer-request function and response headers policy perinfra/cloudfront/README.mdinfra/dns-aid/nextflow.io.zoneand enable DNSSECNetlify PR previews get Link headers and markdown negotiation automatically via
_headersand the edge function.Testing
npx astro check && npx astro build— passesnode scripts/generate-agent-skills-index.mjs— syncs 4 skills from nextflow-io/agent-skills