# Bridgework Consulting for AI agents

This site has two machine endpoints so AI assistants and agents can get accurate answers about Bridgework Consulting and, when a person asks them to, send a consultation request to the Bridgework team.

Both endpoints are public, need no API key, answer only from published facts, and never quote prices (every engagement is scoped and quoted).

| What | Where |
| --- | --- |
| A2A agent card | `https://gobridgework.com/.well-known/agent-card.json` |
| A2A endpoint (JSON-RPC, A2A 1.0 and 0.3) | `https://gobridgework.com/a2a` |
| MCP server (Streamable HTTP, stateless) | `https://gobridgework.com/mcp` |
| API catalog (RFC 9727) | `https://gobridgework.com/.well-known/api-catalog` |
| Plain-text summary | `https://gobridgework.com/llms.txt` |
| Full site as Markdown | `https://gobridgework.com/llms-full.txt` or `GET /` with `Accept: text/markdown` |

## Skills (A2A) and tools (MCP)

| A2A skill id | MCP tool | What it does |
| --- | --- | --- |
| `ask-about-bridgework` | `ask_about_bridgework` | Answers questions about the firm and its founder: background, credentials, approach, track record, pricing policy, location, contact. |
| `list-services` | `list_services` | Lists the five services with cadence and deliverables. |
| `recommend-starting-point` | `recommend_starting_point` | Suggests an engagement from organization type and needs. |
| `check-service-area` | `check_service_area` | In-person area (North Mississippi, DeSoto County, Memphis area) or remote by video and email. |
| `request-consultation` | `request_consultation` | Sends a consultation request to the Bridgework team. Requires the person's name, email, and `consentToContact: true`. |

A2A picks the skill from your message text. To choose one explicitly, set `message.metadata.skillId`, or include `"skill": "<id>"` in a data part.

## A2A example (1.0)

```http
POST /a2a HTTP/1.1
Host: gobridgework.com
Content-Type: application/json
A2A-Version: 1.0

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "9f1c0a52-1d2b-4b6e-9a51-3c7a5e2f8d10",
      "role": "ROLE_USER",
      "parts": [{ "text": "We're a small church and our volunteers already use ChatGPT. Where should we start?" }]
    }
  }
}
```

Questions come back as a `message` with a text part and a JSON data part. Consultation requests come back as a `task`.

## Sending a consultation request

Only do this when the person has asked you to and agreed to be contacted.

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "SendMessage",
  "params": {
    "message": {
      "messageId": "b2a7d0a4-6b0e-4c55-8f0e-1f4c2b9a7e31",
      "role": "ROLE_USER",
      "parts": [{
        "data": {
          "skill": "request-consultation",
          "name": "Jordan Lee",
          "email": "jordan@example.org",
          "organization": "Hope Community Church",
          "organizationType": "Church or ministry",
          "needs": ["Guidelines for AI use", "AI training for our team"],
          "details": "Our staff and volunteers use AI tools for bulletins and emails. We'd like simple guidelines.",
          "timing": "In the next month or two",
          "consentToContact": true,
          "agentName": "Example Assistant"
        },
        "mediaType": "application/json"
      }]
    }
  }
}
```

- Missing name, email, or consent returns `TASK_STATE_INPUT_REQUIRED` listing what's missing. Resend the whole request; partial requests are not kept.
- If the site can deliver messages, the task completes with `delivered: true` and a reference like `BW-1A2B3C4D`.
- If automatic delivery is switched off, nothing is sent and the task returns `emailDraft` (to, subject, body, and a `mailto:` link) for the person to send themselves.
- Limit: 5 requests per hour per IP address.

## MCP

Add `https://gobridgework.com/mcp` as a remote MCP server (Streamable HTTP, no authentication). It supports `initialize`, `tools/list`, `tools/call`, and `ping`, returns JSON (no SSE stream), and keeps no session.

## A2A details

- Transport: JSON-RPC 2.0 over HTTPS. Methods: `SendMessage`, `GetTask`, `ListTasks` (requires `contextId`), `CancelTask`. A2A 0.3 names (`message/send`, `tasks/get`, `tasks/cancel`) also work and return 0.3-style objects with `kind`.
- Not supported: streaming, push notifications, extended agent card. These return the standard A2A errors (-32004, -32003, -32007).
- `GetTask` works for 30 days when the site owner has task storage enabled. Stored tasks never include the person's name, email, or message.

## Privacy

Consultation details go only to the Bridgework team (by email) and, if configured, the firm's own CRM. The site sets no cookies and loads no third-party scripts, fonts, or trackers.

Questions about these endpoints: tealisha@bridgework-consulting.com
