Stoory Hire Specialist
Server Details
Find and hire a human specialist from the Stoory marketplace, right from chat.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- StooryGitServer/stoory-mcp-server
- GitHub Stars
- 0
Available Tools
6 toolscancel_taskCancel taskAInspect
Cancels the task, as long as the specialist has not started work yet.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It discloses an important conditional behavior: cancellation is only possible before work has started. However, it does not mention what happens if the specialist has already started, whether cancellation is reversible, or what response can be expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that states the action and the critical precondition without wasted words. The most important constraint is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter mutation tool, the purpose and precondition are present. However, with no annotations and no output schema, the description leaves out likely useful details such as error behavior when the task cannot be cancelled and whether the action is irreversible.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explicitly explain the task_id parameter. The meaning is weakly implied by 'Cancels the task,' but the description does not compensate for the lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Cancels') and resource ('the task'), and includes the key precondition. It is clearly distinct from its siblings, which create, retrieve, or search tasks rather than cancel them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies the relevant condition for use: cancellation is valid only when the specialist has not started work. It does not explicitly mention alternatives, but none of the siblings perform a comparable cancel operation, so this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskCreate taskAInspect
Invites one or more chosen specialists to a project — does NOT charge payment. budget is a single amount for the whole task (not multiplied per specialist) — whoever accepts it does the work for it. Requires user_confirmed=true, set only after the user has explicitly confirmed in the conversation the choice of specialists, the list of shared files and the estimated cost. Estimate budget yourself from the problem's complexity (e.g. 1h = a single well-localized bug / a simple document fix / a minor graphic tweak; 2h = a standard debug across a few files / a draft legal document (e.g. Privacy Policy) / a landing page design; 3h = an architecture review, a full legal package (ToS+Privacy+GDPR) or a compliance audit, full branding, no clear diagnosis) times the specialist's min_rate_per_hour (from search_specialists) — this field is informational, not enforced, always in USD (the only currency on the marketplace).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| budget | Yes | ||
| language | Yes | The task's language — must match the language the user phrased title/description in (there is no auto-detection, set it according to the user's input). | |
| timeline | No | How urgent the project is from the client's perspective — ask the user directly, do not guess. | No rush |
| description | Yes | ||
| context_files | No | The minimal set of files the specialist needs. Each entry is { name, url?, content_base64? } and must carry exactly one source. `url` is strongly preferred: pass a link if the user gave one (Google Drive / Dropbox / S3 / raw GitHub), or — if you have a way to upload the file yourself (e.g. a code execution / shell environment) — upload it to any URL-reachable location first and pass that link instead of the raw bytes; the server just downloads it, which is fast and costs you almost no extra tokens. Use `content_base64` only as a last resort, when there is no URL and you have no way to produce one yourself (e.g. a small file the user attached directly in a chat-only client with no upload capability of its own) — inlining bytes means writing out the entire file as text, which is slow and burns far more tokens than a URL for anything beyond a tiny file. Before falling back to it, tell the user that creating the task will take noticeably longer and use more tokens because of it. Raw base64 only, never a `data:...;base64,` prefix. This server runs remotely and cannot read the caller's disk, so never pass local paths. For a large binary with no URL and no way to upload it yourself, don't inline it — tell the user to add it to the task repo manually instead. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. A non-empty list always gets a repo, even if every entry ends up in blocked_files (unreadable or filtered) — so the 'add it manually' fallback always has a real repo_url to point to. The GitHub username used to invite the client into the task repo comes from their Stoory account, not from you — you never see or pass it. If create_task fails because it's missing or invalid, tell the user to check/set their GitHub username in their Stoory account settings, then retry create_task. | |
| specialist_ids | Yes | Id of one or more specialists to invite. | |
| user_confirmed | Yes | Must be true — set it only after the user's explicit confirmation in the conversation. | |
| problem_context | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and delivers: it discloses that no payment is charged, that budget is a single whole-task amount not multiplied per specialist and is informational/unenforced, and the context_files parameter description discloses side effects — server scans for secrets, pushes to a private GitHub repo, contents never enter model context, max 1 file ≈900KB, never local paths — plus the failure/retry flow for a missing GitHub username. This far exceeds what annotations would typically provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is a run-on chain of clauses, but every clause earns its place: the budget heuristics and confirmation gate are operationally necessary, and context_files' paragraph prevents costly token-burning and disk-access mistakes. Length is justified density rather than padding, though it could be restructured into clearer sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutating tool with no annotations and no output schema, the description covers prerequisites, money semantics, file-handling rules, and a real failure mode (GitHub username — with a retry instruction). The main remaining gap is the unspecified return value and explicit lifecycle placement relative to search_specialists/cancel_task, which are minor against the depth present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 56% — language, timeline, context_files, specialist_ids, and user_confirmed are documented in-schema. The main description compensates for the undocumented budget by adding an estimation methodology, USD currency note, and 'not enforced' semantics; context_files has exceptionally deep guidance (URL vs base64, token costs, size cap, secret scanning). title/description/problem_context stay bare but are self-evident string fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states a specific verb+resource ('Invites one or more chosen specialists to a project') that is immediately distinguishable from the sibling family of cancel/get/search tools. It loses the fifth point because it does not explicitly name a sibling it is not, though the family contrast is obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Sets an explicit, enforceable prerequisite — user_confirmed=true only after the user explicitly confirmed specialists, shared files, and estimated cost in the conversation — telling the agent when it is permitted to call this tool. It also references search_specialists for min_rate_per_hour to derive the budget. No explicit when-not-to-use or alternative-naming, but as the sole creation tool in the family the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_repo_filesGet task repo filesAInspect
Reads the contents of files from the task's GitHub repo (from the repo_url returned by get_task_result or create_task) — so you can check the specialist's work without opening the link manually. Root-directory files only (the repo is flat); files > 900KB are returned as just a download_url with no content.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it discloses read-only file access, root-directory-only scope (flat repo), and the 900KB threshold where content is replaced by a download_url. It doesn't describe the exact normal-file return shape, but the key limitations are explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the core action and source are front-loaded, and the constraints are packed into a compact second sentence. Every clause adds decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers the source of repo_url, the flat/root-only structure, and the large-file truncation rule. It leaves minor gaps about the exact normal-file return format, but an agent has enough to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents only task_id as a required string with no description (0% coverage), so the description must compensate. It clarifies that task_id refers to the task whose GitHub repo is being read and that repo_url comes from get_task_result or create_task. It does not restate the parameter formally, but the mapping is unambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and object: 'Reads the contents of files from the task's GitHub repo,' and ties it to the repo_url returned by get_task_result or create_task. This clearly differentiates it from sibling task-management tools such as cancel_task, get_task_status, and search_specialists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage context: use this tool to check a specialist's work without manually opening the link, and it identifies the prerequisite of obtaining repo_url via get_task_result or create_task. It doesn't explicitly mention when not to use it, but no sibling performs file reads, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_resultGet task resultBInspect
Returns the task's status and the GitHub repo link. The specialist's work (files, commits, diffs) lives in the repo — create_task already returns repo_url when the task had attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the two main outputs—status and repo link—and clarifies that files, commits, and diffs are not returned inline but live in the repo. It does not mention edge cases such as missing repo link or task-not-found behavior, but for a simple query tool the disclosure is minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler, and the primary output (status + repo link) is front-loaded. The second sentence earns its place by explaining where the specialist's actual work can be found.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core result and usefully points to the repo for files, commits, and diffs. However, with no output schema and a sibling named get_task_status, it should have clarified when get_task_result is preferred and what the response contains when no repo link exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention task_id, its meaning, format, or how it relates to the returned result. The parameter name is self-explanatory, but the description adds no semantic value beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Returns' and the resource: the task's status and GitHub repo link. It also adds useful context that the specialist's work lives in the repo, but it does not explicitly distinguish itself from the sibling get_task_status, which also likely returns status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this to get the task result and the repo link where the specialist's work is stored. The note about create_task returning repo_url when attachments exist hints at an alternative source, but there is no explicit when-to-use or when-not-to-use guidance versus get_task_status or get_task_repo_files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_statusGet task statusAInspect
Checks the task's current status. Call it again when the user asks about progress. specialist_accepted/specialists_invited contain profile_url (already in the right language) — show it to the user as a link instead of a bare id.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses that the response includes specialist_accepted/specialists_invited with profile_url fields, instructs the agent to render them as links, and notes the language is already correct. It doesn't describe side effects, but the action is explicitly a check, so read-only behavior is reasonably evident.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first states the purpose, the second adds a usage trigger and a valuable output-handling note. Everything present earns its place, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter status tool with no output schema, the description covers the essential details: what it does, when to call it, and how to handle the notable response fields. It doesn't list possible status values or error conditions, but those are not required for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for task_id, and the description doesn't explicitly explain the parameter. However, the parameter name and the description's reference to 'the task' make its meaning obvious, so the lack of explicit parameter documentation is only a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Checks the task's current status.' It naturally differentiates from siblings like get_task_result by emphasizing progress rather than final output, and the 'Call it again' phrasing clarifies its role as a status poll.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit usage trigger: 'Call it again when the user asks about progress.' It doesn't name alternatives or state when not to use it, but the distinction from get_task_result and the simple tool set make the appropriate context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_specialistsSearch specialistsAInspect
Searches for specialists in the Stoory marketplace via semantic search. Result quality depends mostly on a well-built query — see the query field description. If a result has <3 hits or only 'Alternative fit', retry with a simpler/broader query (see query) instead of asking the user; only after about 3 failed attempts tell the user you have no one to recommend for these requirements and suggest widening the criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Default 10, raise to 20 for weak results or when the user asks for more options (max 20). | |
| query | Yes | The specialist's role and skills, MAX 12 words, natural language — not a full sentence describing the user's problem. In English if possible (faster response and better hits than other languages). Good: 'Senior Stripe developer', 'Professional logo designer', 'Experienced UX designer for mobile apps'. Bad: 'I need someone who can help me with branding and visual identity design' (full sentence instead of a role), 'Full-stack developer with microservices architecture experience' (too much glued-together specificity at once). When results are weak (<3 hits or only 'Alternative fit'), retry with a progressively simpler/broader query instead of asking the user, e.g. 'Senior mobile app developer for fintech startup' → 'Mobile app developer' → 'App developer' → 'Mobile development'; or 'GDPR compliance lawyer for healthcare startup' → 'GDPR lawyer' → 'Data protection lawyer' → 'Lawyer'. | |
| country | No | Only when the user explicitly asks for the specialist's country (e.g. 'a designer from Poland'). Full English country name, e.g. "Poland", "Germany" — not an ISO code. Ignored if geo_location is also given. Omit the field when the user did not mention a country. | |
| languages | No | Only when the user explicitly asks for a specific specialist language (e.g. 'a Polish-speaking designer'). Allowed values: English, Polish, German, French, Spanish, Italian — any other value is rejected by the API. Omit the field (or []) when the user did not mention a language. | |
| geo_location | No | Only when the user gives a specific city/location and wants to search nearby (e.g. 'near Warsaw', 'a designer in Warsaw'). An object { lat, lon, radius_meters } — determine the lat/lon of the named city yourself. Default radius_meters is 50000 (50km); when there are too few results, raise it to 100000, then 200000 instead of broadening the query. Takes priority over `country` if both are given. Omit the field when the user did not mention a location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It reveals genuinely useful behavioral traits: result quality depends on query construction, weak results manifest as '<3 hits or only Alternative fit,' and the expected agent behavior is an autonomous retry loop with an escalation threshold. It does not explicitly declare read-only safety, but 'Searches ... via semantic search' strongly implies a non-mutating operation, and no auth/rate-limit context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is two sentences (~70 words), purpose front-loaded, with every clause carrying actionable guidance — the weak-result condition, the retry instruction, the ~3-attempt threshold, and the user-facing fallback message. There is minor overlap where the retry rule reappears in the query schema description, but the description adds the escalation threshold not stated there, making the overlap complementary rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity — 5 parameters, a nested geo_location object, and retry semantics — the description plus schema cover purpose, per-parameter inclusion rules, query-construction guidance, and the failure escalation path. No output schema exists, but the description references the result's key interpretive signals ('<3 hits,' 'Alternative fit'), giving the agent enough to judge result quality; a formal return-payload spec is the main missing piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema's per-parameter guidance is unusually rich: query has a 12-word limit with good/bad examples, and country/languages/geo_location all state explicit include-only-when-asked conditions and priority rules. The main description only points to the query field description rather than adding new parameter meaning, so the high-coverage baseline of 3 applies without upward adjustment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Searches for specialists in the Stoory marketplace via semantic search,' naming the domain, the target entity, and the mechanism. The sibling tools are all task-lifecycle operations (cancel_task, create_task, get_task_status), so there is no plausible confusion between this marketplace-search tool and any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit failure-handling protocol: retry with a simpler/broader query instead of asking the user, and only after ~3 failed attempts tell the user there is no one to recommend and suggest widening criteria. It does not explicitly contrast with sibling tools, but none of them are search alternatives; the guidance centers on the retry loop rather than tool selection, so an explicit 'when not to use' is less critical here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
- Changed
create_task1 field changed- changed
Input schema / properties / context_files / descriptionPrevious value: -"The minimal set of files the specialist needs. This server runs remotely and cannot read the caller's disk, so do NOT pass local paths. Each entry is { name, url?, content_base64? } and must carry exactly one source: `url` (the server downloads it — prefer this when the user gave a link, e.g. Google Drive / Dropbox / S3 / raw GitHub) or `content_base64` (inline bytes, for small local or chat-uploaded files; raw base64 only, no `data:...;base64,` prefix). For a large binary with no URL (e.g. an image), do not inline it — tell the user to add it to the task repo manually. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. A non-empty list always gets a repo, even if every entry ends up in blocked_files (unreadable or filtered) — so the 'add it manually' fallback always has a real repo_url to point to. The user must have github_username set — if create_task reports it missing, ask the user for their GitHub login and try again."New value: +"The minimal set of files the specialist needs. Each entry is { name, url?, content_base64? } and must carry exactly one source. `url` is strongly preferred: pass a link if the user gave one (Google Drive / Dropbox / S3 / raw GitHub), or — if you have a way to upload the file yourself (e.g. a code execution / shell environment) — upload it to any URL-reachable location first and pass that link instead of the raw bytes; the server just downloads it, which is fast and costs you almost no extra tokens. Use `content_base64` only as a last resort, when there is no URL and you have no way to produce one yourself (e.g. a small file the user attached directly in a chat-only client with no upload capability of its own) — inlining bytes means writing out the entire file as text, which is slow and burns far more tokens than a URL for anything beyond a tiny file. Before falling back to it, tell the user that creating the task will take noticeably longer and use more tokens because of it. Raw base64 only, never a `data:...;base64,` prefix. This server runs remotely and cannot read the caller's disk, so never pass local paths. For a large binary with no URL and no way to upload it yourself, don't inline it — tell the user to add it to the task repo manually instead. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. A non-empty list always gets a repo, even if every entry ends up in blocked_files (unreadable or filtered) — so the 'add it manually' fallback always has a real repo_url to point to. The GitHub username used to invite the client into the task repo comes from their Stoory account, not from you — you never see or pass it. If create_task fails because it's missing or invalid, tell the user to check/set their GitHub username in their Stoory account settings, then retry create_task."
1 tool update
- Changed
create_task1 field changed- changed
Input schema / properties / context_files / descriptionPrevious value: -"The minimal set of files the specialist needs. This server runs remotely and cannot read the caller's disk, so do NOT pass local paths. Each entry is { name, url?, content_base64? } and must carry exactly one source: `url` (the server downloads it — prefer this when the user gave a link, e.g. Google Drive / Dropbox / S3 / raw GitHub) or `content_base64` (inline bytes, for small local or chat-uploaded files; raw base64 only, no `data:...;base64,` prefix). For a large binary with no URL (e.g. an image), do not inline it — tell the user to add it to the task repo manually. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. With a non-empty list the user must have github_username set — if create_task reports it missing, ask the user for their GitHub login and try again."New value: +"The minimal set of files the specialist needs. This server runs remotely and cannot read the caller's disk, so do NOT pass local paths. Each entry is { name, url?, content_base64? } and must carry exactly one source: `url` (the server downloads it — prefer this when the user gave a link, e.g. Google Drive / Dropbox / S3 / raw GitHub) or `content_base64` (inline bytes, for small local or chat-uploaded files; raw base64 only, no `data:...;base64,` prefix). For a large binary with no URL (e.g. an image), do not inline it — tell the user to add it to the task repo manually. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. A non-empty list always gets a repo, even if every entry ends up in blocked_files (unreadable or filtered) — so the 'add it manually' fallback always has a real repo_url to point to. The user must have github_username set — if create_task reports it missing, ask the user for their GitHub login and try again."
1 tool update
- Changed
create_task1 field changed- changed
Input schema / properties / context_files / descriptionPrevious value: -"The minimal set of files the specialist needs. This server runs remotely and cannot read the caller's disk, so do NOT pass local paths. Each entry is { name, url?, content_base64? } and must carry exactly one source: `url` (the server downloads it — prefer this when the user gave a link, e.g. Google Drive / Dropbox / S3 / raw GitHub) or `content_base64` (inline bytes, for small local or chat-uploaded files). For a large binary with no URL (e.g. an image), do not inline it — tell the user to add it to the task repo manually. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. With a non-empty list the user must have github_username set — if create_task reports it missing, ask the user for their GitHub login and try again."New value: +"The minimal set of files the specialist needs. This server runs remotely and cannot read the caller's disk, so do NOT pass local paths. Each entry is { name, url?, content_base64? } and must carry exactly one source: `url` (the server downloads it — prefer this when the user gave a link, e.g. Google Drive / Dropbox / S3 / raw GitHub) or `content_base64` (inline bytes, for small local or chat-uploaded files; raw base64 only, no `data:...;base64,` prefix). For a large binary with no URL (e.g. an image), do not inline it — tell the user to add it to the task repo manually. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. With a non-empty list the user must have github_username set — if create_task reports it missing, ask the user for their GitHub login and try again."
2 tool updates
- Changed
create_task10 fields changed- changed
Input schema / properties / context_files / descriptionPrevious value: -"Minimalny zestaw plików potrzebny specjaliście — tylko ścieżki lokalne, NIE wklejaj treści plików. Serwer sam czyta plik z dysku i wrzuca go do prywatnego repo GitHub utworzonego dla tego taska — treść nigdy nie trafia do kontekstu modelu. Nigdy całe repo, max 1 plik = ~900KB. Przy niepustej liście user musi mieć ustawiony github_username — jeśli create_task to zgłosi, dopytaj usera o jego login GitHub i spróbuj ponownie."New value: +"The minimal set of files the specialist needs. This server runs remotely and cannot read the caller's disk, so do NOT pass local paths. Each entry is { name, url?, content_base64? } and must carry exactly one source: `url` (the server downloads it — prefer this when the user gave a link, e.g. Google Drive / Dropbox / S3 / raw GitHub) or `content_base64` (inline bytes, for small local or chat-uploaded files). For a large binary with no URL (e.g. an image), do not inline it — tell the user to add it to the task repo manually. The server scans every file for secrets and pushes the rest to a private GitHub repo created for this task; contents never enter the model context. Never the whole repo, max 1 file = ~900KB. With a non-empty list the user must have github_username set — if create_task reports it missing, ask the user for their GitHub login and try again." - added
Input schema / properties / context_files / items / properties / content_base64Added value: +{ + "type": "string" +} - added
Input schema / properties / context_files / items / properties / nameAdded value: +{ + "type": "string" +} - removed
Input schema / properties / context_files / items / properties / pathRemoved value: -{ - "type": "string" -} - added
Input schema / properties / context_files / items / properties / urlAdded value: +{ + "format": "uri", + "type": "string" +} - changed
Input schema / properties / context_files / items / requiredPrevious value: -[ - "path" -]New value: +[ + "name" +] - changed
Input schema / properties / language / descriptionPrevious value: -"Język taska — musi odpowiadać językowi, w jakim user sformułował title/description (nie ma automatycznego wykrywania, ustaw zgodnie z danymi usera)."New value: +"The task's language — must match the language the user phrased title/description in (there is no auto-detection, set it according to the user's input)." - changed
Input schema / properties / specialist_ids / descriptionPrevious value: -"Id jednego lub kilku specjalistów do zaproszenia."New value: +"Id of one or more specialists to invite." - changed
Input schema / properties / timeline / descriptionPrevious value: -"Jak pilny jest projekt z perspektywy klienta — pytaj usera wprost, nie zgaduj."New value: +"How urgent the project is from the client's perspective — ask the user directly, do not guess." - changed
Input schema / properties / user_confirmed / descriptionPrevious value: -"Musi być true — ustaw wyłącznie po jawnym potwierdzeniu przez usera w rozmowie"New value: +"Must be true — set it only after the user's explicit confirmation in the conversation."
- Changed
search_specialists5 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Tylko gdy user jawnie prosi o kraj specjalisty (np. 'grafik z Polski'). Pełna angielska nazwa kraju, np. \"Poland\", \"Germany\" — nie kod ISO. Ignorowane, jeśli podano też geo_location. Pomiń pole, gdy user nie wspomniał o kraju."New value: +"Only when the user explicitly asks for the specialist's country (e.g. 'a designer from Poland'). Full English country name, e.g. \"Poland\", \"Germany\" — not an ISO code. Ignored if geo_location is also given. Omit the field when the user did not mention a country." - changed
Input schema / properties / geo_location / descriptionPrevious value: -"Tylko gdy user podaje konkretne miasto/lokalizację i chce szukać w okolicy (np. 'w okolicy Warszawy', 'designer w Warszawie'). Obiekt { lat, lon, radius_meters } — ustal lat/lon wskazanego miasta samodzielnie. Domyślny radius_meters to 50000 (50km); przy zbyt małej liczbie wyników zwiększaj do 100000, potem 200000 zamiast poszerzać query. Ma priorytet nad `country`, jeśli oba podane. Pomiń pole, gdy user nie wspomniał o lokalizacji."New value: +"Only when the user gives a specific city/location and wants to search nearby (e.g. 'near Warsaw', 'a designer in Warsaw'). An object { lat, lon, radius_meters } — determine the lat/lon of the named city yourself. Default radius_meters is 50000 (50km); when there are too few results, raise it to 100000, then 200000 instead of broadening the query. Takes priority over `country` if both are given. Omit the field when the user did not mention a location." - changed
Input schema / properties / languages / descriptionPrevious value: -"Tylko gdy user jawnie prosi o konkretny język specjalisty (np. 'polskojęzyczny grafik'). Dozwolone wartości: English, Polish, German, French, Spanish, Italian — inna wartość zostanie odrzucona przez API. Pomiń pole (lub []), gdy user nie wspomniał o języku."New value: +"Only when the user explicitly asks for a specific specialist language (e.g. 'a Polish-speaking designer'). Allowed values: English, Polish, German, French, Spanish, Italian — any other value is rejected by the API. Omit the field (or []) when the user did not mention a language." - changed
Input schema / properties / limit / descriptionPrevious value: -"Domyślnie 10, zwiększ do 20 przy słabych wynikach lub gdy user prosi o więcej opcji (max 20)."New value: +"Default 10, raise to 20 for weak results or when the user asks for more options (max 20)." - changed
Input schema / properties / query / descriptionPrevious value: -"Rola i umiejętności specjalisty, MAKS. 12 słów, naturalny język — nie pełne zdanie opisujące problem usera. Po angielsku, jeśli to możliwe (szybsza odpowiedź i lepsze trafienia niż w innych językach). Dobrze: 'Senior Stripe developer', 'Professional logo designer', 'Experienced UX designer for mobile apps'. Źle: 'I need someone who can help me with branding and visual identity design' (pełne zdanie zamiast roli), 'Full-stack developer with microservices architecture experience' (za dużo naraz sklejonej specyfiki). Gdy wynik słaby (<3 trafień lub same 'Alternative fit'), ponawiaj ze stopniowo prostszym/szerszym query zamiast dopytywać usera, np. 'Senior mobile app developer for fintech startup' → 'Mobile app developer' → 'App developer' → 'Mobile development'; albo 'GDPR compliance lawyer for healthcare startup' → 'GDPR lawyer' → 'Data protection lawyer' → 'Lawyer'."New value: +"The specialist's role and skills, MAX 12 words, natural language — not a full sentence describing the user's problem. In English if possible (faster response and better hits than other languages). Good: 'Senior Stripe developer', 'Professional logo designer', 'Experienced UX designer for mobile apps'. Bad: 'I need someone who can help me with branding and visual identity design' (full sentence instead of a role), 'Full-stack developer with microservices architecture experience' (too much glued-together specificity at once). When results are weak (<3 hits or only 'Alternative fit'), retry with a progressively simpler/broader query instead of asking the user, e.g. 'Senior mobile app developer for fintech startup' → 'Mobile app developer' → 'App developer' → 'Mobile development'; or 'GDPR compliance lawyer for healthcare startup' → 'GDPR lawyer' → 'Data protection lawyer' → 'Lawyer'."
6 tool updates
- First observed
cancel_task - First observed
create_task - First observed
get_task_repo_files - First observed
get_task_result - First observed
get_task_status - First observed
search_specialists
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Delegate tasks to vetted human experts - research, writing, analysis, and data work.
Let your AI agent hire a human for tasks it can't do — first post free.
Hire specialists by the hour — search, schedule, and pay via MCP protocol.
Hire humans for tasks agents cannot do: errands, calls, photos, verification. Escrowed, verified.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceLets AI agents natively discover and hire human experts for tasks they can't do themselves, such as research, verification, and expert calls.-
- AlicenseNot gradedqualityCmaintenanceDelegates real-world digital tasks to vetted humans directly from AI chat. Provides tools to get quotes, post tasks, and check status with escrow protection.25MIT
- AlicenseBqualityAmaintenanceHire specialists by the hour — search, schedule, and pay via MCP protocol.351MIT

humanforaiofficial
AlicenseAqualityAmaintenanceEnables AI agents to hire real human operators for tasks requiring physical presence, human perception, or judgment, such as verification, testing, data collection, and physical-world tasks.41041MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
The tools are mostly distinct: search_specialists, create_task, cancel_task, and get_task_repo_files each have clear, separate roles. However, get_task_result and get_task_status overlap somewhat since both report task status, though get_task_result additionally provides the repo link.
Tool names follow a consistent verb_noun pattern: create_task, cancel_task, get_task_status, get_task_result, get_task_repo_files, and search_specialists. The one non-get verb, search_specialists, still fits the same predictable convention.
Six tools is well-scoped for the hiring-specialist workflow: searching, creating, canceling, monitoring, retrieving results, and inspecting repo files. Each tool serves a necessary step without unnecessary expansion.
The core lifecycle is covered: find a specialist, create a task, cancel if needed, check status, retrieve results, and inspect files. Minor gaps exist such as no explicit task-listing tool or ability to update task details, but these are not obvious dead ends for the stated purpose.