Koskamo

workfinds.app MCP

An official MCP server provided by workfinds.app that allows AI agents to search for open jobs, retrieve specific job details with apply links, list companies, countries, and roles. It aggregates public job listings from company career sites and ATS platforms, enabling users to filter by work arrangement, location, and type without requiring 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.

workfinds.app MCP logo, by workfinds.appVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by workfinds.app
MCP endpoint (Streamable HTTP)
https://workfinds.app/mcp
Vendor documentation

What you can do with it

  • Search for open jobs using keywords and filters like country or work arrangement
  • Retrieve detailed information for a specific job including the apply link
  • List available countries and job roles supported by the platform

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
app.workfinds/jobs 1.0.0
MCP protocol
2025-06-18
Tools
5 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.

Search open jobs on workfinds.app, collected directly from company career sites and applicant tracking systems. Use search_jobs to find jobs (filter by the country the person will work from, work arrangement, employment type and posting date), get_job for one job with its apply link, and get_company for an employer. Every result has a workfinds.app page URL: share it with the user. Listings change, so tell users to confirm details on the employer site before applying. All data is public; no sign-in.

Tools

5 advertised

search_jobs — Search jobs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search open jobs on workfinds.app. Returns at most 50 jobs per search, in pages of 20 (pages 1 to 3), newest first unless sort is "relevance", each with a workfinds.app page URL, plus the total and a search_url that opens the same search on the site. Every argument is optional; combine them to narrow the search.

