# North End Law

> Data processing agreement, $350 flat fee, reviewed and released by a lawyer.

- name: law.northend/dpa
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 63/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/law.northend%2Fdpa
- tools: https://api.protogrid.dev/v1/servers/law.northend%2Fdpa/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "dpa": {
      "type": "http",
      "url": "https://northend.law/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-14d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 63/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 1 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- warn `tools.annotations`: only 6 of 11 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_requirements (destructiveHint, idempotentHint, openWorldHint); get_engagement_terms (destructiveHint, idempotentHint); request_consultation (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,376 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 9 tool changes in 30 days
- fail `stability.rug_pull`: 2 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 11, about 2,376 tokens to load them all
- tool set hash: 8d29820d1d081e029e9484c6b324e3e2
- tools last changed: 2026-10-13T18:14:34.339Z
- badge: [![protogrid quality](https://protogrid.dev/badge/law.northend/dpa.svg)](https://protogrid.dev/servers/law.northend/dpa)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-13 `get_deliverable` changed (description) **meaning changed**
  - before: Once a lawyer has released it: the data processing agreement in Markdown, PDF and Word. The named person also receives a link by e-mail. A business associate agreement comes in the same formats.
  - after: Once a lawyer has released it: the agreement in Markdown with placeholders ([Client], [Customer] or [Vendor], and blank addresses and signatures), so you can explain it to the user. The final agreement with the parties' details, in PDF and Word, is only on the private page and in the e-mail to the person who signs.
- 2026-10-13 `submit_dpa_facts` changed (description) **meaning changed**
  - before: The fact package for the agreement, in the "dealroom.solo-intake/1" shape described by get_dpa_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. The counterparty must be one the firm checked for conflicts.
  - after: The fact package for the agreement, in the "dealroom.solo-intake/1" shape described by get_dpa_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. Leave out counterpartyLegalName: the firm adds the other party from the private page. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. A fact package that contains a name, an e-mail address or a postal address the firm holds for the matter is refused.
- 2026-10-13 `submit_facts` changed (description)
  - before: The fact package for the matter's service, in the "dealroom.solo-intake/1" shape described by get_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. The counterparty must be one the firm checked for conflicts. For a business associate agreement, the facts must not contain protected health information: they describe the services, not any individual.
  - after: The fact package for the matter's service, in the "dealroom.solo-intake/1" shape described by get_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. Leave out counterpartyLegalName: the firm adds the other party from the private page. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. A fact package that contains a name, an e-mail address or a postal address the firm holds for the matter is refused. For a business associate agreement, the facts must not contain protected health information: they describe the services, not any individual.
- 2026-10-13 `open_matter` changed (description, inputSchema)
  - before: Starts a request for a data processing agreement ($350). Needs the client's legal name, entity type, place of incorporation and registered address; the person who will bind the client (name, title, work e-mail); every counterparty's legal name; adverse parties or "none"; the governing law (CALIFORNIA by default, or SPAIN); the client's role (PROCESSOR by default, or CONTROLLER). Returns a matter id and a matter token, shown once: keep it. The firm accepts the engagement when its automatic conflicts check is clear and payment is received (for a subscriber, when the engagement is accepted and the check is clear). If a possible conflict is found, nothing is charged, or the payment is refunded in full. For a business associate agreement (tool "baa", $350): the client must be established in the United States, the governing law is CALIFORNIA, the client's role is BUSINESS_ASSOCIATE, and receivesPhi must be false; a vendor whose services handle protected health information should use request_consultation.
  - after: Starts a request for a data processing agreement ($350) or, with tool "baa", a business associate agreement ($350). Send only the service, the governing law (CALIFORNIA by default, or SPAIN; CALIFORNIA only for a BAA), the client's role (PROCESSOR by default, or CONTROLLER; BUSINESS_ASSOCIATE for a BAA, with receivesPhi false) and, if useful, a short label that names no one. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. Returns a matter id, a matter token (shown once: keep it) and a private link. Give the private link to the user and ask them to open it in their browser within 24 hours. There the user enters their company's details, their own and the other party's, and the firm runs its conflicts check. You never see those details. The firm accepts the engagement when its automatic conflicts check is clear and payment is received (for a subscriber, when the engagement is accepted and the check is clear). If a possible conflict is found, nothing is charged, or the payment is refunded in full. A vendor whose services handle protected health information should use request_consultation.
- 2026-10-07 `get_deliverable` changed (description)
  - before: Once a lawyer has released it: the data processing agreement in Markdown, PDF and Word. The named person also receives a link by e-mail.
  - after: Once a lawyer has released it: the data processing agreement in Markdown, PDF and Word. The named person also receives a link by e-mail. A business associate agreement comes in the same formats.
- 2026-10-07 `submit_facts` added
  - The fact package for the matter's service, in the "dealroom.solo-intake/1" shape described by get_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. The counterparty must be one the firm checked for conflicts. For a business associate agreement, the facts must not contain protected health information: they describe the services, not any individual.
- 2026-10-07 `open_matter` changed (description, inputSchema)
  - before: Starts a request for a data processing agreement ($350). Needs the client's legal name, entity type, place of incorporation and registered address; the person who will bind the client (name, title, work e-mail); every counterparty's legal name; adverse parties or "none"; the governing law (CALIFORNIA by default, or SPAIN); the client's role (PROCESSOR by default, or CONTROLLER). Returns a matter id and a matter token, shown once: keep it. The firm accepts the engagement when its automatic conflicts check is clear and payment is received (for a subscriber, when the engagement is accepted and the check is clear). If a possible conflict is found, nothing is charged, or the payment is refunded in full.
  - after: Starts a request for a data processing agreement ($350). Needs the client's legal name, entity type, place of incorporation and registered address; the person who will bind the client (name, title, work e-mail); every counterparty's legal name; adverse parties or "none"; the governing law (CALIFORNIA by default, or SPAIN); the client's role (PROCESSOR by default, or CONTROLLER). Returns a matter id and a matter token, shown once: keep it. The firm accepts the engagement when its automatic conflicts check is clear and payment is received (for a subscriber, when the engagement is accepted and the check is clear). If a possible conflict is found, nothing is charged, or the payment is refunded in full. For a business associate agreement (tool "baa", $350): the client must be established in the United States, the governing law is CALIFORNIA, the client's role is BUSINESS_ASSOCIATE, and receivesPhi must be false; a vendor whose services handle protected health information should use request_consultation.
- 2026-10-07 `get_engagement_terms` changed (inputSchema)
- 2026-10-07 `get_requirements` added
  - The facts a service needs, as a JSON Schema: service "dpa" (data processing agreement) or "baa" (business associate agreement). For a DPA, optionally narrowed to one governing law and the client's role. Do not send the facts until the engagement has begun.

Full history: https://api.protogrid.dev/v1/servers/law.northend%2Fdpa/changes

## Remotes

- https://northend.law/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (11)

- `get_deliverable`: Once a lawyer has released it: the agreement in Markdown with placeholders ([Client], [Customer] or [Vendor], and blank addresses and signatures), so you can explain it to the user. The final agreement with the parties' details, in PDF and Word, is only on the private page and in the e-mail to the person who signs.
- `get_dpa_requirements`: The facts the data processing agreement needs, as a JSON Schema. Optionally narrowed to one governing law and the client's role. Do not send the facts until the engagement has begun.
- `get_engagement_terms`: The full limited-scope engagement text for a service, with its version and SHA-256 hash, and whether it is open for acceptance.
- `get_matter_status`: Where the matter stands, the next human step, the target in business hours, and any question from the lawyer.
- `get_payment_link`: The firm's own card payment page for $350, available once the named person has accepted the engagement. The fee is charged in full at checkout and refunded in full if the firm declines the matter or does not deliver. The link is also e-mailed to the named person.
- `get_requirements`: The facts a service needs, as a JSON Schema: service "dpa" (data processing agreement) or "baa" (business associate agreement). For a DPA, optionally narrowed to one governing law and the client's role. Do not send the facts until the engagement has begun.
- `list_services`: What North End Law offers through this server, at what fixed price, under which laws, and who is responsible. Responsible lawyer: Sergio Maldonado Elvira, Founder & Principal Attorney, North End Law Corporation, 447 Sutter St. Suite 506 - 1349, San Francisco, California 94108, United States.
- `open_matter`: Starts a request for a data processing agreement ($350) or, with tool "baa", a business associate agreement ($350). Send only the service, the governing law (CALIFORNIA by default, or SPAIN; CALIFORNIA only for a BAA), the client's role (PROCESSOR by default, or CONTROLLER; BUSINESS_ASSOCIATE for a BAA, with receivesPhi false) and, if useful, a short label that names no one. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. Returns a matter id, a matter token (shown once: keep it) and a private link. Give the private link to the user and ask them to open it in their browser within 24 hours. There the user enters their company's details, their own and the other party's, and the firm runs its conflicts check. You never see those details. The firm accepts the engagement when its automatic conflicts check is clear and payment is received (for a subscriber, when the engagement is accepted and the check is clear). If a possible conflict is found, nothing is charged, or the payment is refunded in full. A vendor whose services handle protected health information should use request_consultation.
- `request_consultation`: For anything outside the listed services: gives the booking link and lets the firm know a person would like to talk. Send a one-line topic only, no confidential facts.
- `submit_dpa_facts`: The fact package for the agreement, in the "dealroom.solo-intake/1" shape described by get_dpa_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. Leave out counterpartyLegalName: the firm adds the other party from the private page. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. A fact package that contains a name, an e-mail address or a postal address the firm holds for the matter is refused.
- `submit_facts`: The fact package for the matter's service, in the "dealroom.solo-intake/1" shape described by get_requirements. Accepted only once the engagement has begun, and again when the lawyer asks for changes. Leave out counterpartyLegalName: the firm adds the other party from the private page. Do not ask the user for, and do not send, any name, e-mail address or postal address: the firm never needs them from you. Write "the Client" for the user's company and "the Customer" (or "the Vendor", when the client is the controller) for the other party. A fact package that contains a name, an e-mail address or a postal address the firm holds for the matter is refused. For a business associate agreement, the facts must not contain protected health information: they describe the services, not any individual.
