Koskamo

MyOutfitters MCP

An official MCP server for MyOutfitters.ca that allows AI agents to search for Canadian hunting and fishing outfitters, retrieve detailed profiles, check availability, and submit price requests without scraping HTML.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

MyOutfitters MCP logo, by MyOutfittersVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by MyOutfitters
MCP endpoint (Streamable HTTP)
https://myoutfitters.ca/mcp
Vendor documentation

What its tools do

8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Can change data (1)

8 of 8 have a description · 8 of 8 declare behavior hints · 0 of 8 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to myoutfitters.ca ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for hunting or fishing outfitters by activity, species, or location
  • Retrieve detailed outfitter profiles including lodgings and amenities
  • Check availability for specific dates and party sizes
  • Submit price requests to outfitters on behalf of users

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
myoutfitters 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
8 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

MyOutfitters.ca (MesPourvoiries.ca in French) is Canada's largest marketplace for hunting and fishing outfitters (pourvoiries), where anglers and hunters can discover, compare, and book their next trip directly. Use list_reference_data to learn valid values for every filter (provinces, regions, species, activity types, meal plan types, lodging types, access types, amenities, ZECs, cities, seasons); search_outfitters to shortlist up to 10 outfitters with the full advanced filter set (several species at once, region or ZEC, access, driving hours from a city, Collection Prestige, per-person nightly budget, lodging type and bedrooms, meal plan, season, amenities — at least one criterion is required); get_outfitter for one profile; check_availability for named outfitters and dates; get_booking_options for how one outfitter can actually be booked (online payment or price request) and which packages fit; create_price_request to send a traveller's enquiry. For simple free-text or document-style clients, `search` takes one natural-language query and returns {id, title, url} documents, and `fetch` returns the full document for one of those ids; prefer search_outfitters and get_outfitter when precise criteria are known. Outfitter phone numbers, e-mail addresses and websites are never available: all contact goes through create_price_request, which uses MyOutfitters' anonymised relay. Rates are only published for outfitters that confirmed their listing; otherwise request a quote. Always cite and link the outfitter's MyOutfitters URL. Bulk retrieval of the directory is not supported and is blocked; ask the traveller for criteria instead of iterating. Before calling create_price_request, obtain the traveller's explicit consent to share their name and e-mail with the outfitter through MyOutfitters.

Tools

8 advertised

list_reference_data — List search vocabulary
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the values MyOutfitters understands for each search filter: provinces, regions, species, activity types, meal plan types, lodging types, access types, amenities, ZECs, major cities used as driving origins, and seasons. Contains no outfitter data.

list_reference_data input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind"
  ],
  "properties": {
    "kind": {
      "enum": [
        "provinces",
        "regions",
        "species",
        "activity_types",
        "plan_types",
        "lodging_types",
        "access_types",
        "amenities",
        "zecs",
        "cities",
        "seasons"
      ],
      "type": "string"
    },
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "maxLength": 200
    },
    "province": {
      "type": "string",
      "maxLength": 60,
      "description": "Filter regions, ZECs or cities by province."
    }
  },
  "additionalProperties": false
}
list_reference_data annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
search — Search MyOutfitters
Advertised by the server during the last successful anonymous check.
Advertised read-only

Free-text search over MyOutfitters' Canadian hunting and fishing outfitters (pourvoiries). Returns up to 10 documents with id, title and URL; pass an id to `fetch` for the full profile. For precise multi-criteria filtering (species, region, budget, lodging, dates) prefer search_outfitters. No phone, e-mail or website is ever returned.

search input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "maxLength": 200,
      "minLength": 2,
      "description": "Natural-language query, e.g. 'white pike fishing in Lanaudière' or 'pourvoirie chasse orignal Abitibi'."
    },
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "maxLength": 200
    }
  },
  "additionalProperties": false
}
search annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
fetch — Fetch a MyOutfitters document
Advertised by the server during the last successful anonymous check.
Advertised read-only

Retrieve one MyOutfitters outfitter document by the id returned by `search` (e.g. 'PV-0009') or by its MyOutfitters URL. Returns id, title, url, readable text and metadata. No phone, e-mail or website is ever returned.

fetch input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 200,
      "description": "Document id from `search` (e.g. 'PV-0009') or the outfitter's MyOutfitters URL."
    },
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "maxLength": 200
    }
  },
  "additionalProperties": false
}
fetch annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
search_outfitters — Search outfitters
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find up to 10 Canadian hunting and fishing outfitters (pourvoiries) matching a traveller's criteria, using the same advanced filters as the website: activities, several species at once, province, region, ZEC, access type, driving distance from a major city, Collection Prestige, per-person nightly budget, lodging type, single-lodging capacity, bedrooms, two-person and one-person bed counts, meal plan, season and equipment/amenities. Lodging criteria (capacity, bedrooms, beds, amenities) must all be met by the SAME cabin. At least one criterion is required — the full directory is never returned. Results carry no phone number, e-mail or website: enquiries go through create_price_request. Call list_reference_data to learn the valid values for any filter.

search_outfitters input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "zecs": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 8,
      "description": "ZEC names (Quebec controlled-exploitation zones)."
    },
    "limit": {
      "type": "integer",
      "maximum": 10,
      "minimum": 1,
      "description": "Max results (hard cap 10)."
    },
    "access": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 6,
      "description": "Access types by code or name (road, boat, floatplane…)."
    },
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "region": {
      "type": "string",
      "maxLength": 60,
      "description": "A single tourist region, e.g. 'Mauricie'."
    },
    "api_key": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional MyOutfitters partner key."
    },
    "keyword": {
      "type": "string",
      "maxLength": 60,
      "description": "Free text matched against the outfitter name, town, street address and the lakes, reservoirs and rivers it operates on; water-body and address matches rank first."
    },
    "regions": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 8,
      "description": "Several tourist regions; an outfitter matches any of them."
    },
    "seasons": {
      "type": "array",
      "items": {
        "enum": [
          "spring",
          "summer",
          "fall",
          "winter"
        ],
        "type": "string"
      },
      "maxItems": 4,
      "description": "Seasons the outfitter must be open in."
    },
    "species": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 60
        },
        {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 60
          },
          "maxItems": 8
        }
      ],
      "description": "One species or several, e.g. ['doré','brochet'] / ['walleye','pike']."
    },
    "activity": {
      "enum": [
        "fishing",
        "hunting"
      ],
      "type": "string",
      "description": "Shorthand for the two main activities."
    },
    "province": {
      "type": "string",
      "maxLength": 60,
      "description": "Province code or name, e.g. 'QC', 'Ontario'."
    },
    "amenities": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 8,
      "description": "Amenity names an outfitter must offer in one of its lodgings (all of them must match)."
    },
    "near_city": {
      "type": "string",
      "maxLength": 60,
      "description": "Major city used as the driving origin, e.g. 'Montréal', 'Toronto'."
    },
    "activities": {
      "type": "array",
      "items": {
        "enum": [
          "chasse",
          "peche",
          "big_game_hunting",
          "ice_fishing",
          "bird_hunting",
          "nature_lodging",
          "family_experiences",
          "hunting_fishing",
          "ecotourism",
          "rental"
        ],
        "type": "string"
      },
      "maxItems": 6,
      "description": "Exact activity-type codes an outfitter must offer: chasse (hunting), peche (fishing), big_game_hunting, ice_fishing (pêche sur glace), bird_hunting (chasse aux oiseaux), nature_lodging, family_experiences, hunting_fishing, ecotourism, rental (equipment rental)."
    },
    "party_size": {
      "type": "integer",
      "maximum": 60,
      "minimum": 1,
      "description": "Number of guests to accommodate."
    },
    "plan_types": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 6,
      "description": "Meal plan types by code or name (américain / american, européen, MAP…)."
    },
    "min_bedrooms": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Minimum bedrooms in a single lodging ('minimum 4 chambres' / '4 rooms')."
    },
    "lodging_types": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60
      },
      "maxItems": 8,
      "description": "Lodging types by code or name (chalet, camp, pavillon…)."
    },
    "prestige_only": {
      "type": "boolean",
      "description": "Only Collection Prestige outfitters."
    },
    "species_match": {
      "enum": [
        "all",
        "any"
      ],
      "type": "string",
      "description": "'all' (default) requires every species; 'any' matches at least one."
    },
    "max_drive_hours": {
      "type": "number",
      "maximum": 24,
      "minimum": 0.5,
      "description": "Maximum driving hours from near_city (requires near_city)."
    },
    "min_double_beds": {
      "type": "integer",
      "maximum": 40,
      "minimum": 1,
      "description": "Minimum number of two-person beds in that SAME lodging (double, queen, king; a double bunk bed counts as 2)."
    },
    "min_single_beds": {
      "type": "integer",
      "maximum": 40,
      "minimum": 1,
      "description": "Minimum number of one-person beds in that SAME lodging (single beds; a bunk bed counts as 2)."
    },
    "hunt_or_fish_keyword": {
      "type": "string",
      "maxLength": 60,
      "description": "Deprecated alias of keyword."
    },
    "max_price_per_person": {
      "type": "number",
      "maximum": 100000,
      "minimum": 1,
      "description": "Cap on the starting package price per person."
    },
    "min_lodging_capacity": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Minimum number of people a SINGLE cabin/lodging must sleep (e.g. 'a cabin for 10 people' → 10). Different from party_size, which is how many travellers are coming."
    },
    "budget_max_per_person_night": {
      "type": "number",
      "maximum": 100000,
      "minimum": 1,
      "description": "Cap on the per-person, per-night rate (package price divided by nights)."
    },
    "budget_min_per_person_night": {
      "type": "number",
      "maximum": 100000,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
search_outfitters annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_outfitter — Get outfitter profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

Public profile of one outfitter: territory, species, season, and up to 8 summarised packages. Rates appear only when the outfitter has confirmed its listing. No phone, e-mail or website is ever returned.

get_outfitter input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "outfitter_id"
  ],
  "properties": {
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "maxLength": 200
    },
    "outfitter_id": {
      "type": "string",
      "maxLength": 160,
      "description": "Outfitter id (e.g. 'PV-0009') or the id-bearing URL segment."
    }
  },
  "additionalProperties": false
}
get_outfitter annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
get_booking_options — Get booking options
Advertised by the server during the last successful anonymous check.
Advertised read-only

