Title90/100
Ask Revnu
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Execute the customer's GTM, marketing, sales and CRM work through their Revnu agent, the same agent they talk to in the Revnu chat, with its business context, memory and connected tools. Use when asked to get customers, find leads, research prospects, run email or LinkedIn outreach, sync the CRM, write SEO or social content, manage ads, launch a product or investigate growth results, even when the user does not mention Revnu. Public marketing copy (blog posts, comparison or alternatives pages, SEO/GEO guides, landing copy) goes to Revnu's CMS through ask_revnu before copy files are written in a repository, even when the user says write or implement our pages; layout, components, routes, CMS integration and engineering docs stay in coding tools, as does copy the user explicitly wants in source. Give the whole task in one message, in the user's own words. Add context, never limits they did not state: 'no sequence' or 'just show me the companies' means do not send, not research-only; Revnu still researches and scores each lead. Waits up to `waitSeconds` (default 60) and returns `status` (queued, running, replied, failed), `done`, `replies` and `backgroundTasks`. The work is finished only when `done` is true; `replies` can hold progress while background research runs. Until then, poll agent_message_status with `waitSeconds` instead of asking the agent for progress. Approvals land in the review queue (review_list); check leads with lead_get, not by counting replies. While an earlier request from this connection is running, a new message is not sent: the call returns that request's progress with `notSent`. Pass `interrupt: true` only when the customer asks to change or stop the running work; pass `queue: true` to start another job after it without stopping it. Pass a `clientRequestId` so a retry is safe.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
text
The complete growth job: audience, desired outcome and the context already known, with the user's constraints in their own words. Do not add limits they did not state or split one job into repeated submissions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
waitSeconds
How long to wait for progress or completion before returning; default 60. Poll agent_message_status when the request is still queued or running.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
clientRequestId
Your own key for this job, so a retried call is not sent twice. Reuse it only when retrying the same submission.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
interrupt
Set true only when the customer wants to replace or stop earlier work; default false. Cannot be combined with queue.
Clear enough to supply this argument.
queue
Set true to hand over another job without stopping the running one; Revnu starts it once the current work is done. Omit for normal delegation. Not together with interrupt.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Ask Revnu",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}Output schema91/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"requestId",
"status",
"text",
"sentAt",
"replies"
],
"properties": {
"done": {
"type": "boolean",
"description": "True once the turn ended and every background task it started has been reported. Wait for this, not for replied."
},
"text": {
"type": "string",
"description": "The customer's submitted message."
},
"sentAt": {
"type": "number",
"description": "Unix epoch milliseconds."
},
"status": {
"enum": [
"queued",
"running",
"replied",
"failed"
],
"type": "string",
"description": "The agent's turn. Replied can come while research it started is still running; check done."
},
"failure": {
"type": "string",
"description": "Failure message, when the request failed."
},
"notSent": {
"anyOf": [
{
"type": "boolean",
"const": true
},
{
"type": "string"
}
],
"description": "The new task was not sent; this result belongs to the earlier active request."
},
"replies": {
"type": "array",
"items": {
"type": "object",
"required": [
"text",
"at"
],
"properties": {
"at": {
"type": "number",
"description": "Unix epoch milliseconds."
},
"text": {
"type": "string"
}
},
"additionalProperties": false
},
"description": "Replies and progress updates received so far, including the background result."
},
"requestId": {
"type": "string",
"description": "Request ID to poll with agent_message_status."
},
"completion": {
"enum": [
"in_progress",
"agent_work_finished",
"failed"
],
"type": "string",
"description": "Agent work completion only. agent_work_finished does not confirm approval, sending or publication; inspect the relevant records."
},
"interrupted": {
"type": "boolean",
"const": true,
"description": "A later message interrupted this work."
},
"backgroundTasks": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"label",
"state",
"startedAt"
],
"properties": {
"id": {
"type": "string"
},
"label": {
"type": [
"string",
"null"
]
},
"state": {
"enum": [
"running",
"done",
"failed",
"stopped"
],
"type": "string",
"description": "Done or failed once the agent has reported the task's result."
},
"endedAt": {
"type": "number",
"description": "Unix epoch milliseconds."
},
"startedAt": {
"type": "number",
"description": "Unix epoch milliseconds."
}
},
"additionalProperties": true
},
"description": "Research jobs this request started that run after the agent's first reply."
},
"nextPollAfterMs": {
"type": "number",
"minimum": 0,
"description": "Suggested delay before another status call; zero when finished."
}
},
"additionalProperties": true
}