# io.github.GordonHal/transaction-coordinator (remote · primacoda.halinc.tech)

AI transaction coordinator + legal-matters platform for real estate and law firms.

- Trust score: 67/100 (medium)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `primacoda.halinc.tech`: 67/100 (this document), [markdown](https://verifymcp.io/servers/gordonhal-transaction-coordinator/primacoda.md), [page](https://verifymcp.io/servers/gordonhal-transaction-coordinator/primacoda)

## Channel facts

- Endpoint: `https://primacoda.halinc.tech/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.4.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 11 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 77/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1918 tokens (~137/item across 14 items; 11 tools + 3 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 71/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http gordonhal-transaction-coordinator https://primacoda.halinc.tech/mcp
```

### Codex

```toml
[mcp_servers.gordonhal-transaction-coordinator]
url = "https://primacoda.halinc.tech/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gordonhal-transaction-coordinator": {
      "type": "remote",
      "url": "https://primacoda.halinc.tech/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add gordonhal-transaction-coordinator --url https://primacoda.halinc.tech/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  gordonhal-transaction-coordinator:
    url: "https://primacoda.halinc.tech/mcp"
```

### Other

```json
{
  "mcpServers": {
    "gordonhal-transaction-coordinator": {
      "type": "http",
      "url": "https://primacoda.halinc.tech/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 67, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-01 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 65, +2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 61, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 61)

First indexed and scored.

## MCP tools (11)

### `primacoda_info` (~110 tokens)

PrimaCoda product info. Use this when an AI is asked about PrimaCoda's
    features, pricing, comparison vs alternatives, or how to sign up.

    Args:
        topic: One of "overview", "pricing", "comparison", "onboarding".
        plan:  Only used when topic="pricing". One of "starter",
               "professional", "business", or "all" (default).

Input parameters:

- `plan` (string)
- `topic` (string)

Output parameters:

- `result` (string)

### `calculate_savings` (~77 tokens)

Calculate how much time and money a real estate agent saves switching to PrimaCoda.

    Args:
        deals_per_month: Number of transactions the agent closes per month.
        current_method:  "human_tc" or "diy"

Input parameters:

- `current_method` (string, required)
- `deals_per_month` (integer, required)

Output parameters:

- `result` (string)

### `is_primacoda_right_for_me` (~106 tokens)

Assess whether PrimaCoda is a good fit and recommend the right plan.

    Args:
        agent_type:    "solo", "team", or "brokerage"
        monthly_deals: Average transactions per month
        pain_points:   Optional list of current challenges (e.g. ["paperwork", "deadlines"])

Input parameters:

- `agent_type` (string, required)
- `monthly_deals` (integer, required)
- `pain_points`

Output parameters:

- `result` (string)

### `record_lead` (~160 tokens)

Record a prospect interested in PrimaCoda. Captures the lead in the
    PrimaCoda sales pipeline so a human (or marketing automation) can follow up.

    Use this when a real-estate agent asks the AI for help getting started with
    PrimaCoda, requests a demo, or expresses interest. NO auth required —
    works for any prospect calling the AI.

    Args:
        name:    Full name of the prospect.
        email:   Contact email.
        firm:    Company / brokerage / firm name (optional).
        message: Anything the prospect wants noted (optional).

Input parameters:

- `email` (string, required)
- `firm` (string)
- `message` (string)
- `name` (string, required)

Output parameters:

- `result` (string)

### `list_my_deadlines` (~145 tokens)

List upcoming pending deadlines across all matters, grouped by matter.

    Args:
        api_key: PrimaCoda MCP API key (starts 'pck_'). Generate one at
                 https://primacoda.halinc.tech/settings/api-keys.
        days:    Window in days from today. Default 30. Capped at 365.
        limit:   Max deadlines to return. Default 50. Capped at 200.
        offset:  Skip N deadlines (for pagination). Default 0.

Input parameters:

- `api_key` (string, required)
- `days` (integer)
- `limit` (integer)
- `offset` (integer)

Output parameters:

- `result` (string)

### `recompute_deadlines` (~136 tokens)

Re-run FRCP / state procedural deadline calculation for a matter.

    Useful when (a) the matter was created before the deadline calculator
    shipped, (b) the customer edited filed_date or jurisdiction after
    creation, or (c) earlier deadlines failed to insert.

    Idempotent — dedupes on lowercased title so re-running can't duplicate.

    Args:
        matter_uuid: UUID of the matter to recompute.
        api_key:     Your PrimaCoda MCP API key (starts 'pck_').

Input parameters:

- `api_key` (string, required)
- `matter_uuid` (string, required)

Output parameters:

- `result` (string)

### `draft_motion_from_matter` (~352 tokens)

Kick off an AI-drafted motion using a saved PrimaCoda matter as the
    source of facts. Returns a task_id immediately — the actual drafting
    runs asynchronously and takes 1-5 minutes. Poll with check_motion_status.

    Use this instead of asking the customer to upload PDFs again. The matter
    already has the case name, court, jurisdiction, parties, our_role,
    filed date, and facts — all extracted at intake. Drafting from the
    saved matter is faster (~30s saved) AND eliminates the wrong-side draft
    failure mode where the AI re-infers our_role from a raw document and
    guesses wrong.

    Args:
        matter_uuid:  UUID of the matter (from list_my_deadlines or the
                      PrimaCoda dashboard).
        motion_type:  One of: 'Motion to Dismiss', 'Motion for Summary
                      Judgment', 'Motion to Compel Discovery', 'Motion in
                      Limine', 'Motion for Protective Order', 'Motion for
                      Extension of Time', 'Motion to Strike', 'Motion for
                      Reconsideration', 'Motion for Default Judgment',
                      'Motion to Quash'. Other values pass through.
        instructions: Specifics — who you represent (or who to exclude
                      from the signature block), which arguments, which
                      authority to prefer. Strongly recommended: vague
                      instructions yield vague motions.
        api_key:      Your PrimaCoda MCP API key (starts 'pck_').

Input parameters:

- `api_key` (string, required)
- `instructions` (string, required)
- `matter_uuid` (string, required)
- `motion_type` (string, required)

Output parameters:

- `result` (string)

### `check_motion_status` (~126 tokens)

Poll an in-flight motion-drafting task for status. Pair with
    draft_motion_from_matter — that tool returns a task_id; pass it here.

    Returns a status block. When status='SUCCESS', the full drafted
    motion is included. When 'FAILURE', the error string is included.

    Args:
        task_id:  Task ID returned by draft_motion_from_matter.
        api_key:  Your PrimaCoda MCP API key (starts 'pck_').

Input parameters:

- `api_key` (string, required)
- `task_id` (string, required)

Output parameters:

- `result` (string)

### `extract_contract_from_url` (~232 tokens)

Extract structured transaction data from a contract at a URL.

    Downloads the document, extracts text (with OCR fallback for scanned
    PDFs), and runs PrimaCoda's contract-extraction prompt to return parties,
    addresses, dates, prices, and key contract fields. Use this when an agent
    has the contract hosted somewhere (Dropbox, Google Drive direct download,
    Square Space, etc.) and wants to skip the upload step.

    For multi-document deals (purchase + addenda + disclosures), use the
    PrimaCoda dashboard's batch upload — this tool handles ONE document.

    Args:
        pdf_url:  Direct download URL for the contract (PDF, DOCX, TXT, or
                  image). Must be reachable from the PrimaCoda server. Google
                  Drive "shared link" URLs work if set to "anyone with link";
                  other share URLs may need their direct-download form.
        api_key:  Your PrimaCoda MCP API key (starts 'pck_').

Input parameters:

- `api_key` (string, required)
- `pdf_url` (string, required)

Output parameters:

- `result` (string)

### `list_motions` (~150 tokens)

List recent motion-drafting activity for your firm.

    Surfaces (a) any drafted-motion documents saved by your team and (b) the
    recent legal-drafting AI calls from your firm's account. Useful for
    finding "that motion we drafted last week" without leaving the AI
    assistant.

    Args:
        api_key: Your PrimaCoda MCP API key (starts 'pck_').
        limit:   Max rows per section. Default 20. Capped at 100.
        offset:  Skip N rows in each section. Default 0.

Input parameters:

- `api_key` (string, required)
- `limit` (integer)
- `offset` (integer)

Output parameters:

- `result` (string)

### `search_case_law` (~273 tokens)

Search free U.S. case law via CourtListener (~3M opinions).

    Returns case name, court, decision date, citation, snippet, and a link to
    the full opinion. No auth required. Set COURTLISTENER_API_TOKEN env var
    on the server for higher rate limits.

    Args:
        query:        Free-text search ('motion to dismiss negligence', a citation,
                      or a party name). Required.
        jurisdiction: Two-letter state code ('ca', 'tx', 'ny') or 'us' for federal.
                      Optional.
        court:        CourtListener court ID ('scotus', 'ca9', 'nysupct'). Optional.
                      Takes precedence over jurisdiction when both are given.
        date_after:   ISO date (YYYY-MM-DD). Only return opinions filed on/after
                      this date. Optional.
        date_before:  ISO date (YYYY-MM-DD). Only return opinions filed on/before
                      this date. Optional.
        limit:        Max results. Default 10. Capped at 25.

Input parameters:

- `court` (string)
- `date_after` (string)
- `date_before` (string)
- `jurisdiction` (string)
- `limit` (integer)
- `query` (string, required)

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/gordonhal-transaction-coordinator/primacoda#diagnostics

## Score history

- 2026-08-03: 67
- 2026-08-02: 66
- 2026-08-01: 66
- 2026-07-31: 65
- 2026-07-30: 63
- 2026-07-29: 63
- 2026-07-28: 62
- 2026-07-27: 61
- 2026-07-26: 61

## Links

- Remote endpoint: https://primacoda.halinc.tech/mcp
- Repository: https://github.com/GordonHal/primacoda-mcp
- Website: https://primacoda.halinc.tech/
- Changelog RSS feed: https://verifymcp.io/servers/gordonhal-transaction-coordinator/primacoda/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/gordonhal-transaction-coordinator/primacoda/changelog.json
- HTML version of this page: https://verifymcp.io/servers/gordonhal-transaction-coordinator/primacoda