For one outfitter, return how a stay can be booked: booking mode (online payment on MyOutfitters, or a price request through MyOutfitters' anonymised relay), the packages that fit the party and the requested dates, indicative per-person rates when the listing is confirmed, the season window and the exact next step. Optionally pass dates and party size to filter the packages and get a season/availability verdict.

get_booking_options input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "outfitter_id"
  ],
  "properties": {
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "maxLength": 200
    },
    "arrival": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Requested arrival date (YYYY-MM-DD)."
    },
    "departure": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Requested departure date (YYYY-MM-DD)."
    },
    "party_size": {
      "type": "integer",
      "maximum": 60,
      "minimum": 1
    },
    "outfitter_id": {
      "type": "string",
      "maxLength": 200,
      "description": "Outfitter id (e.g. 'PV-0009') or the id-bearing MyOutfitters URL segment."
    }
  },
  "additionalProperties": false
}
get_booking_options annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
check_availability — Check availability
Advertised by the server during the last successful anonymous check.
Advertised read-only

For up to 10 named outfitters, tell whether the requested dates fall in season and which packages fit the party. Returns a verdict per outfitter, never raw inventory.

check_availability input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "outfitter_ids",
    "arrival",
    "departure"
  ],
  "properties": {
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "maxLength": 200
    },
    "arrival": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "departure": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "party_size": {
      "type": "integer",
      "maximum": 60,
      "minimum": 1
    },
    "outfitter_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 160
      },
      "maxItems": 10,
      "minItems": 1,
      "description": "Outfitter ids obtained from search_outfitters."
    }
  },
  "additionalProperties": false
}
check_availability annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true
}
create_price_request — Request a price or dates
Advertised by the server during the last successful anonymous check.

Send a traveller's enquiry to one outfitter through MyOutfitters' anonymised relay. Requires the traveller's own name and e-mail, given with their consent. The outfitter replies by e-mail; neither side sees the other's raw contact details.

create_price_request input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "outfitter_id",
    "full_name",
    "email",
    "message"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 255
    },
    "phone": {
      "type": "string",
      "maxLength": 40
    },
    "locale": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string"
    },
    "api_key": {
      "type": "string",
      "maxLength": 200
    },
    "arrival": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "message": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 5
    },
    "departure": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "full_name": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2
    },
    "package_id": {
      "type": "string",
      "format": "uuid"
    },
    "party_size": {
      "type": "integer",
      "maximum": 60,
      "minimum": 1
    },
    "outfitter_id": {
      "type": "string",
      "maxLength": 160
    }
  },
  "additionalProperties": false
}
create_price_request annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
403 ms
95th percentile latency
403 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 403 ms · metadata changed · 8 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http myoutfitters-mcp https://myoutfitters.ca/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add myoutfitters-mcp --url https://myoutfitters.ca/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable myoutfitters-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "myoutfitters-mcp": {
      "url": "https://myoutfitters.ca/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "myoutfitters-mcp": {
      "type": "streamableHttp",
      "url": "https://myoutfitters.ca/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start myoutfitters-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "myoutfitters-mcp": {
      "type": "http",
      "url": "https://myoutfitters.ca/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http myoutfitters-mcp https://myoutfitters.ca/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://myoutfitters.ca/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "myoutfitters-mcp": {
      "serverUrl": "https://myoutfitters.ca/mcp"
    }
  }
}

Let your agent find its tools

Find servers like MyOutfitters MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run MyOutfitters MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing