workspaceAlberta
RemoteAbout workspaceAlberta
workspaceAlberta is an MCP server for businesses tracking federal and Alberta public tenders. It searches CanadaBuys and Alberta Purchasing Connection, ranks opportunities against a business profile, and surfaces deadlines and bid-room tools.
Key features
- 01Unified federal and Alberta tender search
- 02Opportunity details and closing deadlines
- 03Business-profile matching and ranking
- 04Daily bid brief
- 05Pro watchlists and bid-room review
Use cases
- 01Find construction tenders closing soon
- 02Match public contracts to a company's capabilities
- 03Review tender requirements and risks
- 04Track selected opportunities and deadlines
MCP support
Exposes procurement search, details, deadline, matching, briefing, and paid bid-room tools to MCP clients through a hosted endpoint. The same core also offers REST/OpenAPI.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://elbowsupknivesout.warreandvavasour.com/mcpclaude mcp add --transport http com-warreandvavasour-workspacealberta https://elbowsupknivesout.warreandvavasour.com/mcp{"mcpServers":{"com-warreandvavasour-workspacealberta":{"type":"http","url":"https://elbowsupknivesout.warreandvavasour.com/mcp"}}}Open in Cursor{"servers":{"com-warreandvavasour-workspacealberta":{"type":"http","url":"https://elbowsupknivesout.warreandvavasour.com/mcp"}}}Open in VS Code{"mcpServers":{"com-warreandvavasour-workspacealberta":{"type":"http","url":"https://elbowsupknivesout.warreandvavasour.com/mcp"}}}{"mcpServers":{"com-warreandvavasour-workspacealberta":{"serverUrl":"https://elbowsupknivesout.warreandvavasour.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEworkspaceAlberta
workspaceAlberta lets your AI assistant search every open CanadaBuys and Alberta Purchasing Connection tender, rank them against your business, and tell you what closes next.
Add to Claude: workspaceAlberta in Claude's connector directory
Claude Code:
claude mcp add --transport http workspaceAlberta https://elbowsupknivesout.warreandvavasour.com/mcp
Cursor (~/.cursor/mcp.json) / VS Code (.vscode/mcp.json, use "servers" in place of "mcpServers"):
{
"mcpServers": {
"workspacealberta": {
"type": "http",
"url": "https://elbowsupknivesout.warreandvavasour.com/mcp"
}
}
}
Try it:
I run a small general contractor in Red Deer, Alberta.
What construction tenders close in the next 7 days?
Give me the reference, buyer, closing time and official link for each.
You get open notices from both sources, soonest first: reference (for example AB-2026-06788), buyer, closing time in Alberta time, the official posting link and any Buy Canadian or other domestic-preference flag. It finds and ranks work. It does not submit bids or contact buyers.
- Free, no account: search, details, deadlines, matching and the daily bid brief across both sources.
- Pro: watchlist, bid/no-bid scorecards, bid-room document review and tender requirement lists. Sign in when a Pro tool asks; plans and pricing.
Keywords: Canadian procurement, CanadaBuys, Alberta Purchasing Connection, government tenders, bids, trades, construction, MCP server.
Canadian industrial war production, via Library and Archives Canada.
AI Ethics
Warre & Vavasour is a startup AI lab that does not replace human workers. We build a bigger pie.
Every capability we ship exists to amplify the people already doing the work, the same promise the photographs above made to the generation that industrialized this country.
If your idea starts with headcount cuts, it is not a WorkspaceAlberta plan.
Warre & Vavasour does not make apps or chatbots. Don't ask. If this is in your business plan, you are thinking about New Business wrong. We build terminals that deliver real work and pay real taxes.
Warre & Vavasour acknowledges the astonishing resources this technology is consuming. Training and inference carry real energy, water, and mineral costs. Nobody asked for this. No one really asked for GRPO to be released on January 20, 2025. But it was released, and that is how all models got to reasoning; and from reasoning, we have harnesses now.
So this is just the way the world is and it is far too cheap not to deploy post-human-scale reasoning tools on a desktop device that genuinely accelerates Canadian manufacturing, development, and industrialization.
So yes: we acknowledge the cost. But Canadian infrastructure, right-sized models on hardware you can touch, and Canadian data retention means your enterprise AI stack is entirely Canadian and NATO supplier friendly.
There is no longer an American dependency on enterprise, on device, Canadian AI at scale.
It is 1834 all over again.
The railroad has been built.
The steam engine has been designed.
The world as we know it has changed.
WorkspaceAlberta is the way to stay ahead of these changes.
More Ways to Connect
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:
{
"mcpServers": {
"workspacealberta": {
"url": "https://elbowsupknivesout.warreandvavasour.com/mcp"
}
}
}
Claude Desktop — add the URL under Settings > Connectors, or bridge with mcp-remote:
{
"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?"
Adding your Pro key
Search, details, deadlines, and the daily brief are open to everyone. Seven tools —
bid rooms, tender requirement lists, Cohere tender review, the three watchlist tools,
and bid/no-bid scorecards — need an active subscription. Clients that support OAuth
ask you to sign in the first time you use one. Subscribers can also use a key: it
arrives by email after checkout and starts with wa_live_.
Send it as an Authorization header. For HTTP-native clients:
{
"mcpServers": {
"workspacealberta": {
"url": "https://elbowsupknivesout.warreandvavasour.com/mcp",
"headers": {
"Authorization": "Bearer wa_live_YOUR_KEY"
}
}
}
}
For the mcp-remote bridge, pass it as a header (no spaces around the colon in args):
{
"mcpServers": {
"workspacealberta": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://elbowsupknivesout.warreandvavasour.com/mcp",
"--header", "Authorization:${WA_AUTH}"],
"env": { "WA_AUTH": "Bearer wa_live_YOUR_KEY" }
}
}
}
On a Linux workstation or a leased terminal, let the installer do it — it verifies the
key against the server, writes ~/.config/workspacealberta/credentials at mode 600, and
registers the authenticated endpoint with whichever CLIs are present:
./installer/configure-subscriber-key.sh
Check a key at any time:
curl -H "Authorization: Bearer wa_live_YOUR_KEY" \
https://elbowsupknivesout.warreandvavasour.com/me
Run it locally instead (the whole server is pure Python):
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; full tool and REST reference in 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 throughCohereLabs/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.
Hélène Lalonde drawing in ends at Montreal Cottons, Valleyfield — Nicholas Morant / National Film Board of Canada. Photothèque / Library and Archives Canada, PA-160566 (copyright expired).
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
Welder at Robin Nodwell Ltd., Calgary, 1963 — from the Provincial Archives of Alberta series "What Alberta Makes Makes Alberta" (PA3324, no known copyright restrictions).
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_opportunitiesfor unified federal and Alberta searchget_opportunity_detailsfor a single posting by reference numberlist_deadlinesfor what is closing soonfind_matching_opportunitiesfor profile-based rankingfind_business_fitfor a free-text business description, classified with TypeSafe Jev after a commodity-code prefilterdaily_bid_brieffor the daily owner/operator summaryanalyze_contract_with_coherefor optional Cohere Command A+ tender reviewprocess_bid_roomfor live E2B attachment processing: Cohere Parse turns tender PDFs and images into markdown, then Command A+ reviews the evidenceclassify_tenderfor a bidder-requirement checklist: tender PDFs are split into clauses, each clause and page is classified with TypeSafe Jev, and the results merge into one requirement per tag with connector, lead time, pages and evidence (seepipelines/requirement_classifier/)watch_opportunity/list_watchlistfor a persistent tracking list with closing-date countdownsbid_no_bid_scorecardfor a fast deterministic go/caution/no-go read on any referencematch_industrial_support_programsfor a read-only industrial and tariff support catalog, with Ontario-only streams labeled for Alberta firms
The full tool and REST reference lives in docs/mcp-tool-reference.md; the architecture walkthrough is 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, turning attachments into evidence, and returning structured bid artifacts without putting unknown user files inside the always-on MCP service. classify_tender reads tender PDF text without E2B: each PDF is parsed in a separate OS process inside the Cloud Run container, with no secrets in its environment and CPU, memory and time limits. That is process isolation, not a sandbox VM. Cohere Parse is the document layer — it converts PDF pages and images into structured markdown (tables, forms, drawings) before review. Command A+ is the review layer: it runs inside the short-lived sandbox with read-only evidence tools over that markdown. If Parse is unset, times out, or rejects a file, the existing pdfminer/python-docx/openpyxl extractors stay as fallback. The build plan lives in docs/e2b-bid-room-plan.md, and the business-owner operating diagram lives in docs/bid-room-operating-diagram.md.
Tool calling: how the MCP tools map to Cohere
Every procurement tool is exposed to the model through one uniform function-calling path. There is no per-tool glue: whatever the MCP server declares, the model sees.
The tool families. Federal (CanadaBuys): search_contracts,
get_contract_details, list_upcoming_deadlines, summarize_contracts,
refresh_data. Unified search across both sources: search_opportunities,
get_opportunity_details, list_deadlines. Profile and matching:
set_business_profile, get_my_profile, find_opportunities,
find_matching_opportunities, daily_bid_brief, find_business_fit,
match_industrial_support_programs. Alberta Purchasing
Connection: search_alberta_opportunities, get_alberta_opportunity_details,
list_alberta_deadlines, summarize_alberta_opportunities,
find_alberta_opportunities. Model review and bid-room:
check_cohere_status, analyze_contract_with_cohere, process_bid_room,
classify_tender.
Persistence and decisions: watch_opportunity, list_watchlist,
unwatch_opportunity, bid_no_bid_scorecard. Search, details, deadlines,
summaries, refresh, and profiles are free; the heavier judgment surfaces
(bid rooms, requirement classification, Cohere tender review, the watchlist,
bid/no-bid scorecards)
require the Pro key on the Authorization header.
The wire path, desk to model and back. The MCP server is mounted in the
desk harness as the workspace_alberta server (Streamable HTTP). Each tool's
MCP declaration — name, description, JSON-schema parameters — becomes a
harness tool, and the Cohere adapter (cohere-v2-chat in the harness's
llm-pi-ai package) serializes the whole set into the Chat API v2 request as
tools: [{type: "function", function: {name, description, parameters}}] —
OpenAI-style wrapping, JSON Schema parameters, no per-tool special-casing.
Command A+ (command-a-plus-05-2026, 436k context, reasoning + vision +
tools) then decides what to call. The answer streams as SSE: chain-of-thought
arrives as thinking content blocks (with tool-plan-delta events during
tool-turn planning), and each call arrives as tool-call-start/-delta/-end
events with the arguments as JSON-string fragments; finish_reason comes
back as TOOL_CALL. The harness executes the call against the MCP server
and replays the result as a role: "tool" message carrying the output as a
JSON-object string (a v2 requirement — free text is wrapped as
{"output": ...} so the endpoint can parse it and attach citations), with
the assistant's own turn replayed as thinking content blocks plus
tool_calls. The loop repeats — the model chains as many tools as the task
needs — until finish_reason: COMPLETE. A real morning check on the desk ran
13 tool calls across 14 model steps in one turn (data refresh, summaries,
deadline scans, watchlist, and per-opportunity detail lookups) with zero
failures.
Two wire rules learned the hard way (both verified against the live endpoint, 2026-09-18):
strict_toolsis opt-in, never forced. Strict mode makes the endpoint enforce parameter schemas on generated calls, but it also rejects the JSON-schema composition keywords (oneOf,anyOf,allOf) that harness and MCP tool schemas legitimately use — a forcedtruefailed every tool-bearing turn withcomposition constraints not supported: oneOf. The adapter therefore sendsstrict_toolsonly when the model'ssupportsStrictModecompat flag opts in; tool-call reliability has been fine without it.- Assistant plans replay as
thinkingcontent blocks, never astool_plan. The endpoint rejectstool_planon replayed messages for Command A-class models (tool plan cannot be used with this model), even though it emits plan-style events itself while streaming.
The adapter lives in the harness repo
(packages/llm/llm-pi-ai/src/cohere-v2-chat*.ts); the desk mounts the server
through workspace-alberta.patch.yml (mcp-workspace-alberta). Adding a new
MCP tool requires no adapter change: declare it on the server and the next
turn sees it as a callable function.
Machinist at Canada Oil Tool Manufacturing, Calgary, 1963 — precision work for the energy sector. Provincial Archives of Alberta, PA3318/2 (no known copyright restrictions).
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+ |
What Alberta makes makes Alberta — the pour at Foothills Steel Foundry, Calgary, 1963. Provincial Archives of Alberta, PA3315.1–.3 (no known copyright restrictions).
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
Home-front salvage and food: a clothing depot at the GECO munitions works, Scarborough, c. 1943 (Archives of Ontario, I0004928, public domain); A.J. Denne's victory garden, Toronto, 5 June 1943 (City of Toronto Archives, fonds 1266, CC BY 2.0).
More contracts won. More jobs kept. More skill developed. More value staying here at home.
Technical Notes
MCP server:
mcp-servers/canadabuys/server.pymcp-servers/canadabuys/server_http.pyfor hosted StreamableHTTP MCP plus REST/OpenAPIprocurement_core/service.pyfor the shared Python procurement coreprocurement_core/e2b_bid_room.pyfor live E2B bid-room sandbox processing
Smoke test:
tests/test_canadabuys_mcp_smoke.pytests/test_procurement_http_app.pypython scripts/e2b_bid_room_smoke.pyfor a live E2B sandbox test
Configuration:
AGENTS.mdfor Codex/OpenClaw guidancemcp-servers/canadabuys/README.mdfor server tools and environment variablesdocs/setup-productization-track.mdfor the combined WorkspaceAlberta + privatewvsetupsetup trackdocs/codex-setup.mdfor local setup notesdocs/workspace-alberta-hermes-install.mdfor the branded Hermes / Raspberry Pi setup draft
Raspberry Pi terminal setup:
docs/deployment-ops/pi-out-of-box-setup.md— start here for new Pi setups, from sealed box to working CEO stackdocs/deployment-ops/ceo-pi-setup.md— software installer reference (assumes OS already installed)docs/deployment-ops/tailscale-pi-remote-support.md— remote support via Tailscale
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.
The museum wall. Top row: inspecting ammunition at GECO, Scarborough, c. 1943 (Archives of Ontario, I0058215, public domain); the Perry sisters in the plant vegetable garden, Dominion Arsenals, 24 August 1942 (Harry Rowed / NFB Photothèque / LAC, CC BY 2.0); cutting cloth for military uniforms at Tip Top Tailors, Toronto, 1939–45 (Gordon W. Powley / Archives of Ontario, C 109-2-0-18, copyright expired); assembling a coal-pulverizing mill at Polymer Rubber, Sarnia, October 1943 (Harry Rowed / NFB Photothèque / LAC, e000761792, copyright expired). Bottom row: a machinist laughing at Small Arms Limited, 26 May 1942 (Nicholas Morant / LAC, e000760725, CC BY 2.0); welding Bren-gun magazine clips at John Inglis, April 1944 (Ronny Jaques / LAC, e000762114, CC BY 2.0); packing crates at GECO, c. 1943 (Archives of Ontario, I0004900, public domain); assembling a Bren-gun blank at John Inglis, 10 May 1941 (NFB Photothèque / LAC, e000760439, copyright expired).
Data sources: Statistics Canada, Innovation Canada, Alberta Forest Products Association, Job Bank Canada
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.