Developers

Everything this host exposes to a program, in one page. It is a short list, and the short parts are stated as plainly as the rest.

Start here

In-page tools (WebMCP)

The homepage registers four read-only WebMCP tools from a server-rendered inline script, so a browsing agent can call them without a separate server: agentify_overview, agentify_when_to_use, agentify_readiness_layers, and agentify_how_to_request_access. The last one deliberately returns the request contract instead of submitting it — lodging a request emails a human, and that is the caller's decision to make.

The one live endpoint

POST /api/request-access is the entire callable write surface. No API key, no OAuth, no bearer token: it is a public form endpoint with a rate limit.

Access request

curl -X POST https://agentify-skill.vercel.app/api/request-access \
  -H 'Content-Type: application/json' \
  -d '{
    "kind": "access",
    "email": "you@example.com",
    "company": "Example Inc",
    "github": "your-github-username",
    "note": "What you would actually use agentify for."
  }'

Consultation request

curl -X POST https://agentify-skill.vercel.app/api/request-access \
  -H 'Content-Type: application/json' \
  -d '{
    "kind": "consultation",
    "email": "you@example.com",
    "company": "Example Inc",
    "goal": "What you are trying to reach."
  }'

Fields

FieldRequiredMaxNotes
kindno—access (default) or consultation. Any other value is treated as access.
emailboth kinds200Must look like an address.
companyboth kinds200Company or project.
githubaccess only40A real GitHub username: alphanumeric and hyphens, 1–39 chars, no leading, trailing or consecutive hyphens. The repo invite goes here.
noteoptional1500access only.
goalconsultation only1500What you are trying to reach.

Responses

StatusBodyMeans
200{"ok":true}Lodged. A human will read it.
200{"ok":true,"deduped":true}Same email and kind within 10 minutes. No second mail was sent. Not an error, and not a reason to retry.
400{"error":"missing_fields"}The response names which ones.
400{"error":"invalid_email"}Address did not parse.
400{"error":"invalid_github_username"}Not a valid GitHub username.
400{"error":"field_too_long"}A field exceeded the limits in the table above.
405{"error":"method_not_allowed"}Anything other than POST. Allow: POST is set.
429{"error":"rate_limited","retry_after_seconds":60}More than 3 requests in 60 seconds from your IP. Retry-After: 60 is set — honour it.
502{"error":"notification_failed"}The request was valid and the mail did not send. Retry once, then use the LinkedIn route on the contact page.

The rate limiter and the deduplicator are per-container and in-memory, so under load they are best-effort rather than exact. Treat the documented limits as the contract and do not probe for the seams.

What this host does NOT have

Stated plainly, because an agent that assumes otherwise wastes a request and a scanner that assumes otherwise scores us for something we did not build.

Crawling and reuse

This page and the rest of the marketing site may be read, indexed, cited and used as AI training input; /robots.txt says so per crawler, and that is a deliberate choice to maximise reach rather than an oversight. The skill it markets is proprietary and is not covered by that permission. Missing paths return a real 404 with a markdown recovery body, so you can distinguish a typo from an outage without parsing HTML.