PeoplePerHour MCP Server and API by Cotlet
Server Details
PeoplePerHour MCP server for ChatGPT, Claude and any AI agent: search projects, get project brief, search freelancers, get freelancer profile, search Offers, get Offer, list categories and get account in your own PeoplePerHour account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to PeoplePerHour yourself; Cotlet does not store your password and you need no PeoplePerHour API key. About the official PeoplePerHour API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026). Projects, freelancers and Offers are searched and read in the website only, and the one built-in alert is an email, instant or daily, from up to 10 saved searches. Setup and FAQ: https://cotlet.dev/integrations/peopleperhour-api-mcp-server
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cotletdev/peopleperhour-api-mcp-server
- GitHub Stars
- 6
- Server Listing
- PeoplePerHour MCP Server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 40 tools
The browser tools are mostly distinct by action (click, type, fill_form, select, press, etc.), and the PeoplePerHour guide tools differ by target action. However, several PeoplePerHour tools overlap enough to confuse selection—search_projects vs list_my_projects, search_offers vs get_offer, watch_and_unwatch_projects vs list_watchlist—and the guide tools return instructions rather than results, which can mislead an agent expecting direct action.
All names use snake_case with clear namespacing: cotlet_, cotlet_browser_, and peopleperhour_. The only notable deviations are compound multi-action names like peopleperhour_list_save_and_delete_saved_searches and peopleperhour_watch_and_unwatch_projects, but the convention remains readable and predictable overall.
At 40 tools the surface is heavy, with roughly 19 generic browser tools, 7 Cotlet account/utility tools, and 14 thin PeoplePerHour guide tools. Many PeoplePerHour tools only return procedural instructions, so they add count without adding direct capability, making the set feel inflated for the domain.
The PeoplePerHour surface covers broad read/browse workflows: search projects/freelancers/offers, get briefs/profiles/offers, list categories/projects/notifications/watchlist/workstreams, and manage saved searches. Major gaps remain around write actions such as submitting a proposal, messaging a client, managing contracts or payments, and profile editing, though the generic browser tools provide a workaround.
Publisher details
- Operator
- Cotlet.dev
- Operator website
- https://cotlet.dev
- Vendor relationship
- Independent
- Trust center
- https://cotlet.dev/security
- Restrictions
- Needs a Cotlet account (free trial, then credits). The user signs in to PeoplePerHour once in their own Cotlet Cloud Browser; no PeoplePerHour API key or paid PeoplePerHour plan is needed.
Available Tools
40 toolscotlet_app_guideCotlet: how to work in an appARead-onlyIdempotentInspect
How to work in an app by clicking in the user's Cloud Browser with Cotlet's browser tools: which browser to use for this workspace and the sign-in link, the method step by step, the app's screens, menus and actions, notes, and the app's dedicated tools when Cotlet has them. Call it before the first browser step in an app. Works for any web app; one outside Cotlet's catalog gets the general method. Free, no browser session. For PeoplePerHour it covers these actions: Search projects, Get project brief, Search freelancers, Get freelancer profile, Search Offers, Get Offer, List categories, Get account, List my projects, Watch and unwatch projects, List watchlist, List, save and delete saved searches, List notifications, List WorkStreams.
Inputs: app, task.
cotlet_appsCotlet: apps I can useBRead-onlyInspect
The apps of the user's workspace and whether each works now: the app account in the user's Cloud Browser (connected, signed out, signed in but not connected), and the one step the user has to take, with the console link. Free. Needs the user's Cotlet API key or sign-in.
Inputs: app.
cotlet_balanceCotlet: credit balanceARead-onlyInspect
The user's current credit balance. Free. Needs the user's Cotlet API key or sign-in.
Inputs: no named parameters.
cotlet_browser_clickClick on the pageADestructiveInspect
Clicks element element, or point x, y of the screenshot; double double-clicks, button: right right-clicks. Answers the page after it: the elements and text in view, with the same numbers. Says when nothing changed. A link that would open a new tab opens in this one. Buttons that pay or buy, and sign-in and account pages, are refused.
Inputs: x, y, app, button, +4 more.
cotlet_browser_closeClose the browserAIdempotentInspect
Ends the browser session when the task is done: the browser keeps its cookies and sleeps, and the per-minute charge stops. Answers the session's minutes and credits.
Inputs: app.
cotlet_browser_downloadDownload a fileADestructiveInspect
Gets the file that clicking element (a download link or button) or opening url starts, also an image or PDF it only opens: answers its name, type, size and a link valid 15 minutes; CSV, JSON and other text files also as text.
Inputs: app, url, element.
cotlet_browser_dragDrag on the pageADestructiveInspect
Drags from one element or point to another: a card between columns, a piece on a board, a slider's handle. Answers the page after it: the elements and text in view, with the same numbers.
Inputs: to (required), from (required), app, dialog, +1 more.
cotlet_browser_evaluateRun a script on the pageADestructiveInspect
Runs a JavaScript function body on the page and answers what it returns, as JSON. Use it to extract data the page holds (a table, a list, attributes); act with the other tools. It cannot send requests, click, submit, or read cookies or storage; a filled field's value reads [hidden by Cotlet]. Example: return [...document.querySelectorAll('h2')].map(h => h.innerText)
Inputs: script (required), app.
cotlet_browser_fill_formFill in a formADestructiveInspect
Fills several fields in one step: text fields take text, drop-downs an option's label, checkboxes, radios and switches true or false. Stops at the first field that fails and names those filled. Does not send the form: click its button after. Answers the page after it: the elements and text in view, with the same numbers.
Inputs: fields (required), app, dialog, dialog_text.
cotlet_browser_findFind on the pageARead-onlyIdempotentInspect
Finds text on the whole current page, frames included: the elements whose label holds it, with their numbers, and each line of text that holds it. Use it instead of reading or scrolling a long page for one thing.
Inputs: text (required), app, kind.
cotlet_browser_hoverPoint at the pageARead-onlyIdempotentInspect
Rests the pointer on an element or a point, to open a hover menu, a tooltip or a preview. Answers the page after it: the elements and text in view, with the same numbers.
Inputs: x, y, app, element.
cotlet_browser_openOpen the browserARead-onlyInspect
Starts the user's Cloud Browser (a real Chrome on Cotlet, where the user is signed in to their sites) and opens url. Call it first. The URL goes to the site's open tab, else to a new tab, so the user's own tabs stay. Answers the page after it: the elements and text in view, with the same numbers. In PeoplePerHour it serves these actions: Search projects, Get project brief, Search freelancers, Get freelancer profile, Search Offers, Get Offer, List categories, Get account, List my projects, Watch and unwatch projects, List watchlist, List, save and delete saved searches, List notifications, List WorkStreams.
Inputs: app, url.
cotlet_browser_pressPress a keyADestructiveInspect
Presses a key on the focused element: Enter to send, Tab to the next field, Escape to close a pop-up, arrows in a list or slider, or one character (a site's shortcut). Answers the page after it: the elements and text in view, with the same numbers.
Inputs: key (required), app, dialog, repeat, +1 more.
cotlet_browser_readRead the pageARead-onlyIdempotentInspect
The whole current page: its text (up to 20,000 characters) and a numbered list of its links, buttons, fields and other controls, open dialogs first. Use it on a new page or when a step's answer is not enough; element reads only inside one element (a dialog, a form, a list). Never returns field values, cookies or storage.
Inputs: app, element.
cotlet_browser_screenshotSee the pageARead-onlyIdempotentInspect
A JPEG of the visible part of the page. Use it for boards, canvases, maps, charts and layout that the text does not show, then click or drag by x, y of the image.
Inputs: app.
cotlet_browser_scrollScroll the pageARead-onlyIdempotentInspect
Scrolls with the mouse wheel: down or up by screens, to top or bottom, until element is in view, or inside a panel or list (inside). Content that loads on scroll appears. Answers the page after it: the elements and text in view, with the same numbers.
Inputs: app, inside, element, screens, +1 more.
cotlet_browser_selectChoose from a listADestructiveInspect
Chooses option (its label as listed, or its value) in drop-down element. For a home-made drop-down, click it, then click the option. Answers the page after it: the elements and text in view, with the same numbers.
Inputs: option (required), element (required), app, dialog, +1 more.
cotlet_browser_tabsBrowser tabsAInspect
The tabs of the user's web browser, where they keep their signed-in sites open. list (default) answers each tab's id, URL and title and which is shown; switch with tab shows that tab, and every later step acts on it; new with url opens a tab (at most 8); close with tab closes it. Work in the tab of the site the task is about and close only the tabs you opened.
Inputs: tab, url, action.
cotlet_browser_typeType on the pageADestructiveInspect
Types text into field element, replacing what it held; submit presses Enter after it. For several fields use fill_form. Without element the text goes where the focus is, as a person types after clicking: for spreadsheet cells and editors that read does not number (Google Sheets, Docs), click the place first; there a tab in text presses Tab and a line break Enter, so one call fills a table. Answers the page after it: the elements and text in view, with the same numbers. Password, card and one-time code fields are refused: the user types them.
Inputs: text (required), app, dialog, slowly, +3 more.
cotlet_browser_uploadUpload a fileADestructiveInspect
Puts files into file field or upload button element: each file is {"url": "https://..."} or {"file_id": "..."} of a file uploaded to Cotlet; up to 10 files, 20 MB each. Answers the page after it: the elements and text in view, with the same numbers.
Inputs: files (required), element (required), app.
cotlet_browser_waitWait for the pageARead-onlyIdempotentInspect
Waits until text shows on the page (at most seconds, default 5, up to 20), or just seconds: for results that load slowly. Says whether the text appeared. Answers the page after it: the elements and text in view, with the same numbers.
Inputs: app, text, seconds.
cotlet_get_callCotlet: check a callARead-onlyInspect
Status of an earlier Cotlet call, by its call_id: pending (waits for the owner's approval in the Cotlet console), approved, running, success, rejected, expired, blocked or failed. For a call that answered with status pending or running.
Inputs: call_id (required).
cotlet_report_issueCotlet: report a bug or a missing featureAInspect
Sends a report to the Cotlet team: a tool that failed or returned wrong data, an error you could not get past, or a step the browser could not do, with the page, the step and what you saw. A missing dedicated tool is not a problem to report: do the task in the browser. A feature the user asks for goes as feature_request. A report promises nothing: tell the user it was sent, never that something will be built or fixed, or when. The report carries the error text and call_id when there is one, never passwords or tokens. Needs the user's Cotlet API key or sign-in.
Inputs: kind (required), title (required), description (required), app, +3 more.
cotlet_upload_fileCotlet: upload a file for a toolAInspect
Returns a one-time upload_url and a file_id for a local file (an image for a post, an attachment). The file is sent to upload_url with an HTTP PUT; an argument that takes a file accepts {"file_id": "..."}. Up to 25 MB, the URL works once. Free. Needs the user's Cotlet API key or sign-in.
Inputs: name, content_type.
cotlet_whoamiCotlet: who am IARead-onlyInspect
The Cotlet account this connection acts as: email, workspace, access status, the API key or OAuth client in use with its scope, the apps the workspace may call and its credit balance. Free. Needs the user's Cotlet API key or sign-in.
Inputs: no named parameters.
peopleperhour_get_accountGet account in PeoplePerHourARead-onlyIdempotentInspect
Get account in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_get_freelancer_profileGet freelancer profile in PeoplePerHourARead-onlyIdempotentInspect
Get freelancer profile in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_get_offerGet Offer in PeoplePerHourBRead-onlyIdempotentInspect
Get Offer in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_get_project_briefGet project brief in PeoplePerHourARead-onlyIdempotentInspect
Get project brief in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_list_categoriesList categories in PeoplePerHourARead-onlyIdempotentInspect
List categories in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_list_my_projectsList my projects in PeoplePerHourARead-onlyIdempotentInspect
List my projects in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_list_notificationsList notifications in PeoplePerHourBRead-onlyIdempotentInspect
List notifications in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_list_save_and_delete_saved_searchesList, save and delete saved searches in PeoplePerHourARead-onlyIdempotentInspect
List, save and delete saved searches in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_list_watchlistList watchlist in PeoplePerHourARead-onlyIdempotentInspect
List watchlist in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_list_workstreamsList WorkStreams in PeoplePerHourARead-onlyIdempotentInspect
List WorkStreams in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_search_freelancersSearch freelancers in PeoplePerHourARead-onlyIdempotentInspect
Search freelancers in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_search_offersSearch Offers in PeoplePerHourARead-onlyIdempotentInspect
Search Offers in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_search_projectsSearch projects in PeoplePerHourARead-onlyIdempotentInspect
Search projects in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
peopleperhour_watch_and_unwatch_projectsWatch and unwatch projects in PeoplePerHourARead-onlyIdempotentInspect
Watch and unwatch projects in the user's own PeoplePerHour account from ChatGPT, Claude or any AI agent. Returns how to do it in PeoplePerHour step by step (screens, buttons, fields) and opens nothing by itself; then do it with the cotlet_browser_* tools in the user's PeoplePerHour Cloud Browser. PeoplePerHour's official API: PeoplePerHour has no public API and no developer docs (checked 12 Oct 2026).
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
PeopleHR MCP server for ChatGPT, Claude and any AI agent: list holiday requests, approve holiday request, decline holiday request, list employees, get employee planner, create task and run saved query in your own PeopleHR account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to PeopleHR yourself; Cotlet does not store your password and you need no PeopleHR API key. About the official PeopleHR API: PeopleHR has a REST API, the Access PeopleHR Integration API v4.0, but no official MCP server (checked 22 Oct 2026). The API covers 31 resources and 150 actions, mostly employee records, holiday and absence data, and every call needs an API key that an HR admin creates in Settings. Setup and FAQ: https://cotlet.dev/integrations/peoplehr-api-mcp-server
JobAdder MCP server for ChatGPT, Claude and any AI agent: search candidates, get candidate, list job applications, rate application, update application status, add candidate note, create candidate and create task in your own JobAdder account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to JobAdder yourself; Cotlet does not store your password and you need no JobAdder API key. About the official JobAdder API: JobAdder has a REST API, but not for every account (checked 22 Oct 2026). Access goes through JobAdder's API Partner terms, its pricing page lists API access on Essential and Pro and not on Lite, and there is no official MCP server. Setup and FAQ: https://cotlet.dev/integrations/jobadder-api-mcp-server
Dubsado MCP server for ChatGPT, Claude and any AI agent: create project, send form, send invoice, record payment and list unpaid invoices in your own Dubsado account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Dubsado yourself; Cotlet does not store your password and you need no Dubsado API key. About the official Dubsado API: Dubsado has no public API (checked 11 Oct 2026). Its only official connection is Zapier, on the Premier plan: five triggers and one action, Create Project. Setup and FAQ: https://cotlet.dev/integrations/dubsado-api-mcp-server
17hats MCP server for ChatGPT, Claude and any AI agent: add contact, create project, send quote, send invoice and record payment in your own 17hats account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to 17hats yourself; Cotlet does not store your password and you need no 17hats API key. About the official 17hats API: 17hats publishes no public API. Its only key is for Zapier, on the new subscription plan, and that integration "is limited to importing, updating and syncing Contacts" (checked 9 Nov 2026). Setup and FAQ: https://cotlet.dev/integrations/17hats-api-mcp-server
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables ChatGPT, Claude and other AI agents to work inside a signed-in Eversports Studio Manager account through Cotlet — viewing studio activities and sign-in lists, signing participants in, pausing or resuming memberships, and emailing invoices, with user approval before any change is saved. It runs as a hosted connector or a local stdio server that forwards tool calls to Cotlet.7Elastic 2.0
- AlicenseNot gradedqualityAmaintenanceA local MCP server that lets AI coding tools drive the user's own already-logged-in Chrome, reading pages, clicking, typing, filling forms, taking screenshots, and inspecting storage, network, and console state. It works through a Chrome extension rather than a remote-debugging port, so no data leaves the machine and bot detection is bypassed.1 npmISC
- AlicenseNot gradedqualityAmaintenanceA local MCP server that enables AI coding assistants to drive the real, already-logged-in Chrome browser — navigating pages, clicking, typing, reading content, taking screenshots, and inspecting tabs, cookies, and network traffic through natural language. It works as a Chrome extension, so no remote-debugging port needs to be opened and pages the user is already signed into are fully usable.1 npmISC
- AlicenseAqualityBmaintenanceEnables AI agents such as Claude Code and ChatGPT to manage listings and retrieve sales insights in a user's signed-in seller account via MCP. It works without an official platform API key.7Elastic 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.