# workspace-alberta [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/HarleyCoops/WorkspaceAlberta  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/workspace-alberta

## Description
Canadian procurement intelligence: CanadaBuys and Alberta tenders, ranked for your shop.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "workspace-alberta": {
    "command": "npx",
    "args": ["-y","mcp-remote","https://elbowsupknivesout.warreandvavasour.com/mcp"]
  }
}
```

## Documentation & README

# WorkspaceAlberta

<p align="center">
  <img src="docs/assets/women-workers-small-arms.jpg" alt="Women workers at Small Arms Limited, 1942." width="49%">
  <img src="docs/assets/sophie-okowinski-bren-gun.jpg" alt="Sophie O'Kowinski reaming a Bren gun barrel at the John Inglis Company munitions plant, 1943." width="49%">
</p>

<p align="center"><em>Canadian industrial war production, via Library and Archives Canada.</em></p>

## Getting Started

The hosted MCP server is live and free for browsing — no install, no account, no API key. Point any MCP-capable assistant at it:

```
https://elbowsupknivesout.warreandvavasour.com/mcp
```

**Cursor, Claude Code, and other HTTP-native clients** — add to your MCP config:

```json
{
  "mcpServers": {
    "workspacealberta": {
      "url": "https://elbowsupknivesout.warreandvavasour.com/mcp"
    }
  }
}
```

**Claude Desktop** (no native HTTP transport) — bridge with `mcp-remote`:

```json
{
  "mcpServers": {
    "workspacealberta": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://elbowsupknivesout.warreandvavasour.com/mcp"]
    }
  }
}
```

Then ask it something a real owner would ask:

- *"I run a CWB welding shop in Red Deer — what government work fits my shop right now?"*
- *"What closes this week? I don't want to miss anything."*
- *"Give me my morning brief — what fits us, and what's closing soon?"*

**Run it locally instead** (the whole server is pure Python):

```bash
python -m pip install -r requirements.txt
python mcp-servers/canadabuys/server.py
```

Smoke test: `python -m unittest tests.test_canadabuys_mcp_smoke`. Client config variants live in [`mcp.json.example`](mcp.json.example); full tool and REST reference in [`docs/mcp-tool-reference.md`](docs/mcp-tool-reference.md).

---

## Canadian AI Security Is Canadian National Security

WorkspaceAlberta is a Canadian procurement intelligence workspace. It connects public tender data to the people who can actually do the work: fabricators, mills, contractors, shops, manufacturers, and the small teams that keep the real economy moving.

The direction is explicit:

- **Canadian demand signals:** CanadaBuys and Alberta Purchasing Connection in one search surface.
- **Canadian AI company:** Cohere as the first sovereign-model route.
- **Canadian open source model:** Command A+ `command-a-plus-05-2026`, with the W4A4 Hugging Face route available through `CohereLabs/command-a-plus-05-2026-w4a4`.
- **Canadian tools:** practical MCP wiring for the procurement sources Canadian firms already need to watch.
- **Canadian compute path:** designed so sensitive public-sector and industrial workflows can move toward Canadian infrastructure, including Canadian chips and data-centre capacity where those options are available.

The point is not nationalism as decoration. The point is operational independence.

If Canadian companies are going to bid Canadian work, understand Canadian supply chains, and protect Canadian industrial capacity, then the AI layer underneath that work matters.

---

## The Last Mile of Work

AI promised 5X productivity. Most small businesses got a chatbot that writes mediocre marketing copy.

The model is not the whole bottleneck. The connection is.

Wiring up the places where the work lives usually costs money, time, and technical patience a small business does not have. Government tender databases are a perfect example: the work is public, the demand is real, but the discovery process is still awkward enough that good companies miss good opportunities.

**WorkspaceAlberta solves the last mile** by giving an AI assistant the wiring it needs to search, compare, summarize, and brief public procurement opportunities from inside the workspace where the owner is already working.

<p align="center">
  <img src="docs/assets/high-level-bridge-edmonton-1909.jpg" alt="The High Level Bridge between Edmonton and Strathcona under construction, circa 1909." width="100%">
</p>

<p align="center"><em>The High Level Bridge under construction, Edmonton, c. 1909 — Alberta steel, riveted by hand. City of Edmonton Archives, EA-500-4 (public domain).</em></p>

---

## What This Actually Does

WorkspaceAlberta is an MCP-first workspace for Canadian procurement.

It now brings together:

- **CanadaBuys** for federal tender notices
- **Alberta Purchasing Connection** for Alberta public-sector opportunities
- **Cohere Command A+** for optional tender analysis and fit review
- **A daily bid brief** that summarizes the market, best-fit matches, and deadlines from both sources

<p align="center">
  <img src="docs/assets/welder-robin-nodwell-calgary-1963.jpg" alt="A welder at Robin Nodwell Ltd., Calgary, 1963." width="55%">
</p>

<p align="center"><em>Welder at Robin Nodwell Ltd., Calgary, 1963 — from the Provincial Archives of Alberta series "What Alberta Makes Makes Alberta" (PA3324, no known copyright restrictions).</em></p>

The assistant can:

- search national and Alberta opportunities together
- inspect a posting by reference number
- list what is closing soon
- match opportunities against a saved business profile
- generate a free daily brief for the owner or estimator
- use Cohere Command A+ to review tender fit, risks, requirements, and next actions

This is meant to answer practical questions:

- What work is open right now?
- Which opportunities fit what we actually do?
- What closes soon?
- What should we read first?
- What should we ignore?

---

## The Custom Procurement MCP Server

The custom MCP server is the product.

It is a deployed working endpoint that knows the live public procurement pipeline exposed by **CanadaBuys** and **Alberta Purchasing Connection**. It can serve that pipeline back to users through an AI assistant based on what they do, where they work, what they can supply, and what deadlines matter.

The core tools are:

- `search_opportunities` for unified federal and Alberta search
- `get_opportunity_details` for a single posting by reference number
- `list_deadlines` for what is closing soon
- `find_matching_opportunities` for profile-based ranking
- `daily_bid_brief` for the daily owner/operator summary
- `analyze_contract_with_cohere` for optional Cohere Command A+ tender review
- `process_bid_room` for live E2B attachment extraction and Cohere tool-assisted bid review
- `watch_opportunity` / `list_watchlist` for a persistent tracking list with closing-date countdowns
- `bid_no_bid_scorecard` for a fast deterministic go/caution/no-go read on any reference

The full tool and REST reference lives in [`docs/mcp-tool-reference.md`](docs/mcp-tool-reference.md); the architecture walkthrough is [`docs/architecture.md`](docs/architecture.md).

MCP is the first-class interface because this is meant to be used by agents. The same procurement core also exposes REST/OpenAPI so other AI tools can hook into the same contract intelligence without needing native MCP support.

Underneath the endpoint is pure Python procurement logic. The data processing, filtering, matching, deadline ranking, and brief generation do not require an LLM. The model layer is added only where judgment helps: risk review, requirements explanation, and bid/no-bid reasoning.

E2B sandboxes are the isolated compute layer for heavier bid-room work: opening tender packages, parsing attachments, extracting compliance requirements, and returning structured bid artifacts without putting unknown user files inside the always-on MCP service. Cohere Command A+ runs inside the short-lived sandbox with read-only evidence tools over the extracted documents. The build plan lives in [`docs/e2b-bid-room-plan.md`](docs/e2b-bid-room-plan.md), and the business-owner operating diagram lives in [`docs/bid-room-operating-diagram.md`](docs/bid-room-operating-diagram.md).

<p align="center">
  <img src="docs/assets/machinist-canada-oil-tool-calgary-1963.jpg" alt="A machinist at Canada Oil Tool Manufacturing, Calgary, 1963." width="55%">
</p>

<p align="center"><em>Machinist at Canada Oil Tool Manufacturing, Calgary, 1963 — precision work for the energy sector. Provincial Archives of Alberta, PA3318/2 (no known copyright restrictions).</em></p>

---

## Why This Matters

Get 50% of the population 10% better. Every year. That is generational growth.

Not 10 developers 500% better. That is happening. But it does not scale to the economy.

*"How do I save 5 hours a week?" "How do I save $700 a month?"*

Those are the real questions. This is how you answer them.

Alberta's **steel, lumber, and metals** industries represent over **2,500 companies** with a combined economic impact exceeding **$37 billion annually**.

| Sector | Companies | Economic Impact | Jobs Supported |
|--------|-----------|-----------------|----------------|
| Forestry & Wood Products | 676+ businesses, 40 major mills | $14 billion | 41,400 |
| Fabricated Metal Products | 1,871 establishments | $23.4B manufacturing sector | 16,600 |
| Primary & Machinery Manufacturing | 200+ facilities | Included above | 12,000+ |

<p align="center">
  <img src="docs/assets/collage-what-alberta-makes.jpg" alt="Three photographs of workers pouring steel at the Foothills Steel Foundry, Calgary, 1963." width="100%">
</p>

<p align="center"><em>What Alberta makes makes Alberta — the pour at Foothills Steel Foundry, Calgary, 1963. Provincial Archives of Alberta, PA3315.1–.3 (no known copyright restrictions).</em></p>

Behind every one of these companies are dozens of systems that need to talk to each other just to get anything done: quoting software, inventory spreadsheets, accounting packages, project trackers, supplier portals, and government tender databases.

Any tool that helps a fabricator **create demand**, a mill **manufacture more efficiently**, or a contractor **cut costs** has multiplier effects across the entire province:

- **$4 billion** in forest product exports alone
- **$1.6 billion** in annual wages paid to forestry workers
- **70 communities** across Alberta that depend directly on these industries
- **$988 million** in tax revenue flowing back to the province

<p align="center">
  <img src="docs/assets/walters-saw-mill-edmonton-1908.jpg" alt="Walter's Saw Mill, Edmonton, 1908." width="49%">
  <img src="docs/assets/alberta-lumber-co-factory-1908.jpg" alt="Alberta Lumber Co.'s Factory, Edmonton, 1908." width="49%">
</p>

<p align="center"><em>Walter's Saw Mill (1908) and the Alberta Lumber Co.'s Factory (1908), Edmonton — value-added Alberta manufacturing, first edition. City of Edmonton Archives, EA-500-205 and EA-500-290 (public domain).</em></p>

More contracts won. More jobs kept. More skill developed. More value staying here at home.

---

## Technical Notes

MCP server:

- [`mcp-servers/canadabuys/server.py`](mcp-servers/canadabuys/server.py)
- [`mcp-servers/canadabuys/server_http.py`](mcp-servers/canadabuys/server_http.py) for hosted StreamableHTTP MCP plus REST/OpenAPI
- [`procurement_core/service.py`](procurement_core/service.py) for the shared Python procurement core
- [`procurement_core/e2b_bid_room.py`](procurement_core/e2b_bid_room.py) for live E2B bid-room sandbox processing

Smoke test:

- [`tests/test_canadabuys_mcp_smoke.py`](tests/test_canadabuys_mcp_smoke.py)
- [`tests/test_procurement_http_app.py`](tests/test_procurement_http_app.py)
- `python scripts/e2b_bid_room_smoke.py` for a live E2B sandbox test

Configuration:

- [`AGENTS.md`](AGENTS.md) for Codex/OpenClaw guidance
- [`mcp-servers/canadabuys/README.md`](mcp-servers/canadabuys/README.md) for server tools and environment variables
- [`docs/setup-productization-track.md`](docs/setup-productization-track.md) for the combined WorkspaceAlberta + private `wvsetup` setup track
- [`docs/codex-setup.md`](docs/codex-setup.md) for local setup notes
- [`docs/workspace-alberta-hermes-install.md`](docs/workspace-alberta-hermes-install.md) for the branded Hermes / Raspberry Pi setup draft

Data and model sources:

- CanadaBuys open tender notices
- Alberta Purchasing Connection public opportunity API
- Cohere Command A+ via Cohere API
- CohereLabs Command A+ W4A4 on Hugging Face: <https://huggingface.co/CohereLabs/command-a-plus-05-2026-w4a4>

Image source notes live in [`docs/imagery-sources.md`](docs/imagery-sources.md).

<p align="center">
  <img src="docs/assets/collage-museum-wall.jpg" alt="A museum wall of Canadian industrial photography: steel, foundries, machine shops, and mills from 1870 to 1957." width="100%">
</p>

<p align="center"><em>The museum wall. Top row: crucible pour, Stelco, Hamilton, 1957 (Herb Taylor / Library and Archives Canada, CC BY 2.0); Norwood Foundry crew, Edmonton, 1935 (Provincial Archives of Alberta, A6237); Bawden Machine Co. blacksmith shop, Toronto, c. 1918 (LAC, CC BY 2.0); machinist, Alberta Foundry &amp; Machine Shop, Medicine Hat, c. 1940s (PAA, A10335). Bottom row: grading lumber by hand (Nicholas Morant / LAC, CC BY 4.0); mill interior, Maberly, Ontario, c. 1870 (LAC, CC BY 2.0); Manitoba Bridge &amp; Iron Works, Winnipeg, c. 1914–18 (LAC, CC BY 2.0); Alberta Foundry &amp; Machine Co. lineup, Medicine Hat, c. 1915 (PAA, A10587).</em></p>

---

## The OPERA Analytics Server

The country is traveling west. Domestic travel to the western provinces is scaling, and the properties hosting those travelers run on systems like OPERA Cloud.

The Warre & Vavasour tourism thesis: in an extreme-AI world, people crave the analog. Real places, real adventures. The premium goes to authentic, place-bound experiences — and AI is invisible wiring, not the product.

The wiring problem looks exactly like procurement's last mile. A hotel's own data lives inside OPERA Cloud, and getting it out for analysis usually means expensive middleware or manual exports. Front-desk managers, revenue people, and owners can't use what they can't reach.

So the repo ships a second MCP server: [`mcp-servers/opera-analytics/server.py`](mcp-servers/opera-analytics/server.py), a read-only analytics data tap for OPERA Cloud Reporting & Analytics Data APIs. A property's own user signs in as themselves — OAuth2 password grant, with credentials from the hotel's own OPERA Cloud Developer Portal. No partner program, no middleware vendor.

It covers **75 analytics subject areas** — guest/deposit/AR ledgers, transactions, reservation statistics and pace, managers report, history and forecast, rate codes, profiles, blocks, catering events, housekeeping inventory — through **9 tools**:

- `opera_auth_status` to check the session
- `list_subject_areas` / `describe_subject_area` to see what data exists
- `run_graphql_query` / `query_subject_area` to pull it
- `export_to_csv` / `sync_subject_area` to land it locally
- `list_local_tables` / `query_local_data` to work with what's synced

Data lands in local CSV files and a DuckDB database the team can open in Excel or Power BI, or ask questions about in plain language through any MCP-capable assistant. Read-only by design. Set `OPERA_MOCK=1` to try it offline with no credentials; smoke test: `python -m unittest tests.test_opera_analytics_smoke`. Server docs live in [`mcp-servers/opera-analytics/README.md`](mcp-servers/opera-analytics/README.md).

Tools employees can actually use, from the systems they already have. The same pattern as the procurement work: take an awkward system of record, give people their own data back, charge for outcomes not visibility.

---

*Data sources: [Statistics Canada](https://www150.statcan.gc.ca), [Innovation Canada](https://ised-isde.canada.ca), [Alberta Forest Products Association](https://albertaforestproducts.ca), [Job Bank Canada](https://www.jobbank.gc.ca)*

