Koskamo

VetJobs.au MCP

A read-only MCP server providing four tools to search, retrieve, and sync Australian veterinary job listings directly from the VetJobs.au platform, supporting filtering by category, state, and employment type without authentication.

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.

VetJobs.au MCP logo, by VetJobs.auVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by VetJobs.au
MCP endpoint (Streamable HTTP)
https://vetjobs.au/mcp
Vendor documentation

What you can do with it

  • Search for live veterinary job listings using specific filters
  • Retrieve detailed information for a single job by ID
  • List available job categories and states with live counts
  • Sync recent job changes since a specific timestamp

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
vetjobs 1.0.0
MCP protocol
2025-06-18
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

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

Read-only access to Australia's dedicated veterinary job board. Call list_categories first for vocabulary and volume, then search_jobs. Pass first_party=true to search only listings employers posted directly. Expired listings are never returned.

Tools

4 advertised

search_jobs — Search Australian veterinary jobs
Advertised by the server during the last successful anonymous check.

Search live veterinary job listings on VetJobs.au, Australia's dedicated veterinary job board: veterinarian, veterinary nurse, locum, practice manager, reception and animal care roles posted by clinics, hospitals and practices across Australia (plus some New Zealand roles), with no recruiter middlemen. Expired listings are never returned; a listing that is gone from the source disappears from results. Each listing reports provenance: source, is_imported, first_party and source_url. Pass first_party=true to restrict results to listings the employer posted directly — the most current inventory, and the subset safest to cite.

search_jobs input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Free-text search over title, employer, location and description."
    },
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1
    },
    "state": {
      "type": "string",
      "description": "Australian state/territory code, e.g. QLD, NSW, VIC."
    },
    "category": {
      "type": "string",
      "description": "Occupation slug. Call list_categories first for the vocabulary and live counts, e.g. veterinary-nurse, veterinarian-small-animal."
    },
    "per_page": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1
    },
    "first_party": {
      "type": "boolean",
      "description": "true = only listings posted directly by the employer (excludes scraped imports); false = only imports. Omit for both."
    },
    "updated_since": {
      "type": "string",
      "description": "ISO 8601 date or datetime. Returns only listings changed since then — use this for incremental sync instead of re-fetching everything."
    },
    "employment_type": {
      "type": "string",
      "description": "FULL_TIME, PART_TIME, LOCUM_TENENS, CASUAL, CONTRACTOR, TEMPORARY, RESIDENCY, INTERNSHIP, VOLUNTEER or OTHER."
    },
    "new_graduates_accepted": {
      "type": "boolean",
      "description": "true = only listings that say they accept new graduates (graduate-friendly roles); false = only listings that do not. Omit for both."
    }
  },
  "additionalProperties": false
}
get_job — Get one job listing
Advertised by the server during the last successful anonymous check.

Fetch a single live listing by its numeric id, in the same shape search_jobs returns, including embedded schema.org JobPosting structured data. Returns an error if the listing is unknown, unpublished or expired — treat that as 'no longer available' rather than retrying.

get_job input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "integer",
      "description": "Numeric listing id from search_jobs."
    }
  },
  "additionalProperties": false
}
list_categories — List categories, states and live counts
Advertised by the server during the last successful anonymous check.

The board's vocabulary and volume: every occupation category with its live count, the states that currently have listings, the total active count and the first-party vs imported split. Call this first to learn valid filter values and how much inventory exists before searching.

list_categories input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
recent_changes — Listings changed since a timestamp
Advertised by the server during the last successful anonymous check.

Incremental sync: every listing created or updated since the given ISO 8601 timestamp, newest first. Poll this instead of re-fetching the whole board — combine with the returned ids to keep a local copy current. Expired listings are never returned.

recent_changes input schema
{
  "type": "object",
  "required": [
    "updated_since"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "default": 1,
      "minimum": 1
    },
    "per_page": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1
    },
    "first_party": {
      "type": "boolean",
      "description": "Restrict to first-party (non-imported) listings."
    },
    "updated_since": {
      "type": "string",
      "description": "ISO 8601 date or datetime to sync from."
    }
  },
  "additionalProperties": 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
701 ms
95th percentile latency
701 ms

Maintenance history

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

  • · probe · passed · 701 ms · metadata changed · 4 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 vetjobs-au-mcp https://vetjobs.au/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 vetjobs-au-mcp --url https://vetjobs.au/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start vetjobs-au-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "vetjobs-au-mcp": {
      "type": "http",
      "url": "https://vetjobs.au/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 vetjobs-au-mcp https://vetjobs.au/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "vetjobs-au-mcp": {
      "url": "https://vetjobs.au/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": {
    "vetjobs-au-mcp": {
      "serverUrl": "https://vetjobs.au/mcp"
    }
  }
}

Let your agent find its tools

Find servers like VetJobs.au 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 VetJobs.au 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