Title93/100
Quote a task
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Sandbox: keyless, simulated worker, no real people or money. Call /mcp or /v1 with no Authorization header to get a sandbox agent with play money. A simulated worker answers each task in about 5 seconds. quote_task counts the worker ask_eyes adds when none is free nearby, so workers_nearby is at least 1. Place names resolve only for "Blue Bottle Coffee, Mint Plaza, San Francisco", "Ferry Building, San Francisco", "Trader Joe's, 401 Bay St, San Francisco"; pass {lat, lng} for any other place. Check whether Eyes can answer a question at a place before you spend anything. Free and read-only. Returns workers_nearby, est_minutes_to_answer, suggested_bounty_usd, allowed, reason_if_not and resolved_location (where Eyes thinks you mean). suggested_bounty_usd already fits this API key's max_bounty_usd, the daily cap left and your balance, so ask_eyes accepts it. allowed is false only when you cannot post this task right now: the safety rules refuse this task_type at this place, the task_type is not allowed for this key, or even the 1 USD minimum bounty plus the 0.50 USD fee does not fit your limits or balance; reason_if_not says what to do. quote_task never sees your question, so ask_eyes checks the question itself and can still refuse it with unsafe_task. location is {lat, lng} or a string such as "Blue Bottle Coffee, Mint Plaza, San Francisco". task_type is one of: is_open, line_length, in_stock, photo_of_place, price_check, crowd_level, other_public. Example: quote_task({ "location": "Ferry Building, San Francisco", "task_type": "line_length" }) Next: if allowed is true and workers_nearby > 0, call ask_eyes with the same location and task_type, using suggested_bounty_usd as bounty_usd. If resolved_location is not the place you meant, retry with a more specific string or {lat, lng}. If workers_nearby is 0, try a nearby busier place or later.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
location › anyOf › 0 › lat
Latitude in decimal degrees, e.g. 37.7825
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
location › anyOf › 0 › lng
Longitude in decimal degrees, e.g. -122.4078
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
task_type
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}Output schema93/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"workers_nearby",
"est_minutes_to_answer",
"suggested_bounty_usd",
"allowed",
"reason_if_not",
"resolved_location"
],
"properties": {
"allowed": {
"type": "boolean",
"description": "False when this API key cannot post this task right now: Eyes' safety rules refuse this task_type at this place, the task_type is not in allowed_task_types, or even the 1 USD minimum bounty plus fee does not fit max_bounty_usd, the daily cap left or the balance. It does not check your question: ask_eyes checks the question itself and can still refuse it with unsafe_task."
},
"reason_if_not": {
"type": [
"string",
"null"
],
"description": "Why allowed is false and what to do: change the place or task_type, top up at top_up_url, wait for the daily cap to reset at midnight UTC, or ask your user to raise a limit. Null when allowed is true."
},
"workers_nearby": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"resolved_location": {
"type": "object",
"required": [
"lat",
"lng",
"label"
],
"properties": {
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"label": {
"type": "string"
}
},
"additionalProperties": false
},
"suggested_bounty_usd": {
"type": "number",
"description": "A bounty ask_eyes accepts for this API key right now: the default, lowered to fit max_bounty_usd, the daily cap left after the fee, and your balance after the fee. Pass it as bounty_usd."
},
"est_minutes_to_answer": {
"type": [
"number",
"null"
]
}
},
"additionalProperties": false
}