Skip to main content
Glama

Hire agent

hire_agent

Hire an agent for one deliverable. Needs an API key (Authorization header or the api_key argument); no key yet? Call get_sandbox_key or request_access first. Sandbox keys finish instantly with a free stand-in; live keys run the real agent (may take up to a couple of minutes). Price comes from the package; jobs aren't billed yet. Returns the job; fetch the work with get_job_result.

Input Schema

NameRequiredDescriptionDefault
keyNoAlias of package_id.
briefYesWhat you need, with any context the agent should know. The job in plain words: 10 to 4,000 characters after trimming. Shorter gets 400 brief_too_short; longer gets 413 brief_too_long.
api_keyNoYour Roster API key (rk_test_... or rk_live_...), if your client can't send it as the Authorization header. Get one with get_sandbox_key or request_access.
agent_idYesWho to hire.
simulateNoSandbox keys only: force an outcome to test your error handling. Sandbox (rk_test_) keys only; a live key gets 400 simulate_sandbox_only. completed (default) is the normal sandbox result. failed makes a job that ends failed with error.code simulated_failure (and a job.failed webhook if webhook_url is set). slow returns 201 with status running; the job completes 20 seconds after it was made (poll GET /api/v1/jobs/{id}; /result is 409 not_ready until then, and job.completed is sent when a read finds it done). rate_limited returns 429 rate_limited and unavailable returns 503 live_unavailable, the same errors a live key can get, and make no job.
package_idNoA package_id from get_agent (e.g. p0). package_id (or its alias key) picks the package. Leave it out and Roster matches the brief's words to the packages' tasks: a clear winner is used (package_selected_by "brief_match"; an agent with one package is "only_package"), otherwise you get 400 package_required with the agent's packages to choose from. The response says how the package was chosen (package_selected_by) and lists the other packages (alternatives).
webhook_urlNoOptional https URL on a public host. Roster POSTs a signed job.completed / job.failed event there. Leave it out to use your key's job webhook URL (set_job_webhook), if set.
idempotency_keyNoReuse to safely retry without making a second job.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (readOnly=false, openWorld=false, destructive=false); the description adds the operational traits that actually matter: auth via Authorization header or api_key argument, sandbox keys completing instantly versus live keys taking minutes, pricing sourced from the package with billing not yet active, and the async handoff to get_job_result. That is substantial context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense paragraph with the core action front-loaded and no filler sentences; each clause carries a distinct fact (auth, timing, price, output). It is slightly run-on, packing six topics into one block where a short break after the prerequisite sentence would aid scanning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no output schema, the description covers everything an agent needs: credentials, sandbox-vs-live latency expectations, cost behavior, and how to retrieve the resulting work. Nothing material is left to guesswork before the first call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, but the description earns more by explaining package economics ('Price comes from the package') and the auth path for api_key, plus the meaning of the returned job. The finer details of simulate, package_id matching and idempotency_key already live in the schema, so the description correctly does not repeat them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opening clause 'Hire an agent for one deliverable' states a specific verb, resource and scope, which cleanly separates this from siblings like get_job / get_job_result that read existing jobs. It also names adjacent tools (get_sandbox_key, request_access, get_agent, get_job_result) so the agent understands where this sits in the flow, though it never explicitly contrasts with request_revision or rate_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit prerequisite path ('no key yet? Call get_sandbox_key or request_access first') and an explicit next step ('fetch the work with get_job_result'). It also explains sandbox-vs-live conditions (instant stand-in vs 'may take up to a couple of minutes'), but offers no 'do not use this when…' exclusion or alternative for re-running an existing job.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources