await_jobs
Block (server-side) until the scope has no pending/running jobs, or the timeout passes — use this instead of polling get_workflow_status yourself. Returns {done, jobs}. If done=false the work is still running: just call await_jobs again (a 3-5 minute storyboard takes a few consecutive calls). Kee...
This record as markdown: /tools/com-framesail-framesail/await-jobs.md
What await_jobs does on Framesail
AI agents call await_jobs to retrieve information from Framesail without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.
| Parameter | Type | Required | Description |
|---|---|---|---|
style_id | string | — | Style ID whose analysis/template jobs to wait for; pass exactly one of project_id or style_id |
project_id | string | — | Project ID whose jobs to wait for; pass exactly one of project_id or style_id |
timeout_seconds | integer | — | Max seconds to block server-side before returning done=false; keep <= 50 so the client doesn't time out the tool call |
Parameters from the server's own tool schema.
Why await_jobs is rated Low
This tool waits for jobs to complete and returns status information ({done, jobs}). It is purely observational/polling in nature — it reads job state without creating, modifying, executing, or deleting anything. The 'blocking' behavior is server-side waiting, not triggering any new operations. Severity is low as misuse would at worst cause unnecessary waiting.
From the tool's definition Block (server-side) until the scope has no pending/running jobs, or the timeout passes — Returns {done, jobs}
Attacks that exploit this kind of access
The rule that runs await_jobs safely
PolicyLayer is an MCP gateway: it sits between your AI agents and Framesail, and checks every tool call against a rule you set before the call runs. Nothing changes on the server itself. For await_jobs, this is the rule to start with:
await_jobs is read-only, so it stays allowed. Everything else on the server is denied unless you say otherwise.
The button opens the PolicyLayer dashboard: create your workspace, connect Framesail, apply this rule, and every await_jobs call is checked against it from then on.
Questions about await_jobs
Block (server-side) until the scope has no pending/running jobs, or the timeout passes — use this instead of polling get_workflow_status yourself. Returns {done, jobs}. If done=false the work is still running: just call await_jobs again (a 3-5 minute storyboard takes a few consecutive calls). Keep timeout_seconds <= 50 so the client doesn't time out the tool call. It is categorised as a Read tool in the Framesail MCP Server, which means it retrieves data without modifying state.
await_jobs accepts 3 parameters: style_id, project_id, timeout_seconds. The full parameter table on this page comes from the server's own tool schema.
Register the Framesail MCP server in PolicyLayer and add a rule for await_jobs: allow, deny, rate-limit, or require approval. Point your MCP client at the PolicyLayer proxy URL and the rule is enforced on every call, before it reaches Framesail. Nothing to install.
await_jobs is a Read tool with low risk. Read-only tools are generally safe to allow by default.
Yes. Add a rate_limit block to the await_jobs rule in your PolicyLayer policy. For example, setting max: 10 and window: 60 limits the tool to 10 calls per minute. Rate limits are tracked per agent session and reset automatically.
Set action: deny in the PolicyLayer policy for await_jobs. The AI agent will receive a policy violation error and cannot call the tool. You can also include a reason field to explain why the tool is blocked.
await_jobs is provided by the Framesail MCP server (https://api.framesail.com/mcp). PolicyLayer sits as a proxy in front of this server to enforce policies before tool calls reach the server.
More on Framesail, and thousands of servers like it.
This server
Across the catalogue