search_jobs input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "maximum": 3,
      "minimum": 1,
      "description": "Result page, 1 to 3."
    },
    "role": {
      "enum": [
        "sales",
        "finance-accounting",
        "nursing",
        "sports-wellness"
      ],
      "type": "string",
      "description": "A role family, see list_roles."
    },
    "sort": {
      "enum": [
        "newest",
        "relevance"
      ],
      "type": "string",
      "description": "newest (default) or relevance (only with a query)."
    },
    "query": {
      "type": "string",
      "maxLength": 80,
      "description": "Words to search for: a job title, skill or company name, e.g. \"data engineer\"."
    },
    "country": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "ISO 3166-1 alpha-2 code of the country the person will work from, e.g. \"PH\". Returns jobs open to applicants from that country, worldwide remote jobs included. See list_countries."
    },
    "company_id": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.:-]{1,128}$",
      "maxLength": 128,
      "description": "Only this company's jobs: the id or page slug from get_company or a job's company."
    },
    "posted_within": {
      "enum": [
        "24h",
        "3d",
        "7d",
        "14d",
        "30d"
      ],
      "type": "string",
      "description": "Only jobs published within the last 24h, 3d, 7d, 14d or 30d."
    },
    "salary_listed": {
      "type": "boolean",
      "description": "Only jobs whose employer lists a salary."
    },
    "employment_type": {
      "type": "array",
      "items": {
        "enum": [
          "full_time",
          "part_time",
          "contract",
          "temporary",
          "internship"
        ],
        "type": "string"
      },
      "maxItems": 5,
      "description": "Any of full_time, part_time, contract, temporary, internship.",
      "uniqueItems": true
    },
    "work_arrangement": {
      "type": "array",
      "items": {
        "enum": [
          "remote",
          "hybrid",
          "onsite"
        ],
        "type": "string"
      },
      "maxItems": 3,
      "description": "Any of remote, hybrid, onsite.",
      "uniqueItems": true
    }
  },
  "additionalProperties": false
}
search_jobs output schema
{
  "type": "object",
  "required": [
    "total",
    "total_is_lower_bound",
    "page",
    "total_pages",
    "search_url",
    "jobs"
  ],
  "properties": {
    "jobs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "title",
          "company",
          "location",
          "work_arrangements",
          "employment_types",
          "eligibility",
          "salary",
          "posted_at",
          "url"
        ],
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "description": "The job page on workfinds.app."
          },
          "title": {
            "type": "string"
          },
          "salary": {
            "type": [
              "string",
              "null"
            ],
            "description": "As the employer lists it; null when not listed."
          },
          "company": {
            "type": "object",
            "required": [
              "id",
              "name",
              "url"
            ],
            "properties": {
              "id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "url": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The company page on workfinds.app."
              },
              "name": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          },
          "location": {
            "type": "string"
          },
          "posted_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 8601, when the employer published it."
          },
          "eligibility": {
            "type": "object",
            "required": [
              "scope",
              "countries",
              "countries_truncated"
            ],
            "properties": {
              "scope": {
                "enum": [
                  "worldwide",
                  "worldwide_except",
                  "countries",
                  "unknown"
                ],
                "type": "string"
              },
              "countries": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "countries_truncated": {
                "type": "boolean"
              }
            },
            "description": "Countries people may apply from, as the employer states them."
          },
          "employment_types": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "work_arrangements": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "page": {
      "type": "integer"
    },
    "total": {
      "type": "integer",
      "description": "Matching open jobs."
    },
    "search_url": {
      "type": "string",
      "description": "The same search on workfinds.app."
    },
    "total_pages": {
      "type": "integer"
    },
    "total_is_lower_bound": {
      "type": "boolean"
    }
  }
}
search_jobs annotations
{
  "title": "Search jobs",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_job — Get a job
Advertised by the server during the last successful anonymous check.
Advertised read-only

One job by its id or its workfinds.app job URL: title, company, location, work arrangement, employment type, the countries it accepts applicants from, salary when listed, when it was posted, whether it is still open, its apply URL on the employer site and its workfinds.app page. A closed job answers with status "closed" and when it closed.

get_job input schema
{
  "type": "object",
  "required": [
    "job"
  ],
  "properties": {
    "job": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1,
      "description": "The job id from search_jobs, or a https://workfinds.app/jobs/... URL."
    }
  },
  "additionalProperties": false
}
get_job output schema
{
  "type": "object",
  "required": [
    "status",
    "id",
    "title",
    "url"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "description": "The job page on workfinds.app."
    },
    "title": {
      "type": "string"
    },
    "status": {
      "enum": [
        "open",
        "closed"
      ],
      "type": "string"
    }
  }
}
get_job annotations
{
  "title": "Get a job",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_company — Get a company
Advertised by the server during the last successful anonymous check.
Advertised read-only

One employer by its id or page slug: name, number of open jobs, its workfinds.app page and, when known, its profile (industry, size, headquarters, founded, website, short description). Use search_jobs with company_id for its jobs.

get_company input schema
{
  "type": "object",
  "required": [
    "company"
  ],
  "properties": {
    "company": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.:-]{1,128}$",
      "maxLength": 128,
      "minLength": 1,
      "description": "The company id or slug, e.g. a job's company.id."
    }
  },
  "additionalProperties": false
}
get_company output schema
{
  "type": "object",
  "required": [
    "id",
    "name",
    "open_job_count",
    "url",
    "jobs_url",
    "profile"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "profile": {
      "type": [
        "object",
        "null"
      ]
    },
    "jobs_url": {
      "type": "string"
    },
    "open_job_count": {
      "type": "integer"
    }
  }
}
get_company annotations
{
  "title": "Get a company",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_countries — List countries
Advertised by the server during the last successful anonymous check.
Advertised read-only

The country codes search_jobs accepts, with their English names.

list_countries input schema
{
  "type": "object",
  "additionalProperties": false
}
list_countries output schema
{
  "type": "object",
  "required": [
    "countries"
  ],
  "properties": {
    "countries": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "code",
          "name"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    }
  }
}
list_countries annotations
{
  "title": "List countries",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_roles — List role families
Advertised by the server during the last successful anonymous check.
Advertised read-only

The role families search_jobs accepts as role.

list_roles input schema
{
  "type": "object",
  "additionalProperties": false
}
list_roles output schema
{
  "type": "object",
  "required": [
    "roles"
  ],
  "properties": {
    "roles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "role",
          "name"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        }
      }
    }
  }
}
list_roles annotations
{
  "title": "List role families",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "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
1431 ms
95th percentile latency
1431 ms

Maintenance history

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

  • · probe · passed · 1431 ms · metadata changed · 5 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 workfinds-app-mcp https://workfinds.app/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 workfinds-app-mcp --url https://workfinds.app/mcp

Cursor

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

Cline

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

VS Code

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

Let your agent find its tools

Find servers like workfinds.app 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 workfinds.app 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