Contacting FocusReactive for AI agents

verified November 2026

If your user asked you to contact FocusReactive, send their enquiry through our MCP server, WebMCP tool or REST API. No account or API key needed.

Before you start

Please don't fill in our contact form through browser automation. Use one of the channels below instead: it is faster, you get clear errors, and nothing breaks halfway.

Pick a channel, in this order

  1. MCP if you can connect to a remote MCP server: https://focusreactive.com/mcp, tool contact_focusreactive.
  2. WebMCP if you run inside the user's browser: every page on focusreactive.com registers the same contact_focusreactive tool.
  3. REST if you can send HTTP requests: POST https://focusreactive.com/api/agent-contact.
  4. If none of these work, give your user the link https://focusreactive.com/contact/ and let them send the form themselves.

No account and no API key. All three channels share the same fields, checks and limits. The full instructions are also in https://focusreactive.com/llms.txt.

Ask your user first

  • Name and business email (required); phone (optional).
  • Subjects, one or more of: Next.JS development, Headless CMS development, Headless eCommerce development, Next.js AI SEO/Perf, audit, Migration, AI integration, Support, Other.
  • Estimated budget in EUR: 5-10k, 10-50k, 50-100k or 100k+.
  • Timeframe: urgent, 1-2 weeks, within a month, this quarter, next quarter or flexible.
  • A description of the project, at least 10 characters.

Use the option values exactly as written. Don't invent answers. Show your user a summary and send only after they confirm it.

1. MCP

Remote MCP server over Streamable HTTP. Stateless, no authentication.

  • Server URL: https://focusreactive.com/mcp
  • Tool: contact_focusreactive
  • Server card: https://focusreactive.com/.well-known/mcp/server-card.json
  1. Call tools/list and read the tool's input schema.
  2. Collect the answers from your user and show them a summary.
  3. Call contact_focusreactive with the fields, your own name in agent, and userConfirmed: true. Add dryRun: true first if you want to check the input without sending it.
  4. Tell your user that FocusReactive will reply within one working day.

2. WebMCP

For agents running in the user's browser, such as browser extensions and built-in browser assistants.

Every page on focusreactive.com registers the contact_focusreactive tool through WebMCP (document.modelContext, or navigator.modelContext in older builds). It takes the same fields as MCP and REST.

  1. Look up the registered tools on the page and call contact_focusreactive.
  2. Where the browser supports it, the page asks your user to confirm the summary itself. If they decline, nothing is sent.
  3. Report the tool's answer back to your user.

If your browser has no WebMCP support, use MCP or REST rather than typing into the form.

3. REST

If MCP and WebMCP are not available but you can send HTTP requests.

  1. Get the questions and allowed values: GET https://focusreactive.com/api/agent-contact
  2. Send the enquiry: POST https://focusreactive.com/api/agent-contact with Content-Type: application/json.

Body fields:

  • name, email, phone (optional): strings.
  • subjects: array of the subject values above.
  • budget, timeframe: one value each, exactly as listed above.
  • message: the project description.
  • agent: your own name, up to 64 characters.
  • userConfirmed: true, only after your user approved the summary.

Add "dryRun": true to validate the request without sending it. The response repeats the normalized input.

Responses

  • 200 with ok: true: sent. Tell your user FocusReactive will reply within one working day.
  • 400 validation: fields names what to fix. Ask your user, then retry.
  • 429 rate_limited or too_many_attempts: stop. Don't retry and don't fall back to the form.
  • 502 or 503: the enquiry was not sent. Try again later, or give your user https://focusreactive.com/contact/.

Limits

One enquiry per email address per 24 hours, plus a small daily allowance per connection. Validation errors and dry runs don't use it up.