AI SENSE Free Public Tools
Server Details
79 public tools: agent workflows, audio data transfer, semantic search, queues and webhooks.
- Status
- Healthy
- Uptime
- 99.4% over 83 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- aisenseapi/aisense-free-public-rest-apis
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 79 tools
The 79 tools cluster into clearly separable families (queues, leases, handoffs, runs, inboxes, DNS, webhooks, storage, encoding, time, hashing), and the long descriptions actively cross-reference siblings, e.g. generate_uuid vs generate_random and time_formats vs get_current_time. Residual overlaps remain: four time tools (get_current_time, time_formats, convert_timestamp, list_timezones), two storage pairs (store_file/read_stored_file vs store_temporary_data/read_temporary_data), and finicky read-vs-query variants (read_agent_queue vs read_agent_queue_job, read_semantic_search vs query_semantic_search) that an agent could still mispick, but the prose mostly resolves them.
The overwhelming majority follow verb_noun snake_case (create_agent_queue, claim_agent_queue_job, release_lease, delete_dns_name, verify_hash), which is very predictable. A handful of outliers break pattern: bare noun or verb forms such as crypto_wallet, decide, jwt_token, service_health and time_formats, plus a base-noun flip between schedule_webhook and read_webhook_schedule/cancel_webhook_schedule.
79 tools is far past the practical ceiling for a single tool surface, even for a deliberately broad 'free public tools' grab bag; an agent must scan a very large list to find the relevant families. The families themselves are coherent and each tool does earn its place inside its own service, but the aggregate surface is heavy and would work better split into per-domain servers.
Most families have a full lifecycle: DNS covers create/read/update/delete, webhook schedules cover schedule/read/cancel, queues cover create/enqueue/claim/ack/release/renew/read, and secrets cover create/reveal/receipt/burn. Gaps are minor and largely mitigated by the fixed 24-hour TTLs: no delete/disarm for heartbeats, no cancel for handoffs, human approvals, webhook captures or inboxes, no delete for stored files or semantic search collections, and no list operations for runs or queues.
Available Tools
79 toolsack_agent_queue_jobAcknowledge agent queue jobADestructiveIdempotentInspect
Mark a claimed job completed using the worker token and its current receipt. Repeating acknowledgement with the same winning receipt succeeds. A different, stale or expired claim receipt is a conflict. Completion does not reclaim the lifetime job allowance.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id of the claimed job. | |
| receipt | Yes | The receipt from the current claim. A newer claim or a release makes it stale. | |
| queue_id | Yes | The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps. | |
| worker_token | Yes | The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| job | Yes | |
| queue_id | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=true, but the description earns credit by making idempotency concrete: repeating with the same winning receipt succeeds, while a stale/expired receipt is a conflict. "Completion does not reclaim the lifetime job allowance" is a non-obvious side effect found nowhere in the structured fields. It leaves the destructiveHint unexplained — it never says what, if anything, is destroyed or consumed by completing the job.
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?
Four short sentences, front-loaded with the primary action, then the idempotency rule, then the failure case, then the side effect. No filler and no restatement of the title.
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?
An output schema exists, so return values need not be described, and the description covers the main behavioral risks for a mutation: idempotent retry, conflict on stale receipt, and allowance accounting. What remains is the meaning of the destructive annotation and whether completion attests any result payload — minor gaps for a well-annotated tool.
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%, so all four parameters are already documented, including the receipt's staleness rule. The description only reinforces the receipt/token roles at a high level and adds no format, source, or edge-case detail the schema lacks — baseline 3 is appropriate.
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?
"Mark a claimed job completed" gives a specific verb and resource, and the mention of worker token plus current receipt pins down exactly which operation in the claim/renew/release/acknowledge family this is. It stops short of naming the closest siblings (release_agent_queue_job, renew_agent_queue_job) outright, so disambiguation is inferred from terminology rather than stated.
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 context is implied by "a claimed job" and "the current claim" — the agent can infer it must call claim_agent_queue_job first and hold a valid receipt. There is no explicit when-not guidance and no named alternative for the case where the agent wants to give the job back or extend the claim.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
acquire_leaseAcquire leaseAInspect
Claim one unit of work so concurrent agents do not perform it twice. The first writer receives an owner token and a monotonic fencing token. A later caller receives held, conflict or a reusable completed result. Contention is a normal result. Use a private namespace, or supply a high-entropy unscoped key. No authentication is required.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Work identity. With a namespace use 1 to 128 URL-safe ASCII characters, starting with a letter or digit. Without one use a caller-generated secret of 32 to 200 ASCII characters from A-Z, a-z, 0-9, dot, underscore, colon, tilde or hyphen, with at least eight distinct characters. | |
| namespace | No | Optional 256-bit namespace from create_lease_namespace. Keep it secret. | |
| fingerprint | No | Optional stable description or digest that binds this key to the same work. | |
| ttl_seconds | No | Ownership period, capped by the absolute 24 hour lifetime. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| owner_token | No | |
| ttl_seconds | No | |
| completed_at | No | |
| fencing_token | No | |
| lease_expires_at | No | |
| absolute_expires_at | No | |
| retry_after_seconds | No | |
| completed_at_timestamp | No | |
| lease_expires_at_timestamp | No | |
| absolute_expires_at_timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are sparse (no idempotency flags), and the description compensates by disclosing the success result (owner + monotonic fencing token), the possible outcomes for later callers, and the fact that contention is normal. No contradiction with readOnlyHint=false or destructiveHint=false.
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?
Four short sentences, front-loaded with the core purpose, followed by outcome/contention guidance and namespace advice. Every sentence earns its place and there is no filler.
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?
Description covers purpose, outcomes, contention expectations, key safety, and authentication. Return-value details are already handled by the output schema, so nothing needed for a correct invocation is missing.
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 coverage is 100%, so the baseline applies; the description's namespace/key advice mainly restates the schema's guidance rather than adding new per-parameter semantics. No additional value is added for fingerprint or ttl_seconds 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?
States a concrete verb ('Claim') and resource ('one unit of work'), explains the concurrency goal, and is instantly distinguishable from sibling lease tools (release_lease, renew_lease) by describing acquisition behavior rather than lifecycle operations.
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?
Provides clear usage context: use when work must not be executed twice concurrently, and advises key/namespace strategy ('Use a private namespace, or supply a high-entropy unscoped key'). It does not explicitly name alternatives or exclusions, but the context is strong enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_semantic_search_notesAdd notes to a semantic search collectionAInspect
Add 1 to 32 notes with the write token. Each note is an object with text, 1 to 2000 characters, and an optional key of up to 64 letters, digits, dots, underscores, colons or hyphens. Notes are stored until the collection expires and count toward its 500-note lifetime limit, deleted notes included. Never send secrets or sensitive personal data. Adding and searching share a usage limit of 60 per minute and 1000 per UTC day per IP. Refusals may carry Retry-After. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | Notes such as {"text": "Refund order DEMO-57", "key": "job:57"}. | |
| write_token | Yes | The write_token from create_semantic_search, shown once. It adds and deletes notes. | |
| collection_id | Yes | The collection_id from create_semantic_search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare that this is a non-read-only, non-destructive, non-idempotent write. The description goes well beyond them: notes persist until collection expiry, consumption counts against a 500-note lifetime limit even after deletion, a shared 60/min and 1000/day per-IP rate limit applies, and refusals may carry Retry-After. It also adds a data-handling warning about secrets and personal data.
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 batch size and token requirement are front-loaded, and each following sentence carries a concrete constraint. The closing 'No API key, no account and no sign up' is onboarding framing rather than invocation guidance, which is the only real 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?
For a mutation tool with no output schema, the description covers limits, persistence, and failure signalling well. It does not say what a successful call returns (assigned note identifiers, accepted versus rejected keys, remaining quota), which matters for a batch call where partial acceptance is possible.
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 coverage is 100%, so the baseline would be 3, but the schema types the notes array only as generic objects while the description supplies the real item contract: a text field of 1-2000 characters and an optional key limited to 64 characters from a stated charset. That is genuine semantics the structured schema does not carry.
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 resource ('Add 1 to 32 notes') and states the scope of the write. An agent can tell this is the write path for a semantic search collection as opposed to query_semantic_search or delete_semantic_search_note, though it never names those siblings.
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?
Practical constraints (1-32 notes, 2000-character text, 500-note lifetime cap, 60/min and 1000/day limits) give a strong sense of when this tool applies, but there is no explicit routing guidance such as when to use this versus create_semantic_search or delete_semantic_search_note, and no statement of prerequisites beyond the token.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
advance_agent_handoffAdvance an agent handoffAInspect
Move a handoff to the state named in to. from names the state the handoff is expected to be in now: the move is committed only from exactly that state over an allowed transition, otherwise the answer is a 409 that carries the real state. Repeat a move with the same nonce after a lost answer and the committed transition is returned with repeated true instead of a conflict. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | The state to move to. | |
| from | Yes | The state the handoff is expected to be in now. | |
| note | No | An optional note recorded with this move in the history, up to 500 characters. | |
| nonce | No | Your own key for this move, so a repeat after a lost answer is recognized. | |
| token | Yes | The owner_token or the receiver_token returned once at creation. Both read and advance; the history records which one acted. | |
| handoff_id | Yes | The handoff_id returned at creation; not a credential. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses the failure mode (a 409 that carries the real current state), the nonce-based replay behavior returning `repeated: true`, and that no credentials are required. `idempotentHint: false` remains consistent because a same-nonce replay returns a distinguishable response rather than a plain repeat. It omits the shape of a successful response beyond the transition name.
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?
Four tight sentences with the core action front-loaded and preconditions before error behavior. The closing line about no API key or sign-up is slightly promotional, though it does convey the auth requirement.
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 mutation tool with full annotation coverage, full schema coverage, and no output schema, this covers preconditions, conflicts, and retry semantics well. The remaining gap is that the set of allowed transitions and the success payload are never described, so an agent learns the state machine only by hitting errors.
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 coverage is 100%, so the baseline is 3, and the description earns above that by explaining the coupling between `from`, the allowed-transition check, and the 409 payload, plus how `nonce` interacts with replays. That adds real meaning not present in the one-line schema descriptions.
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 resource ("Move a handoff to the state named in to") and frames the operation as an optimistic-concurrency state transition, which is clearly distinct from create_agent_handoff or read_agent_handoff by nature. It never names a sibling tool explicitly, so it falls short of the top mark for differentiation.
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 defines the precondition for a valid call (the handoff must be exactly in `from` and the transition must be allowed) and describes the retry path, so usage is implied well enough to attempt a call. It never states when to prefer this over read_agent_handoff or how to discover the set of allowed transitions, which is the main practical gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
burn_one_time_secretRevoke one-time secret ciphertextADestructiveIdempotentInspect
Permanently remove any pending ciphertext using the receipt token. Repeating a burn is safe. Burning cannot recover or revoke ciphertext already revealed. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| secret_id | Yes | The secret_id returned at creation; not a credential. | |
| receipt_token | Yes | The receipt_token returned once at creation. Reads metadata or burns; cannot reveal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and idempotentHint=true, so 'Repeating a burn is safe' largely restates them. What the description adds beyond the structured fields is the authentication profile ('No API key, no account') and the precise boundary of what is destroyed (pending ciphertext only; already-revealed secrets are unaffected). That last point is the key behavioral fact an agent needs before calling a destructive tool.
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 destructive action and its consequence are front-loaded in the first sentence, and the remaining sentences each add a distinct fact (idempotency, scope limit, no-auth). The trailing marketing-style phrasing 'no account and no sign up' is slightly redundant with 'No API key' but still conveys auth requirements.
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 two-parameter destructive tool with full annotation and schema coverage and no output schema, the description covers the essential facts: what is removed, that repeats are harmless, that revealed secrets are out of reach, and that no credentials are needed. It does not describe the response or what happens if the token is invalid, but annotations and schema carry most of that weight.
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 coverage is 100%, and both parameters carry regex patterns and semantic notes ('not a credential', 'cannot reveal'). The description only echoes that the receipt token is the means of burning, adding no format or failure-mode detail beyond the schema, so baseline 3 applies.
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: 'Permanently remove any pending ciphertext'. It also scopes the operation to pending ciphertext, which implicitly separates it from reveal_one_time_secret. It never names a sibling tool explicitly, so it stops short of a 5.
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?
'Burning cannot recover or revoke ciphertext already revealed' tells the agent the operation only applies to pending secrets, and 'Repeating a burn is safe' covers repeat calls. However, it never points to reveal_one_time_secret or read_one_time_secret_receipt as the alternative when the agent actually wants to read the secret, which is the most likely competing intent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_agent_runCancel an agent runADestructiveIdempotentInspect
End a run with its control token. Nothing further starts, and a cancel after the end answers 409 with the real status. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The control_token returned once at creation. | |
| run_id | Yes | The run_id returned at creation; not a credential. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true and readOnly=false, so the safety profile is covered. The description adds real value on top: it discloses the terminal effect ('Nothing further starts') and the exact failure mode for a repeat call (409 returning the real status), which an agent cannot infer from the annotations alone.
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?
Three short sentences, front-loaded with the action and its credential, then the terminal effect, then the error semantics. The closing 'No API key, no account and no sign up' is more onboarding copy than tool guidance but is at least short and placed last.
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?
With no output schema, the description carries the return burden and does address the failure path (409 with the real status). It is silent on the success response body, but for a two-parameter terminal action with full schema coverage that is a minor gap rather than a blocking one.
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 both parameters are documented as the control_token and run_id returned at creation. The description only echoes the token requirement ('with its control token') and adds no format or sourcing detail beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource ('End a run') plus the required credential ('with its control token'), which separates it from read_agent_run, create_agent_run and complete_agent_run_step among the siblings. It stops short of naming the sibling it displaces, so it is clear but not maximally differentiated.
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 rather than stated: you call it to terminate a run, and the note that a cancel after the end answers 409 tells the agent it should not be used to poll status. No explicit when-not or named alternative (e.g. complete_agent_run_step for normal finishing) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_webhook_scheduleCancel a scheduled webhookADestructiveIdempotentInspect
Cancel a scheduled webhook that has not finished. A job that has already ended cannot be cancelled. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_id | Yes | The schedule_id from schedule_webhook. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description adds the useful precondition for the not-yet-finished state and an auth note, but never says what actually happens to the cancelled schedule or to a delivery already in flight.
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 first two sentences are tight and front-loaded with the operation and its precondition. The trailing 'No API key, no account and no sign up' is marketing filler that does not help an agent invoke the tool and dilutes an otherwise clean definition.
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 destructive operation with no output schema and rich annotations, the definition covers the essential precondition. A line describing the resulting state of the schedule (removed, marked cancelled, or delivery suppressed) would close the remaining gap.
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 sole parameter has 100% schema description coverage, including a UUID pattern and a pointer to schedule_webhook as its source, so the schema does the work. The description adds nothing about the parameter, which is the expected baseline when coverage is complete.
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?
States a specific verb and resource ('Cancel a scheduled webhook') plus a scope qualifier ('that has not finished'), so the agent knows exactly what operation is performed. It does not explicitly contrast with siblings such as read_webhook_schedule or schedule_webhook, so differentiation is left to the name.
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?
Gives both a use condition (schedule has not finished) and an explicit exclusion (an already-ended job cannot be cancelled), which is stronger than most definitions provide. It stops short of naming an alternative such as read_webhook_schedule to verify status before cancelling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_agent_queue_jobClaim agent queue jobAInspect
Claim the next pending job using the worker token. Returns job:null immediately when no work is available, otherwise a job containing a new secret receipt. Visibility defaults to 60 seconds and accepts 30-900 seconds. Redelivery is possible: make worker side effects idempotent. Jobs fail after 5 unsuccessful claims. No job is executed by the server.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps. | |
| worker_token | Yes | The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them. | |
| visibility_timeout | No | Claim visibility in seconds, capped by the fixed queue expiry. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| job | Yes | |
| queue_id | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses several non-obvious traits: an immediate null return when the queue is empty, a new secret receipt embedded in the returned job, at-least-once delivery requiring idempotent worker side effects, a five-failed-claim failure threshold, and the fact that the server never executes the job. These are exactly the behaviors an agent must know before polling in a loop.
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?
Five short sentences, front-loaded with the purpose, then the return shape, then the timeout rule, then delivery semantics and failure threshold. No filler and nothing that could be dropped without losing an operational fact.
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 claim/poll tool with an output schema present, the description covers the empty-result case, receipt issuance, visibility window, redelivery, and failure threshold — everything an agent needs to call it correctly and handle the response. No material gap remains.
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%, so the schema already documents all three parameters including patterns and min/max. The description's visibility-timeout sentence (default 60, range 30-900) restates what the schema declares rather than adding new meaning, so it sits at the baseline.
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?
States a specific verb and resource ("Claim the next pending job") plus the credential used ("worker token"), which cleanly separates it from siblings like read_agent_queue_job, ack_agent_queue_job, renew_agent_queue_job and release_agent_queue_job. An agent can identify the operation without opening the schema.
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 clear operational context for when to call it (poll for the next pending job) and what to do when the result is empty (job:null means no work). It does not explicitly name alternatives or exclusions, e.g. when to prefer read_agent_queue_job over claiming, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_agent_run_stepComplete a step of an agent runAIdempotentInspect
For external-worker version 1 only: hand in the result of a delegated step, with the worker_token and the receipt from claim_agent_queue_job. The run completes the job itself, so send no ack, and the next step begins in this request. Repeat the same request after a lost answer or while submission_status says verifying. A 409 carries a code saying what to do. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The worker_token returned once at creation. | |
| result | Yes | Any JSON value but null, at most 7 KiB as JSON. | |
| run_id | Yes | The run_id returned at creation; not a credential. | |
| receipt | Yes | The receipt of the current claim. | |
| step_id | Yes | The id of the delegated step, as written in the plan. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses that the call triggers the next step in the same request, explains the idempotent retry semantics (matching idempotentHint=true), describes the 409 response code, and states no API key or account is needed. These are the behaviors an agent needs and could not infer from the structured hints alone.
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?
It is dense and front-loads the version scope and purpose, with every sentence carrying operational content. It reads as one long packed paragraph rather than structured points, which slightly hurts scanability.
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 mutation tool with no output schema, the description covers prerequisites, side effects, retries, and error codes, which is most of what is needed. It leaves terms like submission_status and verifying unexplained and does not describe the success response shape.
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 coverage is 100%, so the baseline is 3, but the description adds provenance the schema lacks: token is the worker_token and receipt comes from claim_agent_queue_job. It does not add detail on run_id/step_id/result beyond the schema, keeping it at a 4.
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?
It states a specific verb (hand in the result) plus the exact resource (a delegated step of an agent run) and pins the scope (external-worker version 1 only). It also distinguishes itself from a sibling, telling the agent the run completes the job itself so no ack_agent_queue_job call is needed.
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 the precondition (use the receipt from claim_agent_queue_job), the exclusion (send no ack), the retry protocol (repeat the same request after a lost answer or while submission_status says verifying), and error handling (a 409 carries a code saying what to do). That covers when to use, when not to, and what to do on failure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_leaseComplete leaseAInspect
Finish owned work and save a reusable JSON result for later callers with the same identity and fingerprint. The result is limited to 32 KB and secret-shaped fields are redacted. Do not store secrets or personal data. The owner token is required. No authentication is required.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Work identity. With a namespace use 1 to 128 URL-safe ASCII characters, starting with a letter or digit. Without one use a caller-generated secret of 32 to 200 ASCII characters from A-Z, a-z, 0-9, dot, underscore, colon, tilde or hyphen, with at least eight distinct characters. | |
| result | Yes | Reusable JSON value. Maximum encoded size is 32 KB. Do not include secrets. | |
| namespace | No | Optional 256-bit namespace from create_lease_namespace. Keep it secret. | |
| owner_token | Yes | Secret owner token returned by acquire_lease. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| owner_token | No | |
| ttl_seconds | No | |
| completed_at | No | |
| fencing_token | No | |
| lease_expires_at | No | |
| absolute_expires_at | No | |
| retry_after_seconds | No | |
| completed_at_timestamp | No | |
| lease_expires_at_timestamp | No | |
| absolute_expires_at_timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond the annotations: the 32 KB size limit, redaction of secret-shaped fields, a warning not to store secrets or personal data, and that no authentication is required. These are useful constraints not present in the annotations. It does not disclose post-completion state changes (e.g., lease consumption), but the annotations and output schema partially cover that.
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 description is concise, with the primary purpose stated first, followed by constraints and security notes. It is not overly verbose, though it is broken into multiple short sentences, which slightly fragments the flow. Overall, it is well-structured and front-loaded with the core action.
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 (lease lifecycle, multiple parameters, output schema present) and minimal annotations, the description covers key operational constraints: size limit, redaction, storage guidance, and auth requirements. It lacks an explicit note on the lease's terminal state or error conditions, but the output schema and sibling context mitigate this. It is sufficiently complete for correct invocation.
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 input schema provides detailed descriptions for all four parameters (100% coverage), including format and constraints for key, owner_token, namespace, and result. The description adds no additional parameter-specific meaning; it only mentions the owner token requirement, which is already in the schema. Thus, the description does not enhance beyond schema coverage.
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 ('Finish owned work') and resource (owned work with a lease), and explains the outcome (save a reusable JSON result for later callers with the same identity and fingerprint). This clearly distinguishes it from sibling lease operations like acquire_lease or release_lease by focusing on completion and storage.
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 implies usage for completing a lease after work is done, but it does not explicitly contrast with alternatives such as release_lease (abandoning) or renew_lease (extending). While the sibling names suggest context, the description lacks explicit 'when to use' or 'when not to use' guidance, so an agent must infer the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_timestampConvert a timestamp or dateARead-onlyIdempotentInspect
Convert a Unix timestamp in seconds or milliseconds, or a date and time text, into a Unix timestamp, ISO 8601, RFC 2822 and UTC forms. offset sets the zone of the answer. The answer says what the input was read as. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | A Unix timestamp, or a date and time text such as 2026-09-30 14:00. | |
| offset | No | UTC offset as a sign and four digits, from -1200 to +1200, for example +0200 or -0530. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds two real behavioral facts: 'The answer says what the input was read as' (disambiguating seconds vs milliseconds interpretation) and that no auth/signup is needed. It does not state the default zone when offset is omitted, which is the main unresolved behavior.
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?
Front-loaded with the core transformation and output formats in the first sentence, then offset semantics and interpretation disclosure. The trailing 'No API key, no account and no sign up' is promotional filler that does not help the agent invoke the tool, costing some conciseness.
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 two-parameter, non-destructive utility with no output schema, the description supplies enough: accepted input types, output formats, and offset meaning. The only meaningful omission is the default offset behavior and any note on how ambiguous numeric values (e.g. 10-digit vs 13-digit) are resolved beyond the vague reassurance that the answer reports the interpretation.
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 coverage is 100%, so baseline is 3, but the description genuinely adds meaning: it tells the agent that value may be in seconds OR milliseconds (the schema only says 'A Unix timestamp') and that offset controls the zone of the returned answer rather than merely formatting. That is semantic value beyond the schema text.
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?
States a specific verb (Convert) and enumerates both the accepted input shapes (Unix seconds/milliseconds, date-time text) and the exact output forms (Unix timestamp, ISO 8601, RFC 2822, UTC). This clearly separates it from siblings like get_current_time, list_timezones and time_formats, which do not perform input-to-multi-format conversion.
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 by the input/output enumeration — an agent can infer this is the tool for normalizing a known time value into other representations. However, there is no explicit when-to-use guidance and no routing advice against get_current_time or time_formats, so the selection logic must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_agent_handoffCreate an agent handoffAInspect
Create one piece of work to pass to another agent as a small state machine that lives 24 hours. payload is the JSON the receiver works from, at most 16 KiB. The default states are offered, accepted, working, done, failed and returned, the last three final; states, final and transitions can declare another machine, which always moves forward through its states. Returns an owner_token and a receiver_token once: keep the owner token, give the receiver token to the other agent. notify_url receives one small signal per committed transition. Creation allows 100 per IP per UTC day; not idempotent. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | An optional note kept with the handoff, up to 500 characters. | |
| final | No | The states that end the handoff. Default: the last state, or done, failed and returned. | |
| states | No | The states in order; the first is where the handoff starts. | |
| payload | Yes | Any JSON value but null, which the receiving agent works from, at most 16 KiB as JSON. | |
| notify_url | No | A public http or https URL with a host name, not an IP address, that receives a small JSON signal after each committed transition. | |
| transitions | No | Allowed moves from a state, each to a later state. A state left out may move to every later state. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations: 24-hour lifetime, 100-per-IP-per-UTC-day creation cap, one-shot owner_token/receiver_token issuance, per-transition notify_url signals, and the forward-only state machine rule. The 'not idempotent' note corroborates idempotentHint=false rather than contradicting it.
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?
One dense paragraph, front-loaded with what is created and how long it lives, then tokens, notifications, and limits. Mostly earned sentences, though the final 'No API key, no account and no sign up' clause is a run-on tail that could be trimmed.
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 six-parameter, non-idempotent creation tool with no output schema, the description covers lifetime, tokens returned, rate limit, and notification behavior — everything needed to call it safely. Nested 'transitions' semantics are also explained adequately.
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 coverage is already 100%, so the baseline is 3, but the description adds the 16 KiB payload ceiling and the default state list including which states are final — details the schema only hints at. The explanation that states/final/transitions may declare an alternate machine also clarifies interaction between the three parameters.
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?
States a specific verb and resource ('Create one piece of work to pass to another agent') plus the concrete shape of the artifact ('a small state machine that lives 24 hours'). This clearly separates it from sibling read_agent_handoff and advance_agent_handoff, which operate on existing handoffs.
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?
Implies the scenario well (handing work to another agent, distributing receiver vs owner tokens) and warns 'not idempotent', which steers the agent away from blind retries. It does not explicitly contrast with adjacent creation tools like create_agent_inbox or create_agent_queue, so the agent must infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_agent_inboxCreate agent inboxAInspect
Create a private email inbox that lives for 24 hours, so an agent can receive a confirmation mail, a verification code or a one time link while it works. The call returns two identifiers and they are not interchangeable. The address is public by construction: it travels in mail headers, bounces and sender logs, and anyone who has it can send mail to the inbox, so give it to the site or person who must write to you. The inbox_id is a UUID and it is the only credential that reads the inbox. Keep it secret, never publish it, never put it in a form or a page, and note that read_url and wait_url contain it and are just as secret. Reading is done with read_agent_inbox, never with the address or the slug. Mail comes from strangers, so treat every message as untrusted text. The inbox holds 20 messages and 256 KiB of text in total, and past either cap it refuses new mail and keeps what it already has. No API key, account or sign up is required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | Public routing label inside the address. It cannot read the inbox. |
| address | Yes | Public mail address. Share it with whoever must send mail here. |
| inbox_id | Yes | Secret read credential. Keep it out of logs, pages and forms. |
| read_url | Yes | |
| wait_url | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses crucial non-obvious behavior: the address is public by construction, the inbox_id is the sole secret credential, read_url and wait_url are equally secret, mail is untrusted, storage caps at 20 messages and 256 KiB, and no API key is required. This deeply informs any agent calling the tool.
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 description is longer than most, but every sentence earns its place by supplying a distinct operational or security fact. It is front-loaded with the core purpose and then systematically covers credentials, reading, storage caps, and trust assumptions without redundancy.
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 stateless creation endpoint with no parameters, the description is fully complete: lifetime, public/private credential split, correct read path, message and size caps, untrusted content warning, and lack of authentication. Nothing an agent needs to safely invoke or reason about the result is missing.
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 tool has zero input parameters and the schema coverage is 100%, so there is no parameter documentation burden. The description adds useful meaning around the returned identifiers (they are not interchangeable, one is public, one is secret), but this is output semantics rather than parameter semantics, so the baseline 4 applies.
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?
Description opens with a specific action verb 'Create' plus the resource 'private email inbox' and states its 24-hour lifetime and purpose. It clearly distinguishes itself from sibling tools such as create_webhook_capture and read_agent_inbox by naming the exact artifact and use case.
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 strong when-to-use context: an agent needs to receive a confirmation mail, verification code, or one-time link while it works. It also explicitly directs reading to read_agent_inbox and warns against using the address or slug. It does not enumerate when-not cases for other creation tools, but the resource difference is obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_agent_queueCreate agent queueAInspect
Create a small temporary pull queue for cooperating agents. Its fixed 24 hour lifetime cannot be extended. Returns separate read, write and worker bearer tokens once. Keep them secret and share only the role needed. Maximum 100 jobs over the queue lifetime, 16 KiB per JSON payload, 5 claims per job and 20 queues per client IP in 24 hours. The server does not execute jobs. No account or API key is required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| counts | Yes | |
| queue_id | Yes | |
| read_token | Yes | |
| write_token | Yes | |
| worker_token | Yes | |
| expire_timestamp | Yes | |
| created_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is exceptionally transparent about behavioral details beyond annotations: the fixed 24-hour non-extendable lifetime, single issuance of read/write/worker bearer tokens, secret-sharing guidance, job and payload limits, claim limits, per-IP queue limits, non-execution of jobs, and lack of account/API key requirements. This fully compensates for the sparse annotations.
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 description is front-loaded with the core purpose and then efficiently packs the most decision-relevant constraints, token handling, quotas, and execution semantics. No sentence is filler; each adds operational guidance an agent would need.
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 zero-parameter creation tool with an output schema available, the description is remarkably complete. It covers lifetime, authentication tokens, secrets, rate and size limits, non-execution behavior, and authentication requirements, leaving an agent with enough context to 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 input schema has zero parameters, so parameter semantics carry little burden. Baseline for zero-parameter tools is 4, and the description appropriately focuses on behavioral and usage context instead of parameter syntax.
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 resource: 'Create a small temporary pull queue for cooperating agents.' It clearly identifies this as a queue-creation tool, distinct in nature from sibling inbox, wake, webhook, and heartbeat tools, and it does so without simply restating the tool name.
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 clear context for when this tool is appropriate: creating a temporary pull queue for cooperating agents. It also states that the server does not execute jobs, helping an agent understand this is not a job-execution tool. It does not explicitly name alternative tools or give direct when-not-to-use guidance, but the context is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_agent_runCreate an agent runInspect
Create a run: a plan of 1 to 16 steps that the service keeps and goes through in order, with its deadlines and recovery, for up to 24 hours. Version 1 uses external workers. Version 2 uses an AI SENSE managed executor with your OpenAI or Ollama Cloud model, bounded tools and a fixed lifetime. Managed mode requires separate credential installation by direct HTTPS POST /services/v1/run/{run_id}/credentials using the control token; never put provider keys, Telegram tokens, or private Slack or Discord webhook URLs in MCP arguments, steps or Storage. Managed creation waits for credentials and may answer unavailable until this mode is enabled. A step is delegate, a job workers claim through claim_agent_queue_job in version 1; wait, on time, a person or an external signal in version 1, or time or an owned action form in version 2; decide, rules over the last result; and complete, always the last one. Returns run_id, read_token and control_token once, and only in version 1 with delegated steps queue_id and worker_token for the workers. With idempotency_key, a repeat after a lost answer returns the same run and tokens instead of a new run. Creation allows 20 per IP per UTC day. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| steps | Yes | Each step has id and type. delegate takes task and timeout_seconds. Managed delegates can require_tools and require_artifacts. Optional store_result_as reserves a handle for a Storage result created in that step. It needs storage_create and share_artifacts. Version 1 waits for time, external or human. Version 2 waits for time (delay_seconds or not_before_timestamp) or action (from_step, artifact, timeout_seconds, on_timeout:continue). After an action wait, a delegate requiring storage_create may set record_feedback:true. decide takes request and optional require. complete is last. | |
| version | No | Defaults to 1 for external workers. Use 2 with execution for managed text-model execution. | |
| execution | No | Managed v2 configuration without credentials. Permissions restrict what the model may request. Tool results, not model claims, confirm effects. | |
| ttl_seconds | Yes | The run's lifetime, fixed at creation and extended by nothing. | |
| idempotency_key | No | 32 bytes from a secure random source as lower-case hex, the same for a repeat of the same plan. |
create_agent_wakeWait for an eventAInspect
Create a durable MCP task that completes when a webhook arrives, a person answers a form or a chosen time is reached. Use it when an agent must pause and continue after an outside event without holding one HTTP request open. The task lasts from 60 seconds to 24 hours. Webhook bodies and human answers are readable by anyone holding the task URL, so do not send secrets, credentials or personal data.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | For human events. The question shown on the form. | |
| options | No | For human events. The choices on the form. | |
| wake_at | No | For time events. Unix timestamp to wake at. | |
| allow_note | No | For human events. Allow an optional note. | |
| event_type | Yes | The event that completes the task. | |
| description | No | For human events. Supporting detail shown below the title. | |
| delay_seconds | No | For time events. Wake this many seconds from now. | |
| timeout_seconds | No | Maximum task lifetime in seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
| task_id | Yes | |
| event_type | Yes | |
| completed_at_datetime | Yes | |
| completed_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnly=false, openWorldHint=true, idempotent=false, and destructive=false. The description adds valuable behavioral context beyond those: bodies and human answers are readable by anyone with the task URL, secrets should not be sent, and task lifetime ranges from 60 seconds to 24 hours. Nothing in the description contradicts the annotations.
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 description is compact and front-loaded: it defines what the tool does, specifies when to use it, states the duration limit, and includes an important security caveat. Every sentence contributes useful information with no redundancy or filler.
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 input schema and output schema already cover parameter and return details, so the description can focus on lifecycle, security, and intent, which it does. It adequately covers the usage scenario and important caveats, though it could have named sibling tools like create_human_approval or create_webhook_capture to further guide selection.
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 each parameter already has a clear description in the schema. The tool description adds no additional parameter-level meaning beyond grouping the event types, but with full schema coverage the baseline of 3 is appropriate.
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 tool's action: creating a durable MCP task that completes on a webhook, form answer, or time event. It is specific about the resource and behavior, and the three event types make it easy to distinguish from the read-focused sibling tools. It does not explicitly name the overlapping create_human_approval or create_webhook_capture tools, so it slightly misses the chance to differentiate itself from 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 provides explicit guidance: "Use it when an agent must pause and continue after an outside event without holding one HTTP request open." This gives a clear usage context. It does not describe when not to use it or refer directly to sibling alternatives, but the stated condition is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dns_nameCreate a temporary DNS nameAInspect
Point a public hostname at an address you already control, for 24 hours. Use it when something needs a name rather than an address: a webhook target someone has to type, a staging box whose address moves, a service two agents must reach by the same name. No API key, no account and no sign up. The name is assigned and never chosen, and comes back as aisense-.53for24h.com. The answer carries dns_token once and never again; without it the name cannot be changed or removed. It disappears on its own after 24 hours and nothing extends that. A name is a DNS record and nothing else: no tunnel, no hosting, no certificate and no HTTPS. The zone is not on the Public Suffix List, so every name shares one certificate quota and browsers treat them as one site. Do not put a login on one.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | A public unicast IPv4 or IPv6 address. Private, loopback, link-local and multicast ranges are refused. The address is required and never taken from the caller, because the caller is usually not the machine the name should point at. | |
| ttl | No | Seconds. 60 is the only value on the menu, so leave it out unless you want to be explicit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | Yes | |
| ok | Yes | |
| ttl | Yes | |
| name | Yes | |
| slug | Yes | |
| record | Yes | |
| serial | No | |
| dns_token | Yes | |
| expire_at | Yes | |
| nameservers | Yes | |
| expire_timestamp | Yes | |
| created_at_timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: names are assigned not chosen, formatted as aisense-<slug>.53for24h.com, the dns_token is returned once and never again, expiry is 24h with no extension, no tunnel/hosting/cert/HTTPS, and shared certificate quota on a non-PSL zone. This is exactly the behavior a caller needs and cannot infer from readOnlyHint/destructiveHint/idempotentHint; the only mild mismatch is that a public DNS registration arguably reads as open-world while openWorldHint is false.
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?
Front-loaded with the core action and lifespan, then layered constraints in short, dense sentences. Nearly every sentence carries a distinct constraint; the certificate-quota/PSL sentence is the most marginal but still a real operational warning.
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?
An output schema exists, yet the description still flags the single most important return value (dns_token, shown once) and ties it to the update/delete siblings. Combined with the 24h lifetime and non-DNS limitations, an agent has everything needed to call this correctly and safely.
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%, with both ip and ttl already documented in-schema, including the IPv4/IPv6 restriction and the single-value enum. The description reinforces that the hostname is never caller-chosen, but adds no new per-parameter syntax or format guidance, so the schema does the heavy lifting.
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?
States a specific verb and resource ('Point a public hostname at an address you already control') plus the scope of the operation (24 hours), which immediately separates it from siblings like create_qr_code, shorten_url, or acquire_lease. The agent can tell what is created and how long it lives without opening the schema.
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?
Gives concrete when-to-use triggers (webhook target typed by a human, a staging box whose address moves, a name two agents must share) and an explicit prohibition ('Do not put a login on one'). It lacks an explicit contrast against a named alternative, but the conditions for use are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_heartbeatCreate heartbeatAInspect
Create a deadline monitor for a job, device or agent that should keep checking in. Call ping_heartbeat before the expected interval plus grace period ends. One missed deadline calls a public HTTP or HTTPS webhook or wakes an active Agent Wake webhook task. The monitor lasts at most 24 hours from creation, and pings cannot extend that limit. The returned heartbeat ID and URLs are bearer secrets. No authentication is required.
| Name | Required | Description | Default |
|---|---|---|---|
| on_miss | Yes | Exactly one miss target. Use url for a public HTTP or HTTPS webhook with a host name, not an IP address, on port 80 or 443, or wake_task_id for an active Agent Wake webhook task. | |
| grace_seconds | Yes | Extra time after the expected check-in before the miss action fires. The expected interval plus grace must not exceed 86400 seconds. | |
| expect_every_seconds | Yes | Expected time between check-ins, from 60 seconds to 24 hours. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| late | Yes | |
| misses | Yes | |
| status | Yes | |
| on_miss | Yes | |
| delivery | No | |
| ping_url | Yes | |
| ping_count | Yes | |
| status_url | Yes | |
| heartbeat_id | Yes | |
| grace_seconds | Yes | |
| missed_at_datetime | No | |
| created_at_datetime | Yes | |
| expires_at_datetime | Yes | |
| missed_at_timestamp | No | |
| created_at_timestamp | Yes | |
| expect_every_seconds | Yes | |
| expires_at_timestamp | Yes | |
| miss_due_at_datetime | Yes | |
| terminal_at_datetime | No | |
| last_ping_at_datetime | Yes | |
| miss_due_at_timestamp | Yes | |
| terminal_at_timestamp | No | |
| last_ping_at_timestamp | Yes | |
| next_expected_at_datetime | Yes | |
| next_expected_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond annotations: the 24-hour maximum lifetime and that pings cannot extend it, that a miss fires a webhook or wakes a task exactly once, that the returned ID/URLs are bearer secrets, and that no authentication is required. These are important operational and safety facts the annotations do not convey.
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?
Front-loads the core purpose in the first sentence and each subsequent sentence carries distinct information (timing, dispatch, lifetime cap, secret handling). It is slightly longer than strictly needed but has no filler.
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?
With an output schema present, return details need not be explained, yet the description still flags the security-sensitive nature of returned values. For a nested-object, three-required-parameter mutation tool, nothing an agent needs before calling is missing.
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%, so the baseline is 3. The description echoes the interval-plus-grace timing rule and the on-miss dispatch behavior, but adds little syntax or constraints (port, host, size limits) beyond what the schema already documents in detail.
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?
States a specific verb and resource ('Create a deadline monitor') plus the objects it monitors (job, device, agent). It is clearly distinguishable from siblings ping_heartbeat and read_heartbeat, which are referenced or implied.
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?
Explicitly tells the caller to use ping_heartbeat before the expected interval plus grace period ends, which routes the agent to the correct companion tool. It does not, however, contrast this with alternatives like scheduled webhooks or leases, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_human_approvalRequest human approvalAInspect
Put a decision in front of one to twenty people. Use one respondent for a normal approval, or several when every invited person should answer through a separate bearer form link. Group results contain counts, a tally and anonymous numbered responses. Optional notify_url receives one small signal after the final answer. It does not contain the answers. Forms expire after 24 hours. No API key, account or login is required.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Required. The question shown to the person, in their language. Make it answerable on its own, since they see no conversation history. | |
| options | No | Optional. The buttons offered, 2 to 10 of them. Defaults to Approve and Reject. Use your own labels when the choice is not a yes or no, for example Ship today, Ship Monday, Cancel. | |
| allow_note | No | Optional. Whether the person may add a free text comment alongside their choice. Defaults to true. | |
| notify_url | No | Optional public HTTP or HTTPS callback with a host name, not an IP address, after the final answer. | |
| description | No | Optional supporting detail below the question: what changes, what it costs, what happens if they decline. | |
| respondents | No | Number of separate form links. Each link can answer once. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| tally | No | |
| status | Yes | |
| answered | No | |
| form_url | No | |
| wait_url | Yes | |
| action_id | Yes | |
| form_urls | No | |
| responses | No | |
| result_url | Yes | |
| respondents | No | |
| expire_datetime | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: 24-hour form expiry, no API key/account/login needed, notify_url delivers only a small signal and never the answers, and group results contain counts, a tally and anonymous numbered responses. These are exactly the operational facts an agent needs and none are in the annotations.
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?
Six tight sentences with no filler, and the core action plus respondent-count guidance are front-loaded. The opening is slightly indirect ("Put a decision in front of...") where a direct create verb would be sharper.
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?
An output schema exists, so return shape needn't be spelled out, yet the description still characterizes group results. The one material omission is how the answers get back to the agent — there is no pointer to read_human_approval or mention of what the creation response returns.
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 coverage is 100%, so the baseline is 3; the description still adds real meaning by explaining that respondents maps to separate single-use bearer links and that notify_url fires one content-free signal after the final answer, details the schema descriptions only partially convey.
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?
States a concrete action and resource in plain terms: putting a decision in front of 1-20 people via bearer form links. An agent can tell this creates approval requests, but the description never names the closely related sibling read_human_approval, so it does not fully disambiguate create-vs-retrieve in this family.
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?
"Use one respondent for a normal approval, or several when every invited person should answer through a separate bearer form link" gives clear guidance for parameter selection, but there is no guidance on when to choose this tool over alternatives (e.g. create_one_time_secret or decide) or how results are subsequently fetched.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lease_namespaceCreate lease namespaceARead-onlyInspect
Create a random private namespace before several agents coordinate work using short readable keys. The namespace is a bearer secret and is returned once. Share it only with the cooperating agents. This operation stores no lease and needs no authentication.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| namespace | Yes | |
| entropy_bits | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description reveals important behavioral traits: the namespace is a bearer secret, is returned only once, and must be shared only with cooperating agents. It also clarifies that no authentication is required and that the operation stores no lease, giving the agent useful safety and side-effect context well beyond the structured annotations.
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 description is compact and front-loaded with the core purpose, then adds secret-handling and side-effect information in short, purposeful sentences. Every sentence adds meaningful guidance without redundancy or filler.
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 zero-parameter tool with an output schema, the description fully covers what the tool does, when to use it, how to handle the returned secret, authentication needs, and side-effect behavior. Nothing important is missing for an agent to invoke it 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 tool has zero parameters and the schema description coverage is 100%, so there are no parameter details needing clarification. The description adds context by noting no authentication is required, which is relevant to why no credential parameters exist. The baseline for zero-parameter tools is appropriate.
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 'Create' and the specific resource, a random private namespace, and explains its purpose: allowing several agents to coordinate work using short readable keys. It also distinguishes itself from lease-related siblings by noting it stores no lease, so an agent can tell it apart from acquire_lease and similar tools.
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 a clear context for when to use the tool: before multi-agent coordination that relies on short readable keys. It does not explicitly name alternatives, but the distinction from lease tools is implied by 'stores no lease,' and the guidance to share the namespace only with cooperating agents makes appropriate usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_one_time_secretStore a client-encrypted one-time secretAInspect
Store an already encrypted AES-256-GCM envelope for at most 24 hours. Encrypt locally first. Never send plaintext or the decryption key to MCP, chat or this API. MCP clients may log tool arguments and bearer tokens. Returns separate read and receipt tokens once. Maximum plaintext size before encryption is 16384 bytes. Creation allows 100 per IP per UTC day; not idempotent. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | Yes | Unpadded base64url of the fresh 12-byte nonce. | |
| version | Yes | The envelope version, always 1. | |
| algorithm | Yes | The cipher, always AES-256-GCM. | |
| ciphertext | Yes | Unpadded base64url ciphertext including the 16-byte authentication tag, no key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only declare the write/non-idempotent/closed-world profile. The description adds TTL (24 hours), the one-time return of read and receipt tokens, the 100-per-IP-per-UTC-day rate limit, the 16384-byte pre-encryption plaintext cap, and a concrete security warning about client logging of arguments and bearer tokens.
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?
Front-loads the verb and TTL, then layers the security instruction, the return-value note, the size limit, the rate limit and the auth model in short declarative sentences. No filler; every clause carries an operational constraint.
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?
There is no output schema, and the description compensates by stating that separate read and receipt tokens are returned exactly once. Combined with the rate limit, size cap, and no-account model, an agent has everything needed to call this correctly on the first attempt.
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 coverage is 100%, so the nonce/version/algorithm/ciphertext fields are already documented. The description still contributes meaning the schema does not: the 16384-byte plaintext limit before encryption and the requirement that the key never accompanies the envelope, both of which constrain how the parameters must be produced.
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?
States a specific verb and resource ('Store an already encrypted AES-256-GCM envelope') plus a hard scope limit ('at most 24 hours'), which naturally separates it from reveal/burn/receipt siblings. It never names those siblings explicitly, so an agent must infer the routing from the verb alone.
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?
Gives clear operational prerequisites: 'Encrypt locally first. Never send plaintext or the decryption key to MCP, chat or this API.' It also flags the non-idempotent, rate-limited, unauthenticated nature of creation. What's missing is explicit direction to the companion tools (reveal_one_time_secret, read_one_time_secret_receipt, burn_one_time_secret) for the retrieval half of the flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_qr_codeMake a QR codeARead-onlyIdempotentInspect
Make a QR code for a text or URL, as a PNG with error correction level H. The answer is the image. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text or URL the QR code holds, up to 2000 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world scope, so the safety profile is covered. The description adds genuinely new context: the output is a PNG image, it uses error correction level H, and no authentication is required. It stops short of stating size limits or how the image bytes are returned.
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?
Three short sentences, front-loaded with the core purpose, then output format, then access requirements. Nothing is redundant and every sentence contributes.
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 tool with no output schema, the description covers purpose, output type and authentication, which is enough to call it correctly. It could say more about what exactly is returned (binary vs base64) and any content-size limits, but the essentials are 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?
With one parameter and 100% schema description coverage, the schema already documents the 2000-character text/URL input. The description's "text or URL" phrasing reinforces the accepted values but adds no syntax or format detail beyond the schema.
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 gives a specific verb and resource ("Make a QR code") plus the input domain (text or URL) and output format (PNG, EC level H). It is clearly distinct from the decoding sibling read_qr_code, though it never names that sibling explicitly.
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 only implied: the tool generates and read_qr_code presumably decodes. There is no explicit when-to-use / when-not-to-use statement or named alternative. The "no API key, no account, no sign up" line speaks to setup, not selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_semantic_searchCreate a semantic search collectionAInspect
Create a collection of short notes, such as messages, jobs or results, that agents search by meaning, across wording and between languages. It lives for a fixed 24 hours that cannot be extended. model is bge-m3 (default) or qwen3-embedding-4b and stays fixed for the collection. Returns collection_id and separate read and write bearer tokens once: keep them secret and share only the role needed. At most 500 notes over the collection lifetime and 20 collections per client IP in 24 hours. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional. bge-m3 (default) or qwen3-embedding-4b. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by disclosing the ephemerality (24h, non-extensible), the one-time secret return of separate read and write bearer tokens with a secrecy/share-only-needed warning, hard quotas, and that no API key or account is required. The one-time credential disclosure is exactly the kind of irreversible behavior an agent must know about.
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?
Front-loaded with the purpose, then lifetime, model, return values and limits in a compact sequence. The closing 'No API key, no account and no sign up' is borderline promotional but still carries an auth-relevant fact, so only minor tightness is lost.
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?
With only one optional parameter, no output schema and non-destructive annotations, the description covers everything an agent needs: what is created, how long it lives, what comes back (collection_id plus read/write tokens), the secrecy obligation, and the quotas that constrain reuse.
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 coverage is 100%, so the enum and default are already documented; the description adds real meaning by saying the chosen model 'stays fixed for the collection', i.e. the parameter is a permanent commitment rather than a per-call setting.
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?
States a specific verb and resource ('Create a collection of short notes') plus the defining capability ('agents search by meaning, across wording and between languages'), which cleanly separates it from siblings like query_semantic_search, add_semantic_search_notes and read_semantic_search.
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?
Gives the operative context an agent needs before calling: fixed 24-hour lifetime that cannot be extended, a model choice locked for the collection's life, a 500-note ceiling and a 20-collections-per-IP daily cap. It does not explicitly name the follow-up tool (add_semantic_search_notes) or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhook_captureCreate webhook captureAInspect
Create a throwaway URL that records the next HTTP request anyone sends to it, headers and body included. Use it to see what a webhook provider, a form or a third party service actually transmits, instead of trusting their documentation, and to prove that an integration fired at all. No API key, no account and no sign up. The pending capture is stored before this call returns. Optional notify_url receives one small completion signal with a result URL after the first request arrives. The callback does not contain the captured request. Whatever is sent to update_url becomes publicly readable, so do not use it for secrets, credentials or personal data.
| Name | Required | Description | Default |
|---|---|---|---|
| notify_url | No | Optional public HTTP or HTTPS callback with a host name, not an IP address. It receives one small signal after capture. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| status | Yes | |
| read_url | Yes | |
| wait_url | Yes | |
| capture_id | Yes | |
| update_url | Yes | |
| expire_datetime | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only declare the generic profile (not read-only, open-world, non-idempotent, non-destructive), while the description adds the operationally important facts: no API key or account needed, the pending capture is stored before the call returns, and the write is public so secrets/credentials/personal data must not be sent. The notify_url delivery contract — one signal with a result URL, not the captured payload — is behavior an agent could not infer from annotations.
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?
Front-loaded with the core definition, then constraints and the security caveat; every sentence is doing work except the reference to 'update_url', a parameter that does not exist in this tool's schema and reads as leftover boilerplate from a sibling tool, which can send an agent looking for a nonexistent field.
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?
An output schema exists, so return values need not be explained, and timing, callback behavior, and safety are all covered. The gaps are minor but real: capture lifetime/expiry is unspecified and the description never points at read_webhook_capture as the way to fetch the recorded request.
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 coverage is 100% and the single optional parameter is already documented, but the description adds real meaning beyond the schema: the callback carries a result URL and explicitly does not contain the captured request, and the public-readability warning constrains what an agent should ever send. This is meaningful value over an already-complete schema.
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 first sentence states a specific verb and resource — create a throwaway URL that records the next inbound HTTP request with headers and body — and the scope (one request only) distinguishes it from read_webhook_capture and schedule_webhook without requiring the schema. An agent can tell immediately what is produced.
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 clear when-to-use guidance: inspecting what a provider/form/third party actually transmits rather than trusting docs, and proving an integration fired. It does not, however, explicitly name the follow-up tool (read_webhook_capture) that retrieves the capture, nor state when not to use it versus schedule_webhook for repeated captures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crypto_walletBitcoin, Ethereum and Solana walletsBRead-onlyInspect
The balance of a public Bitcoin, Ethereum or Solana address, read from blockchain.info, a public Ethereum RPC node or the Solana mainnet RPC, or a newly generated key pair. A generated private key is sent once and not stored, but it has passed through this service, so use it for tests and small amounts only. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | bitcoin, ethereum or solana. | |
| address | No | balance only: the public address. | |
| operation | Yes | balance reads the balance of the public address in address; new_wallet generates a key pair that is sent once and not stored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true and idempotentHint=false, and the description adds real context beyond that: the exact upstream data sources (blockchain.info, a public Ethereum RPC node, Solana mainnet RPC), that no API key or signup is needed, and the security caveat that a generated private key is transmitted once and not stored. What it does not disclose is the shape of the result (units, precision, native vs. token balances) or failure behavior for a malformed address, which matters given there is no output schema. Note that a key-pair-generating operation sitting under readOnlyHint=true is unusual, though generating and returning a key pair does not modify server state, so this is not a contradiction.
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?
Three sentences, all of which carry information, and the no-API-key line is front-loaded value. However, the opening sentence is a long run-on fragment that stacks three chains, three providers and a second operation into one clause, which hurts scannability for an agent parsing it quickly.
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 3-parameter tool with no output schema, the description should at least hint at what a balance result contains (currency units, decimals, whether it reflects confirmations) and what happens on an unknown or malformed address. It covers inputs, providers and the key-handling caveat well, but leaves the return value entirely undefined.
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 both enums are documented in the schema itself, including that address is 'balance only' and that new_wallet generates a key pair sent once and not stored. The description largely restates those facts (public address, generated key pair) without adding format or validity requirements. Baseline 3 is appropriate when the schema carries the semantics.
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 the concrete resource (balance of a public Bitcoin, Ethereum or Solana address) and the alternate mode (a newly generated key pair), so an agent can tell it apart from every sibling, none of which touch crypto keys or chain balances. It is a noun phrase rather than a verb-first statement and never uses the schema's operation names (balance / new_wallet), so the mapping from intent to call is slightly inferential.
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?
There is one real usage rule: a generated private key transits the service, so it should be used only for tests and small amounts. That is a genuine when-to-use constraint, but there is no guidance on when to pick balance vs new_wallet, nor any exclusion such as chains that are unsupported or addresses that will fail validation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decideDecide from rules or a modelARead-onlyInspect
Omit model or use rules for the existing yes_no, choice and scale rule engine with probability, confidence and action. Use model clef, nimble or tev1 for noul, choice and score questions with instructions and criteria. tev1 is the smallest and fastest, tested by its maker in English only, and suits short, direct questions. Model mode processes the submitted state and questions and returns structured answers without an automatic action or rule trace. Model requests allow up to 8 KiB of JSON, 3 KiB for tev1, 4 questions and 8 choices per question, and have their own usage limit of 60 per minute and 1000 per UTC day per IP. Refusals may carry Retry-After. state holds the facts. For rules, each rule is {"if": condition, "weight": number}, where a condition tests a field of state with eq, ne, gt, gte, lt, lte, in, exists, prefix or contains, combined with any and not. Request and answer bodies are not stored by this API. Usage counters are stored. Do not send credentials or sensitive personal data. The full format is at https://aisense.no/free-public-api-decide-api-endpoint. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional. rules (default), clef, nimble or tev1. Unknown models are refused. | |
| state | Yes | The facts the rules test, or the input sent to the selected model. | |
| questions | Yes | 1 to 64 named rule questions, or up to 4 model questions under the default model limits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations, it discloses concrete limits (8 KiB JSON, 3 KiB for tev1, 4 questions, 8 choices per question), rate limits (60/min, 1000/day per IP), Retry-After on refusals, and a data-retention stance (request and answer bodies not stored; usage counters are). The explicit 'Do not send credentials or sensitive personal data' and 'No API key, no account' statements are exactly the kind of context annotations cannot carry. This is consistent with readOnlyHint=true (no mutations) and idempotentHint=false (per-IP counters accumulate).
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?
It is one long paragraph of run-on clauses with typos and some redundancy ('No API key, no account and no sign up' plus the external URL). Most sentences do carry load-bearing facts, but the limits, rule format, and privacy notes are not grouped or front-loaded, so an agent must parse the whole block.
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 nested-object tool with no output schema, it covers request shape, rule grammar, model limits, rate limits, and return behavior in model mode ('returns structured answers without an automatic action or rule trace'). The remaining gap is that the answer shape and rule-mode output are only available via the external documentation link, which an agent may not be able to fetch.
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 coverage is 100%, so the schema already names and describes all three parameters, but the description goes further: it explains what 'state' represents ('state holds the facts'), the shape of a rule ({"if": condition, "weight": number}), and enumerates the condition operators (eq, ne, gt, gte, lt, lte, in, exists, prefix, contains, combined with any/not). That is meaning genuinely beyond the schema and offsets the vagueness of the 'questions' property description.
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 says it runs decisions over 'the existing yes_no, choice and scale rule engine' or through one of three models, so the verb+resource is clear. It does distinguish itself in spirit from other tools, but garbled/'typo'd phrasing ('Omit model or use rules', 'noul' twice, 'scale' vs 'score') blunts precision. An agent can tell what it does, but one read may not be enough.
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?
Strong internal routing: it says to omit the model or use 'rules' for the existing rule engine and to use clef/nimble/tev1 for model questions, plus that tev1 is 'smallest and fastest, tested by its maker in English only' and suits short, direct questions. What is missing is any routing against sibling tools (e.g. validate_value, match_tables), so guidance is clear within the tool but not across the toolset.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
decode_audioDecode data from soundARead-onlyIdempotentInspect
Recover one checksum-verified AI SENSE audio message, the audio-v2 format or the earlier v1, from a PCM16 WAV recording at 44100 or 48000 Hz, mono or stereo, at most 40 seconds. Give storage_id for a WAV file of at most 4 MiB, uploaded through REST Storage first. WAV recordings exceed the inline MCP request limit. REST accepts files up to 8 MiB. Answers data_base64, byte_length and text when the recovered bytes are valid UTF-8. This is data-over-sound decoding, not speech transcription. Audio is processed by the API, and the decoded result is not stored. Stored input keeps its original lifetime. storage_id must name an ordinary 24-hour file, without a max_downloads limit. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | auto tries all three bands within one shared time limit, and the earlier v1 format only in audible. Pick audible, high or ultrasound when known. | |
| storage_id | Yes | A storage_id from store_file, from a previous tool result, or from REST /storage. Objects expire 24 hours after they were stored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/openWorld annotations, the description discloses that the API performs processing, the decoded result is not stored, the stored input retains its original 24-hour lifetime, no max_downloads limit is allowed on the storage object, and no API key or account is required. That is meaningful operational context an agent could not infer from the annotations.
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 core statement is front-loaded in the first sentence, with size, lifetime and auth details following in a logical order. A few clauses are peppered in as afterthoughts ("No API key, no account and no sign up" repeated in spirit by the earlier REST mention), which slightly dilutes density but does not obscure the call contract.
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?
There is no output schema, and the description compensates by naming the return fields (data_base64, byte_length, text) and the UTF-8 condition for text. Combined with the size, duration, sample-rate and storage-lifetime constraints, an agent has everything needed to call this correctly on the first attempt.
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 coverage is already 100% and the mode enum is documented in-schema, so the baseline is 3. The description adds real constraints on storage_id (must be an ordinary 24-hour file with no max_downloads limit, sourced from store_file or REST /storage) and reinforces the auto-vs-explicit band choice, pushing it above baseline.
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?
Opens with a specific verb and resource: "Recover one checksum-verified AI SENSE audio message... from a PCM16 WAV recording," and names the format variants (audio-v2 / v1). It also preempts confusion with a sibling capability by stating "This is data-over-sound decoding, not speech transcription," which sharply separates it from any transcription or generic read tool.
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?
Preconditions are concrete: 44100/48000 Hz, mono or stereo, at most 40 seconds, WAV of at most 4 MiB, and the file must be uploaded first through REST Storage because "WAV recordings exceed the inline MCP request limit." It doesn't explicitly route the agent to encode_audio for the inverse operation, so the alternative-tool mapping is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_nameDelete a temporary DNS nameADestructiveIdempotentInspect
Remove a temporary DNS name now, before its 24 hours are up. Needs the dns_token. Use it when the work is done and the name should stop answering rather than sit there until it expires. The removal reaches the primary name server at once and the secondary follows by replication, so a disconnected secondary can keep answering until it reconnects or the name expires. A resolver that already holds the answer keeps it for the rest of its TTL, at most 60 seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug the service assigned, without the aisense- prefix and without the zone. | |
| dns_token | Yes | The dns_token from create_dns_name. It is shown once and never again. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| name | Yes | |
| slug | Yes | |
| serial | No | |
| deleted | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by disclosing the exact DNS propagation behavior: primary server removal is immediate, secondary servers follow via replication and may keep answering if disconnected, and resolvers retain cached answers up to 60 seconds. This is valuable operational context that annotation hints alone do not convey.
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 description is concise, front-loaded with the core action, and every sentence contributes useful information about timing, prerequisites, or propagation behavior. There is no wasted wording or irrelevant detail.
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 destructive operation with an existing output schema and rich annotations, the description covers purpose, timing, prerequisites, and observable side effects. An agent has enough information to decide when to call the tool and what to expect afterward, so no critical context is missing.
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?
With 100% schema description coverage, the schema already thoroughly documents both 'slug' and 'dns_token', so the description need not restate them. The description adds a small reminder that dns_token is required, but it does not materially enrich parameter semantics beyond what the schema 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 action ('Remove a temporary DNS name now, before its 24 hours are up') and differentiates this from sibling tools by emphasizing immediate removal versus waiting for expiration. It is specific about the resource type and avoids simply restating the tool name.
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 a clear when-to-use instruction ('Use it when the work is done and the name should stop answering') and mentions the required dns_token prerequisite. It does not explicitly name an alternative tool for scenarios where the name still needs to answer, but the guidance is sufficiently clear for the common delete use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_semantic_search_noteDelete a note from a semantic search collectionADestructiveIdempotentInspect
Delete one note with the write token. Its text and vector are removed and it leaves the search at once. Its place in the 500-note lifetime limit stays used. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The note_id from add_semantic_search_notes or a search. | |
| write_token | Yes | The write_token from create_semantic_search, shown once. It adds and deletes notes. | |
| collection_id | Yes | The collection_id from create_semantic_search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and idempotentHint=true, so safety is partly covered. The description still adds real value beyond them: the text and vector are removed immediately, and the 500-note lifetime quota slot is permanently consumed — a non-obvious consequence an agent would otherwise not anticipate. It omits error behavior for a wrong token or unknown note_id.
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?
Four very short sentences, front-loaded with the action and credential, then the destructive effect, then the quota caveat. Nothing is redundant and every sentence carries 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 3-parameter destructive tool with no output schema but rich annotations, the description covers credential requirements, effect scope and the irreversible quota cost. Only return-value shape and failure handling are absent, which are minor given the annotation coverage.
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 each of the three parameters is documented in the schema, including where note_id and write_token come from and the hex patterns. The description only restates that the write token is needed, adding no format or sourcing detail beyond what the schema supplies, so baseline 3 applies.
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?
Names a specific verb and resource ('Delete one note') scoped to a semantic search collection, with the required credential stated up front. An agent can distinguish it from add_semantic_search_notes or query_semantic_search by name and phrasing, though the description itself never references those siblings.
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: it is the removal counterpart to adding notes and requires the write token. However, there is no explicit statement of when to delete versus re-create a collection, and no exclusion or prerequisite guidance (e.g. what to do if the note was already deleted).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_audioEncode data as soundARead-onlyIdempotentInspect
Turn 1 to 128 bytes into a PCM16 WAV audio block in the AI SENSE audio-v2 format: four-tone symbols that hop between three tone sets, so room echo is ignored, with Reed-Solomon error correction and a CRC. data is UTF-8 text unless input_encoding is base64. Audible tones from 800 to 3000 Hz are the default. high uses experimental tones from 14.0 to 16.2 kHz and ultrasound experimental tones from 18.0 to 20.2 kHz. Both can be audible and depend on the devices. Play the audio near a listening device, then decode its recording. This encoding is unencrypted. Nothing is stored. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | UTF-8 text or standard Base64 representing at most 128 bytes. | |
| mode | No | audible by default. high and ultrasound are experimental and depend on the speakers and microphone. | |
| input_encoding | No | utf8 by default. Choose base64 for arbitrary binary bytes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world, so safety is covered; the description still adds substantive behavior the annotations cannot express — the encoding is unencrypted, nothing is persisted, no API key or account is required, and high/ultrasound modes are experimental and device-dependent. The 1–128 byte bound and the four-tone/Reed-Solomon/CRC design give the agent realistic expectations about robustness.
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?
Core capability is front-loaded in the first clause, and each following sentence adds a distinct fact (encodings, modes, workflow, privacy). The closing 'Nothing is stored. No API key, no account and no sign up.' is partially redundant with openWorldHint=false and could be compressed into one clause.
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?
With no output schema, the description must carry the return shape, and it does name the artifact (PCM16 WAV audio block) — though it never says whether that comes back as raw bytes, base64, or a reference, which matters for a binary payload. Everything else an agent needs to call it correctly (size bounds, mode tradeoffs, unencrypted nature, no storage) is 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 coverage is 100%, so the baseline is 3, but the description earns more by adding meaning the enum descriptions lack: concrete frequency ranges for high (14.0–16.2 kHz) and ultrasound (18.0–20.2 kHz), the warning that both can still be audible, and the UTF-8-vs-base64 rule restated with the byte-limit rationale. It does not explain the relationship between the 172-char maxLength and the 128-byte limit, which is the one place a param needs more help.
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?
States a specific verb and resource ('Turn 1 to 128 bytes into a PCM16 WAV audio block') plus the named format (AI SENSE audio-v2), which cleanly separates it from the sibling decode_audio. An agent can identify the transform, its input domain, and its output artifact without opening the schema.
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?
Gives explicit operational context: 'Play the audio near a listening device, then decode its recording,' which implies pairing with the decode_audio sibling, and explains when to pick high/ultrasound versus the audible default. It stops short of naming the sibling tool or stating exclusion conditions (e.g., why not use encode_data), so it is clear but not fully routing-grade.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
encode_dataEncode or decode Base64, Base32, Base58, hex, URL or HTMLARead-onlyIdempotentInspect
Encode text as Base64, Base64url, Base32, Base58 or hex, as URL percent-encoding or as HTML entities, or decode such a string. Decoding answers decoded_text when the bytes are UTF-8 text and decoded_base64 when they are binary. Base58 uses the Bitcoin alphabet and takes at most 64 KiB, base64url the URL-safe alphabet without padding, url RFC 3986 percent-encoding with a space as %20. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Text to encode, or the encoded string to decode. | |
| format | Yes | base64, base64url without padding, base32, base58 with the Bitcoin alphabet, hex, url percent-encoding or html entities. | |
| operation | Yes | encode turns data into the chosen format; decode turns an encoded string back into text or bytes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/closed-world, so the safety profile is covered. The description still adds real behavioral context beyond them: the conditional return field (decoded_text for UTF-8, decoded_base64 for binary), a 64 KiB ceiling for Base58, no-padding base64url, RFC 3986 percent-encoding with space as %20, and the absence of auth requirements. A 5 would require stating what encode itself returns and how overlength input fails.
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 dense sentences front-load the operation and format set, then move to the return-value and format-specific caveats, which is the right ordering. The trailing 'No API key, no account and no sign up' is slightly redundant with a public read-only tool, but it still conveys that no credentials are needed.
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?
With no output schema, the description correctly takes on the burden of explaining return values and does so for decode. The remaining gap is encode's return shape, which is left unstated, and there is an unexplained tension between the schema's 250000-character data limit and the description's 64 KiB Base58 cap.
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 coverage is 100%, so the baseline is 3 and the description only earns credit for genuinely new semantics. It supplies them for format nuances not fully in the schema (the Bitcoin alphabet size cap, unpadded base64url, %20 for space) and clarifies that decode yields either text or bytes. Some of this does restate the enum descriptions, keeping it off a 5.
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 specific verbs (encode/decode) and enumerates the exact resource set (Base64, Base64url, Base32, Base58, hex, URL percent-encoding, HTML entities), so an agent knows precisely what family of transformations this covers. It never names a sibling to delimit against, so an agent must infer on its own that hashing belongs to hash_data and markdown conversion to html_markdown_convert.
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 only implied: the encode/decode split is described, and the format list tells the agent which transformations are in scope. There is no explicit when-to-use versus alternatives statement, nor any exclusion such as 'for checksums use hash_data' or 'for JWT payloads use jwt_token', both of which are present as siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enqueue_agent_queue_jobEnqueue agent queue jobAIdempotentInspect
Add a JSON job using the write token and a stable job_key. The same key and payload return the original job. Changing the payload for that key is a conflict. Payloads are limited to 16 KiB encoded JSON and must contain no secrets or personal data. The 100-job lifetime limit includes completed and failed jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| job_key | Yes | Your own stable key for the job, 1 to 64 characters. A repeat with the same key and payload returns the original job. | |
| payload | Yes | Required JSON value, including null. Maximum encoded size: 16384 bytes. | |
| queue_id | Yes | The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps. | |
| write_token | Yes | The write_token from create_agent_queue, shown once. It adds jobs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| job | Yes | |
| queue_id | Yes | |
| deduplicated | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With idempotentHint=true already declared, the description goes well beyond it by spelling out the exact idempotency contract: same key plus same payload returns the original job, while a changed payload for that key is a conflict. It also discloses the 16 KiB encoded-size cap, the 100-job lifetime quota that counts completed and failed jobs, and a no-secrets/no-PII constraint - all operational facts the annotations cannot express.
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?
Four short sentences, front-loaded with the action and credential, then the idempotency rule, then limits. Dense and mostly waste-free, though the opening clause overlaps with what the schema already says about write_token and job_key.
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?
An output schema exists, so return values need no explanation, and the description covers the failure modes an agent actually needs: conflict on changed payload, size cap, and lifetime quota. The remaining gap is minor - nothing about what a conflict error surfaces or whether enqueueing is allowed once the 100-job limit is hit.
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 coverage is 100%, so all four parameters are already documented with patterns and meanings, making 3 the baseline. The description restates the write-token role and the stable job_key concept and adds the encoded-size framing, but contributes little meaning the schema does not already carry.
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 gives a specific verb and resource ('Add a JSON job') plus the required credentials, which is clearly distinct from the claim/ack/read siblings in this queue family. It stops short of naming a sibling tool by name, but the enqueue-vs-process distinction is unmistakable from the verb.
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 by the idempotency and quota rules, which tell an agent this is the write path for creating jobs. However, there is no explicit 'use this before claim_agent_queue_job' framing, no statement that the queue must already exist (that hint lives only in the queue_id schema description), and no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_randomGenerate a random valueARead-onlyInspect
Generate a random number in a range (kind number, from and to, default 1 to 6), a color as #rrggbb (color), a GUID (guid), a password of 6 to 128 characters (password, length, default 12) or a passphrase of 2 to 12 word groups (passphrase, groups, default 4), which comes with its entropy in bits. UUIDs come from generate_uuid. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | number only. | |
| from | No | number only. | |
| kind | Yes | number for an integer between from and to, color for #rrggbb, guid, password for a password of length characters, or passphrase for groups word groups. | |
| groups | No | passphrase only. | |
| length | No | password only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and idempotentHint=false, so the safety profile is covered. The description adds genuinely new context: no API key, account, or sign up is required, and passphrase output comes with entropy in bits. It does not state whether the randomness is cryptographically secure, which matters for the password and passphrase modes.
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?
Everything is packed into one sentence, but it is front-loaded with the primary capability and the kind/parameter pairings are easy to scan. The parenthetical style and the trailing 'No API key, no account and no sign up' fragment are slightly awkward yet each clause carries 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?
With no output schema, the description carries the burden of explaining returns, and it does so partially by naming output formats (#rrggbb) and noting passphrase entropy in bits. It does not describe the response shape for number, color, guid, or password, nor what happens if from exceeds to, leaving a modest gap for a five-mode tool.
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%, so the schema already defines every parameter, including ranges and enum values. The description's contribution is the documented defaults (1 to 6, 12, 4), which the schema does not state, but it adds no syntax or constraint detail beyond that.
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 concrete verb (generate) and enumerates the five exact resources it produces: integer number, #rrggbb color, GUID, password, and passphrase. It also explicitly names the sibling it should not be confused with ('UUIDs come from generate_uuid'), so an agent can distinguish it from nearby tools without opening the schema.
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?
Each kind is paired with its applicable parameters and defaults (number 1 to 6, password length 12, passphrase 4 groups), which is effectively when-to-use guidance per mode. The one alternative, generate_uuid, is named explicitly. The only gap is that the description offers a 'guid' kind while also redirecting UUIDs to generate_uuid, leaving the agent unsure which to pick for a UUID-looking value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_uuidGenerate UUIDARead-onlyInspect
Generate one random RFC 4122 version 4 UUID. Use it when you need an identifier that will not collide with anything else - an idempotency key, a correlation id across systems, a filename - rather than inventing a string yourself, which is not random and tends to repeat across runs. Takes no parameters and returns a single lowercase hyphenated UUID. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| uuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and closed-world, and the description adds genuinely new behavior: no parameters, a single lowercase hyphenated return value, no auth/key/signup required, and the phrase 'one random' implicitly explains why idempotentHint is false (each call yields a different value). The missing piece is any statement that successive calls will never return the same value.
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?
Front-loaded with the core action, then usage rationale, then return shape. The final sentence 'No API key, no account and no sign up' is partially marketing cadence and repeats the auth point three ways, which is the one wasteful stretch.
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 zero-parameter utility with an output schema and full annotations, nothing an agent needs is missing: purpose, trigger conditions, return format, and auth posture are all 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?
With zero parameters the baseline is 4, but the description adds only 'takes no parameters,' which the empty schema already conveys. It contributes no additional parameter meaning, so it lands slightly below the no-param baseline.
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 gives a precise verb and resource plus a format specifier: 'Generate one random RFC 4122 version 4 UUID.' An agent knows exactly what comes back. It does not differentiate against the sibling generate_random, which is the one nearby tool an agent could plausibly confuse it with.
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 states when to use it with three concrete motivating cases (idempotency key, correlation id, filename) and contrasts it with the failing alternative of hand-rolling a string. It stops short of naming an explicit alternative tool or a when-not condition, so it is clear context rather than full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_timeGet current timeARead-onlyIdempotentInspect
Get the true current date and time, as an ISO 8601 string and a Unix timestamp, for any timezone. Use this whenever the actual present moment matters - stamping a record, computing an age or a deadline, deciding whether something has expired - because a language model has no clock and will otherwise guess a date from its training data. No API key, no account and no sign up. The timezone parameter accepts an IANA name or a fixed UTC offset and defaults to UTC.
| Name | Required | Description | Default |
|---|---|---|---|
| timezone | No | IANA timezone or UTC offset, such as Europe/Oslo or +02:00. | UTC |
Output Schema
| Name | Required | Description |
|---|---|---|
| datetime | Yes | |
| timezone | Yes | |
| timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld=false), so the description's contribution is the return format and the no-API-key/no-account note, which is useful operational context. Note a mild tension: the description emphasizes the 'actual present moment', which varies per call, while idempotentHint is set true — the description does not assert repeatability, so this is an annotation accuracy issue rather than a description contradiction.
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 purpose is front-loaded and the rationale follows logically. The closing 'No API key, no account and no sign up' is three phrasings of one point and could be compressed to a single clause without loss.
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 one-parameter, zero-required read tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what it returns, the timezone format and default, and when to reach for it instead of guessing. Nothing material is missing.
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?
With 100% schema coverage on a single optional parameter, the schema already documents IANA names, UTC offsets, and the UTC default. The description restates the same facts ('IANA name or a fixed UTC offset and defaults to UTC') without adding examples or edge-case meaning beyond the schema.
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 and resource ('Get the true current date and time') and states the return shape (ISO 8601 string and Unix timestamp) plus the timezone scope. It is clearly separable from siblings like convert_timestamp, list_timezones, and time_formats, which do not return the present moment.
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 triggers ('stamping a record, computing an age or a deadline, deciding whether something has expired') and explains the failure mode it prevents (a model guessing a date from training data). It does not explicitly contrast with convert_timestamp or time_formats, so the routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hash_dataHash textARead-onlyIdempotentInspect
Hash text with MD5, SHA-1, SHA-256, SHA-512, CRC32, Whirlpool, SHA3-256, SHA3-512, BLAKE2b-256 or BLAKE3 and answer the digest in hex, or for crc32 as an integer. Use sha256, sha3_256, blake2b or blake3 for integrity checks; md5 and sha1 are for systems that still expect them. argon2id, bcrypt and scrypt are password hashes: slow by design, salted, answered as a self-describing string, limited to 200 calls per day, and meant for test data, since a real password should be hashed where it is used. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The text to hash, as UTF-8. | |
| algorithm | Yes | The hash function. argon2id, bcrypt and scrypt are slow, salted password hashes limited to 200 calls a day; the others answer a digest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations, which only say readOnly/idempotent/closed-world. It discloses output encoding per algorithm (hex, integer for crc32, self-describing salted string for password hashes), a hard rate limit of 200 calls/day for argon2id/bcrypt/scrypt, and that no API key or account is needed. The salted self-describing output note usefully warns that password-hash results are non-deterministic across calls.
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?
Front-loaded with the core verb and the algorithm set, then layers cost/rate-limit/legacy caveats — no filler sentences. It is a single dense run-on, and re-enumerating all thirteen algorithms is partly redundant with the enum, but every other clause carries a distinct decision-relevant fact.
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?
With only two parameters, no output schema, and annotations covering safety, the description is nearly complete: it explains return encodings and quota behavior that the schema cannot express. The only shortfalls are the undocumented input size ceiling and no pointer to verify_hash for the inverse operation.
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 coverage is 100%, so baseline is 3 and the schema already documents the enum and the 200-call limit. The description still adds real meaning beyond the schema by mapping algorithm families to purposes and stating the output shape each returns, though it repeats the salt/rate-limit text verbatim and never mentions the 250,000-character input cap.
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?
"Hash text with MD5, SHA-1, ... BLAKE3" states a specific verb and resource, and the header line plus the algorithm list make it immediately distinguishable from verify_hash, which takes a digest rather than producing one. An agent knows exactly what this produces without opening the schema.
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?
Strong algorithmic selection guidance: sha256/sha3_256/blake2b/blake3 "for integrity checks", md5/sha1 "for systems that still expect them", and password hashes flagged as "meant for test data, since a real password should be hashed where it is used" — an explicit when-not. The gap is sibling routing: verify_hash is never named, so an agent holding a digest and a candidate input is not steered away from calling this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html_markdown_convertConvert between HTML and MarkdownARead-onlyIdempotentInspect
Convert HTML to Markdown, or Markdown to HTML. html_to_markdown leaves out scripts, styles, forms and media and answers markdown and the page title, so a fetched page reads with fewer tokens. markdown_to_html answers html from CommonMark with GitHub tables, strikethrough and task lists; raw HTML in the Markdown is shown as text and a link with an unsafe scheme as its text, so the html can go into a page as it is. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The HTML or the Markdown. | |
| direction | Yes | html_to_markdown converts the HTML in data to Markdown; markdown_to_html converts the Markdown in data to HTML. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses that html_to_markdown drops scripts, styles, forms and media and returns the page title, and that markdown_to_html sanitizes raw HTML and unsafe-scheme links. It also states the no-auth requirement, which the annotations do not cover, and since there is no output schema this return-value detail is essential.
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?
Front-loaded with the core conversion statement, then two direction-specific sentences, then the auth note. Sentences are dense with useful detail rather than padding, though the closing 'No API key, no account and no sign up' is slightly redundant with the rest of the benefit framing.
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?
With no output schema and only two parameters, the description carries adequate load: it explains both directions' outputs, sanitization, and auth. The main gaps are the max-length limit on input and any error/edge-case behavior (e.g., malformed HTML), which an agent might need.
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 coverage is 100%, so baseline would be 3, but the description adds real meaning to the 'direction' enum by explaining the output shape and sanitization behavior of each branch (CommonMark with GFM tables, strikethrough, task lists). The 250,000-character 'data' cap is never mentioned, so size constraints remain schema-only.
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?
States a specific verb and resource ('Convert HTML to Markdown, or Markdown to HTML') and immediately names both direction values, so an agent knows exactly which transformation it gets. It does not explicitly distinguish itself from the nearby sibling html_to_pdf, which is the one conversion tool an agent might confuse it with.
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?
Gives concrete usage contexts: html_to_markdown is for making a fetched page read with fewer tokens, and markdown_to_html is for producing HTML that can go into a page as-is. There are no explicit when-not-to-use conditions or named alternatives, but the intended scenarios are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
html_to_pdfRender HTML to PDFAInspect
Render HTML to a PDF with JavaScript and network access turned off, so only the HTML sent is used and images must be inline data URLs. options can set page-size (A3, A4, A5, Letter, Legal, Tabloid), orientation (Portrait, Landscape) and margin-top, margin-bottom, margin-left, margin-right such as 10mm. The PDF is stored for 24 hours: the answer has storage_id and storage_url, and read_stored_file returns the file. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | The complete HTML to render. Scripts and network requests are off, so images must be inline data URLs. | |
| options | No | Optional page settings: page-size (A3, A4, A5, Letter, Legal, Tabloid), orientation (Portrait, Landscape) and margin-top, margin-bottom, margin-left, margin-right such as 10mm. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses that JS execution and network fetches are disabled, that only the submitted HTML is used, that output is retained for 24 hours, and that the response carries storage_id and storage_url. It also clarifies there is no API key or account requirement, which resolves practical auth questions the annotations do not address, and its 'stored file' framing is consistent with readOnlyHint=false and idempotentHint=false.
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?
Structure is front-loaded: purpose, then the sandbox constraint, then options, then storage lifecycle. The page-size and margin enumerations duplicate the schema and the 'No API key, no account and no sign up' clause is marketing-flavored, but both are short and the remaining sentences each carry real 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?
With no output schema, the description compensates by explaining the return shape (storage_id and storage_url) and the 24-hour retention window plus the retrieval tool. For a two-parameter tool with a nested options object, nothing an agent needs to invoke it correctly or handle the result is missing.
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 both parameters are already documented in the schema, including the same page-size, orientation, and margin values. The description restates those option values and adds only the '10mm'-style margin format example, which the schema also contains, so it adds little meaning beyond the structured 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 first sentence states a specific verb and resource ('Render HTML to a PDF') and immediately scopes it with the sandbox constraint (JavaScript and network off), which separates it from the nearby html_markdown_convert sibling. An agent can tell exactly what output format it gets and what input limitations apply without opening the schema.
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 clear context for when this tool is applicable: HTML must be self-contained with inline data URLs because scripts and network access are disabled, and it names read_stored_file as the follow-up for retrieving the result. What is missing is an explicit exclusion or comparison, e.g. when to choose this over html_markdown_convert or store_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json_checkFormat or validate JSONAInspect
Format or validate JSON text. format pretty-prints it (mode pretty, indent 2 or 4) or compacts it (mode compact); validate reports whether it parses and where it breaks. The result is stored for 24 hours and the answer has its storage_id and storage_url. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The JSON text. | |
| mode | No | format only. | |
| indent | No | format only. | |
| operation | Yes | format pretty-prints or compacts the JSON in data; validate reports whether it parses and where it breaks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false but say nothing about why; the description fills that gap by disclosing that output is persisted for 24 hours and returned with storage_id and storage_url, explaining the non-read-only classification. It also removes friction by stating no API key or account is required. It could still say whether the stored artifact is retrievable/deletable or whether repeated calls create new artifacts.
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?
Three short sentences, front-loaded with the core purpose and then the return/storage behavior, with no wasted clauses. The closing 'No API key, no account and no sign up' is slightly promotional and partially redundant with the same point made once already, but it is brief.
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?
There is no output schema, so the description carries the return-value burden and does so by naming storage_id, storage_url, and the validate case ('reports whether it parses and where it breaks'). Combined with 100% schema coverage, an agent has enough to invoke it correctly; only the exact shape of validate's error location remains unspecified.
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 three parameters are enums, so the schema already documents data, mode, indent, and operation thoroughly. The description restates the mode and indent semantics (pretty with indent 2 or 4, compact) almost verbatim from the schema, adding no format or size guidance beyond it. Baseline 3 is appropriate when the schema carries the parameter burden.
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?
Opens with a specific verb pair and resource ('Format or validate JSON text') and immediately splits the two operations into distinct behaviors. It does not, however, distinguish itself from nearby siblings such as json_csv_convert or validate_value, so an agent must infer the boundary from the name alone.
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 makes the internal format-vs-validate choice clear (pretty/compact vs parse-checking), which implies when each operation applies. It gives no explicit guidance on when to pick this tool over json_csv_convert or validate_value, and no exclusions or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
json_csv_convertConvert between JSON and CSVAInspect
Convert between JSON rows and CSV. json_to_csv takes columns and rows, up to 5000 flat objects, and stores result.csv; csv_to_json takes data, the CSV text, and stores result.json. delimiter is a comma, a semicolon or a tab. spreadsheet_safe guards cells a spreadsheet would run as formulas. The result is stored for 24 hours and the answer has its storage_id and storage_url. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | csv_to_json only. | |
| rows | No | json_to_csv only. | |
| columns | No | json_to_csv only. | |
| delimiter | No | The field separator: a comma (the default), a semicolon or a tab. | |
| direction | Yes | json_to_csv turns columns and rows into result.csv; csv_to_json turns the CSV text in data into result.json. | |
| spreadsheet_safe | No | json_to_csv only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as non-read-only, non-idempotent, non-destructive, but the description adds substantial context the annotations cannot carry: the result is persisted for 24 hours, the response includes storage_id and storage_url, no API key or account is required, and spreadsheet_safe specifically guards against cells a spreadsheet would execute as formulas. That is a strong disclosure of side effects and auth posture for a file-producing tool.
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?
Front-loaded with the purpose and the two modes, then layers limits, delimiter, safety, and retention in compact sentences. The final 'No API key, no account and no sign up' is somewhat promotional and repeats itself, but overall the text is dense with useful information rather than padded.
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 six-parameter conversion tool with no output schema, the description covers what is produced (result.csv / result.json), how it is returned (storage_id and storage_url), retention (24 hours), size limits, and the direction-specific parameter split. Nothing an agent needs before invoking it is missing.
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 coverage is 100%, so baseline is 3; the description earns above that by explaining what spreadsheet_safe actually does (guards formula-injection-prone cells) and by clarifying the direction-dependent parameter pairing in prose. Limits like 'up to 5000 flat objects' restate schema maximums, which is why it is not a 5.
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?
States a specific verb and resource ('Convert between JSON rows and CSV') and immediately distinguishes its two modes by name: json_to_csv takes columns and rows and stores result.csv, while csv_to_json takes data and stores result.json. An agent can tell exactly what the tool does and which direction to pick without inspecting the schema.
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?
Guidance is clear at the mode level: it names which parameters belong to which direction (columns and rows for json_to_csv, data for csv_to_json) and states the 5000 flat-object limit. It does not explicitly steer against siblings such as json_check or match_tables, so it stops short of naming alternatives, but the internal routing guidance is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jwt_tokenCreate or verify a JWTARead-onlyIdempotentInspect
Create or check an HS256 JSON Web Token. encode signs payload with secret and answers jwt; decode verifies token with secret, including exp, nbf and iat, and answers decoded_payload. The secret is used for this call only and is not stored. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | decode only. | |
| secret | Yes | The HS256 signing key, 1 to 4096 characters. | |
| payload | No | encode only: the claims. | |
| operation | Yes | encode signs payload with secret and answers jwt; decode verifies token with secret and answers its payload. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world behavior, and the description adds genuinely new context: the secret is used for this call only and is not stored, and decode performs temporal claim validation (exp, nbf, iat). That non-persistence guarantee is the key behavioral fact for a tool that accepts a signing key. It does not say what a failed verification returns (error vs. a flag), which keeps it below 5.
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?
Three short sentences, front-loaded with the core purpose and then split cleanly by operation. The closing "No API key, no account and no sign up" is slightly promotional but earns its place by answering an auth prerequisite question. No filler or repetition of the title.
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?
There is no output schema, and the description compensates by naming both return keys, jwt for encode and decoded_payload for decode. Combined with the secret non-persistence note and the claim-validation behavior, an agent has what it needs to call this correctly. The nested payload object is described only as "the claims" in both schema and description, a minor remaining gap.
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%, so all four parameters are already documented, including the encode/decode enum and its meaning. The description largely restates that mapping (payload for encode, token for decode, secret as the HS256 key) rather than adding format or constraint detail beyond the schema. Baseline 3 applies when the schema carries the weight.
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 pair and resource ("Create or check an HS256 JSON Web Token") and immediately decomposes it into the two operations, encode and decode, with what each produces. No sibling in the list offers JWT handling, so there is no ambiguity about which tool to reach for.
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 clear operational routing: encode when you have a payload and want a token, decode when you have a token and want its claims, and it notes decode enforces exp, nbf and iat. It also removes a common pre-flight question by stating no API key or account is needed. It stops short of naming exclusions or an alternative tool, so it is a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_timezonesList timezonesARead-onlyIdempotentInspect
List the IANA timezones with their current UTC offsets, optionally only those at one offset such as +0530. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | UTC offset such as +0530, from -1400 to +1400. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds access context ('No API key, no account and no sign up'), which is genuinely useful for an agent deciding whether a call will require credentials, but it says nothing about result size, ordering, or whether offsets reflect DST for each zone at the current moment.
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 front-loaded sentence covering purpose, optional filter, and payload, followed by a short access note. The no-key/no-account clause is slightly promotional but does carry information for an agent; nothing else is wasted.
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?
This is a one-optional-parameter read tool with no output schema and full annotation coverage, so the bar is low. Still, the description never indicates the shape of the result (zone names paired with offsets) or roughly how many zones come back, which matters when the filter is omitted.
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 coverage is 100% and the offset parameter already carries a regex pattern and a human-readable description, so the schema does the heavy lifting. The description's example (+0530) reinforces the expected literal format but adds no semantics beyond what the schema states.
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?
States a specific verb and resource ('List the IANA timezones') plus the returned attribute ('current UTC offsets'), and the optional narrowing to a single offset. This clearly distinguishes it from sibling tools like convert_timestamp and get_current_time, which transform or report a single point in time rather than enumerate zones.
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 phrase 'optionally only those at one offset' implies the filtering use case, but there is no explicit statement of when to call this versus convert_timestamp or time_formats, and no note that the unfiltered call returns the full zone list. Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_networkNetwork lookupARead-onlyIdempotentInspect
Network facts: the public IP address this service sees for you (client_ip), your User-Agent (user_agent), the country, city, coordinates and timezone of an IPv4 address from a local GeoLite2 database (reverse_ip), or the first IPv4 address a domain resolves to (domain_ip). value is the address or domain for the last two. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | client_ip and user_agent describe this request; reverse_ip looks up the IPv4 address in value, and domain_ip resolves the domain in value. | |
| value | No | An IPv4 address for reverse_ip, a domain name for domain_ip. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds genuinely useful context beyond them: geodata comes from a local GeoLite2 database (implying possible staleness/accuracy limits) and domain_ip returns only the first IPv4 address, not all records. It stops short of describing failure behavior for malformed IPs or unresolvable domains.
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 front-loaded sentence opens with the resource ('Network facts:') and then walks the four modes in the same order as the enum, so the reader maps description to schema effortlessly. The closing 'No API key, no account and no sign up' is short and earns its place as a setup constraint.
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?
With no output schema, the description carries the burden of explaining return values, and it does so for every mode (IP, user-agent string, country/city/coords/timezone, resolved address). For a trivial two-parameter lookup this is nearly complete; only error/empty-result behavior for invalid input is unstated.
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 coverage is 100%, so the baseline is 3; the description earns an extra point by clarifying the conditional requirement that value applies only to the last two kinds, which the schema's flat 'required: kind' does not make explicit. It does not add format constraints (e.g. whether CIDR or hostnames with trailing dots are acceptable) beyond the schema's maxLength.
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?
Names a specific resource (network facts) and enumerates the four concrete outputs it can produce: client_ip, user_agent, GeoIP details for reverse_ip, and A-record resolution for domain_ip. An agent can tell exactly which mode answers which question without consulting the schema.
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?
Each kind is tied to a clear use condition ('describe this request' vs 'looks up the IPv4 address in value' vs 'resolves the domain in value'), which effectively tells the agent when to pick each mode. It also states the prerequisite that no API key, account, or sign-up is needed. It does not name any alternative sibling tool, but none of the listed siblings overlaps this function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_tablesMatch two tablesAInspect
Match the rows of two tables on one or more pairs of key columns, like a join, and store the matches as JSON for 24 hours. left and right are lists of row objects; keys lists pairs such as {"left":"id","right":"customer_id"}. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | Pairs of key columns to match on, such as {"left": "id", "right": "customer_id"}. | |
| left | Yes | The first table, as a list of row objects. | |
| right | Yes | The second table, as a list of row objects. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and non-destructive, leaving room for the description to explain the write behavior, which it does: results are stored as JSON and retained for 24 hours, giving the agent a clear expiry horizon. It also notes no API key or account is needed, which is genuine auth context rather than repetition of the annotations. Missing is how the stored matches are retrieved or what identifiers are returned.
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, front-loaded with the core action and effect, followed by parameter shape. The closing 'No API key, no account and no sign up' is somewhat promotional phrasing, though it does carry usable auth information, so it is not pure waste.
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?
With no output schema and a write-and-store behavior, the description should say what the tool returns and how the stored JSON is later accessed; it only says the matches are stored for 24 hours. Matching semantics that matter to callers (unmatched rows, multiple matches per key, key type coercion) are also absent.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning: it clarifies that keys accepts multiple pairs (compound matching) and gives a concrete example of a pair object, which is more than the schema's per-field text conveys. It stops short of explaining behavior on unmatched rows, duplicate keys, or type mismatches.
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 (match), the resource (rows of two tables), the mechanism (one or more pairs of key columns, like a join), and the effect (matches stored as JSON for 24 hours). No sibling tool performs table matching, so an agent can identify it unambiguously.
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 by the 'like a join' framing and the requirement that left/right be lists of row objects, so an agent knows the shape of data this applies to. However, there is no explicit when-to-use or when-not-to-use guidance, no mention of alternatives, and no statement of limits such as table size or row count.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ping_heartbeatPing heartbeatAInspect
Record a check-in for an armed heartbeat and move its next expected deadline. Use it after successful work or from a liveness loop. A ping does not extend the absolute 24 hour lifetime. The heartbeat ID is a bearer secret. No authentication is required.
| Name | Required | Description | Default |
|---|---|---|---|
| heartbeat_id | Yes | The secret heartbeat ID returned by create_heartbeat. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| late | Yes | |
| misses | Yes | |
| status | Yes | |
| on_miss | Yes | |
| delivery | No | |
| ping_url | Yes | |
| ping_count | Yes | |
| status_url | Yes | |
| heartbeat_id | Yes | |
| grace_seconds | Yes | |
| missed_at_datetime | No | |
| created_at_datetime | Yes | |
| expires_at_datetime | Yes | |
| missed_at_timestamp | No | |
| created_at_timestamp | Yes | |
| expect_every_seconds | Yes | |
| expires_at_timestamp | Yes | |
| miss_due_at_datetime | Yes | |
| terminal_at_datetime | No | |
| last_ping_at_datetime | Yes | |
| miss_due_at_timestamp | Yes | |
| terminal_at_timestamp | No | |
| last_ping_at_timestamp | Yes | |
| next_expected_at_datetime | Yes | |
| next_expected_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false and provide no behavioral protection, so the description carries the full burden. It discloses the side effect (moving the next expected deadline), a non-obvious limitation (does not extend absolute lifetime), and security context (heartbeat ID is a bearer secret; no authentication required). This is rich, accurate, and goes beyond the schema.
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?
Four short sentences with no filler. The core action is first, usage follows, then critical caveats, then authentication. Every sentence earns its place.
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?
With a single parameter, an existing output schema, and annotations that are all false, the description covers the essential operational facts: what the tool does, when to use it, the non-renewal caveat, and security handling. No crucial information appears to be missing for an agent to invoke it 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?
Schema description coverage is 100%, so the baseline is 3. The description adds value by emphasizing the heartbeat_id is a 'bearer secret,' which strengthens the schema's 'secret heartbeat ID' by implying it must be protected like a credential. It does not add format details, but the schema already includes pattern.
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 resource: 'Record a check-in for an armed heartbeat and move its next expected deadline.' It clearly distinguishes this from sibling tools like read_heartbeat (read-only) and create_heartbeat (creation), and the effect is concrete.
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 explicit when-to-use guidance: 'Use it after successful work or from a liveness loop.' It also states a key when-not-to-use caveat: 'A ping does not extend the absolute 24 hour lifetime.' However, it does not name alternative sibling tools for comparison, so it stops short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_imageConvert, vectorize, resize or inspect an imageAInspect
Convert a JPEG, PNG, WebP, HEIC or supported static SVG to JPEG, PNG or WebP (format, quality, lossless). Vectorize a PNG or JPEG to black SVG paths on a transparent background (threshold). The trace fits within 1024 by 1024 pixels. For JPEG, PNG or WebP, compress (quality), resize (width, height, fit contain or cover, upscale, format), read metadata including any GPS position (metadata), strip EXIF, XMP and IPTC (strip), find its main colors (colors, count) or make favicons as a ZIP (favicon, crop fit, trim or center, name). Resize also accepts HEIC. Metadata and strip also accept GIF. Give image_base64 or storage_id, for example the result of an earlier call. Every result is stored for 24 hours and the answer carries its storage_id, so calls can be chained. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | For resize to a width and a height: contain keeps the whole image inside the box, cover fills the box and crops what sticks out. | |
| crop | No | For favicon: fit pads the image to a square, trim removes plain borders first and then pads, center fills the square and crops what sticks out. | |
| name | No | favicon only: the site name for the manifest. | |
| count | No | For colors, how many main colors to find, 2 to 16. | |
| width | No | Target width in pixels for resize, 1 to 10000. | |
| format | No | The output format for convert and resize: jpeg, png or webp. jpg is the same as jpeg. | |
| height | No | Target height in pixels for resize, 1 to 10000. | |
| quality | No | Quality from 40 to 95 for JPEG and lossy WebP output. | |
| upscale | No | For resize, true lets the image grow beyond its original size. | |
| lossless | No | For WebP output, true stores the image losslessly and ignores quality. | |
| operation | Yes | convert to another format, vectorize to SVG paths, compress, resize, read metadata, strip metadata, find the main colors, or make favicons. | |
| threshold | No | Brightness threshold in percent for vectorize. Higher values include lighter pixels. | |
| storage_id | No | A storage_id from store_file, from a previous tool result, or from REST /storage. Objects expire 24 hours after they were stored. | |
| image_base64 | No | The file as standard base64, at most about 190 KB of file through MCP. For a larger file, store it with REST POST /services/v1/storage first and pass storage_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive, non-idempotent, closed-world behavior, so the bar is lower; the description still adds real context: no API key/account required, results persist 24 hours and are keyed by storage_id enabling chained calls, and vectorize output is bounded to 1024x1024. It does not describe output payload shapes per operation, which is the remaining gap.
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?
It is a single dense paragraph but every clause carries information, grouped roughly by operation, with input mechanics and expiry placed at the end. The operation-to-parameter associations are scattered rather than front-loaded as a list, which slightly hurts scannability for a 14-parameter tool.
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 14-parameter, eight-operation tool with no output schema, the description covers supported formats, operation/parameter mapping, input sourcing, result persistence, and auth requirements. What is missing is any statement of return payloads (metadata contents, color output shape, ZIP structure), which matters given there is no output schema.
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%, so the baseline is 3. The description mostly restates what the schema documents (quality, lossless, threshold, width/height/fit, count, crop/name) and adds only a little meaning beyond it, notably the 1024x1024 trace bound for vectorize and the operation-to-parameter mapping (which params belong to which operation).
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 concrete resource (images) and enumerates each of the eight operations with the exact input/output formats they accept: convert JPEG/PNG/WebP/HEIC/SVG, vectorize PNG/JPEG to SVG paths, resize, compress, metadata, strip, colors, favicon. It is far more specific than the title and leaves no ambiguity about what the tool does.
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 operational routing guidance (which format each operation accepts, e.g. resize also accepts HEIC, metadata and strip also accept GIF) and explains how to supply input via image_base64 or storage_id, including chaining through returned storage_ids. There is no explicit when-not-to-use statement or pointer to an alternative, though no sibling tool overlaps with image processing, so the omission is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_semantic_searchSearch a semantic search collectionARead-onlyIdempotentInspect
Search the notes by meaning with the read token. Answers up to limit notes, 1 to 10 and 3 by default, best first, each with note_id, key, text and score. The score is cosine similarity, plus 0.1 for each identifier in the search that the note also holds, minus 0.1 for each kind where the note holds others of that kind and none of the search's. Each code prefix, such as DEMO- in DEMO-57, is one kind and numbers of three or more digits are another, with 1 200 read as 1200. The score is not a probability. The results are ranked suggestions, not a decision that a match exists: read the text before acting on it. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many notes to answer, 1 to 10, default 3. | |
| query | Yes | What to look for, in plain words, up to 500 characters. | |
| read_token | Yes | The read_token from create_semantic_search, shown once. It reads and searches the collection. | |
| collection_id | Yes | The collection_id from create_semantic_search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint=false), and the description adds genuinely useful context: no API key or account needed, the read token is required and comes from create_semantic_search, and results are capped at 10. However, it spends much of its length on scoring arithmetic rather than on operational behavior such as failure modes for an invalid or expired token.
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?
Purpose and result shape are front-loaded, which is good, but the middle is a dense block of scoring rules including edge cases like '1 200 read as 1200' that cost more attention than they return for tool selection. It is one undivided paragraph with no separation between what the tool does, what it returns, and how to interpret scores.
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?
There is no output schema, and the description fully compensates by naming the return fields (note_id, key, text, score) and explaining what the score means and its limits. Combined with annotations covering read-only and idempotent behavior, an agent has everything needed to call this correctly and interpret results.
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 coverage is 100%, so all four parameters and their bounds are already documented in structured form. The description restates the limit range and default ('1 to 10 and 3 by default') and mentions the read token without adding format or provenance detail beyond what the schema provides. Baseline 3 is appropriate.
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?
States a specific verb and resource ('Search the notes by meaning') and the credential it uses, so the operation is unambiguous. It does not explicitly differentiate itself from sibling read_semantic_search or add_semantic_search_notes, leaving the agent to infer that this is the ranked-retrieval path rather than the direct-read path.
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 real usage guidance in the caution that results are 'ranked suggestions, not a decision that a match exists: read the text before acting on it', which tells the agent how to treat output. It never states when to prefer this over read_semantic_search or add_semantic_search_notes, so alternative selection is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_agent_handoffRead an agent handoffBRead-onlyInspect
Read the state, payload, states, allowed transitions and history of a handoff with either token. wait_seconds, up to 25, waits for the state to change or the handoff to end before answering. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The owner_token or the receiver_token returned once at creation. Both read and advance; the history records which one acted. | |
| handoff_id | Yes | The handoff_id returned at creation; not a credential. | |
| wait_seconds | No | Wait up to this many seconds, 0 to 25, for the state to change before answering. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description adds the long-poll behavior of wait_seconds (up to 25 seconds, returning on state change or handoff end) and the no-API-key/no-account auth profile, which is genuinely useful. It does not explain the apparent tension with idempotentHint=false, i.e. that repeated calls with a wait can return different states, so the behavioral picture is helpful but incomplete.
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 first sentence front-loads the returned fields well, but the second sentence is syntactically awkward ('wait_seconds, up to 25, waits for...') and the third ('No API key, no account and no sign up') reads as marketing copy rather than operational detail.
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?
With no output schema, the description compensates by enumerating the returned fields, and it covers auth and the wait parameter. Only the interaction between read-only semantics and the non-idempotent wait behavior is left unaddressed.
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 coverage is 100%, so the schema already documents token, handoff_id, and wait_seconds thoroughly. The description only reinforces that either token works and restates the wait_seconds semantics, so baseline 3 is appropriate.
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 uses a specific verb (read) plus the resource (a handoff) and enumerates what is returned: state, payload, states, allowed transitions, and history. An agent can distinguish it from siblings like advance_agent_handoff or read_agent_run by the read-only framing, though no sibling is named explicitly.
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 implies the polling use case through wait_seconds: use it to block until the state changes or the handoff ends. There is no explicit when-not guidance and no named alternative, so the agent must infer that advance_agent_handoff is the mutating counterpart on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_agent_inboxRead agent inboxARead-onlyIdempotentInspect
Read the mail that has arrived in an inbox from create_agent_inbox. Each message carries the sender, the subject, the arrival time in UTC, the cleaned text, any standalone 4 to 8 digit codes found in that text and any public http or https links. Attachments and raw headers are not stored. Set wait_seconds from 1 to 25 to wait for the next message, or zero to read immediately. An empty inbox is the ordinary answer before mail arrives and is not a failure. When truncated is true, at least one whole message was refused because the inbox had reached its 20 message cap or its 256 KiB total text cap. A code you are waiting for may then have been turned away rather than delayed. The reply names the public slug and never repeats the secret inbox_id. An unknown inbox_id and a wrong one fail in the same way, so neither can be told from the other, while an expired inbox says that it expired. No API key, account or sign up is required.
| Name | Required | Description | Default |
|---|---|---|---|
| inbox_id | Yes | The secret UUID that create_agent_inbox returned as inbox_id. Not the slug and not the address. | |
| wait_seconds | No | Wait up to this many seconds for new mail. Zero returns immediately. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| slug | Yes | |
| address | Yes | |
| messages | Yes | |
| received | Yes | |
| truncated | Yes | True once at least one whole message has been refused, by the 20 message cap or by the 256 KiB total text cap. Messages already stored are kept. |
| wait_reason | Yes | |
| waited_seconds | Yes | |
| expire_timestamp | Yes | |
| created_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent, and the description adds substantial behavioral detail: attachments and raw headers are not stored, 20-message and 256 KiB caps with truncation semantics, the reply uses a public slug and never repeats the secret inbox_id, unknown and wrong inbox_id fail identically while expired inboxes differ, and no API key or account is required. This covers safety, failure modes, and response nuances.
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?
Longer than average, but every sentence carries distinct operational information: content shape, omitted attachments/headers, wait behavior, normal empties, truncation consequences, identifier secrecy, failure indistinguishability, and lack of auth. It is front-loaded with purpose and contains no filler.
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 read tool with readOnly and idempotent annotations, an output schema, and full parameter schema coverage, the description supplies all missing behavioral context an agent needs: caps, truncation, empty semantics, failure modes, and identifier handling. Nothing essential is left unexplained.
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%, so the schema already defines both parameters. The description adds value by clarifying wait_seconds behavior, the meaning of an empty result, truncation consequences, and inbox_id secrecy/failure behavior, going beyond the schema without needing to repeat field-level format details.
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 'Read the mail that has arrived in an inbox from create_agent_inbox', naming a specific verb and resource and referencing the creating sibling. It is clearly the agent-inbox reader, distinct from read_heartbeat, read_human_approval, read_webhook_capture, and read_temporary_data.
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 clear operational guidance: wait_seconds 0 returns immediately, 1 to 25 waits, an empty inbox is a normal pre-delivery result, and truncation means a message may have been refused. It doesn't explicitly contrast with sibling read tools, but the tool name and context make the domain unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_agent_queueRead agent queueARead-onlyIdempotentInspect
Read queue metadata and pending, claimed, completed and failed counts using the read token. Does not list payloads, disclose role tokens or extend the fixed expiry.
| Name | Required | Description | Default |
|---|---|---|---|
| queue_id | Yes | The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps. | |
| read_token | Yes | The read_token from create_agent_queue, shown once. It reads the queue and its jobs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| counts | Yes | |
| queue_id | Yes | |
| expire_timestamp | Yes | |
| created_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world behavior, so the bar is lower, yet the description adds real operational context: it will not disclose role tokens or extend the fixed expiry, and it requires the read token. It does not mention rate limits or whether counts are eventually consistent, which keeps it off a 5.
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, zero filler, with the positive scope front-loaded and the exclusions trailing. No redundant restatement of the title or schema.
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?
With an output schema present, return shape need not be explained, and annotations cover the safety profile, so the remaining needs are auth and limits, both addressed. Minor gaps around count freshness and token-scope failures are the only omissions.
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 coverage is 100% and both parameters carry descriptions pointing to create_agent_queue and create_agent_run for provenance, so the schema does the heavy lifting. The description only reinforces that the token is the read credential, which is marginal added meaning.
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?
States a specific verb (read) and resource (queue metadata) and enumerates exactly what comes back: pending, claimed, completed and failed counts. The clause 'Does not list payloads' implicitly separates it from read_agent_queue_job, though no sibling is named directly.
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 establishes the precondition (a read token) and negative scope, so an agent can infer this is for status monitoring rather than job payload retrieval. However, it never states when to prefer this over read_agent_queue_job or read_agent_run, leaving the routing decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_agent_queue_jobRead agent queue jobARead-onlyIdempotentInspect
Read one known job, its JSON payload and status using the read token. The active claim receipt and role tokens are never returned by this operation.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id from enqueue_agent_queue_job or claim_agent_queue_job. | |
| queue_id | Yes | The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps. | |
| read_token | Yes | The read_token from create_agent_queue, shown once. It reads the queue and its jobs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| job | Yes | |
| queue_id | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, closed-world semantics, so the description earns credit for the extra disclosure that the active claim receipt and role tokens are never returned — a real security-relevant behavior not present in the schema. It does not describe behavior on unknown job_id or invalid read_token, which keeps it below a 5.
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, front-loaded with the action and resource, second sentence dedicated to the exclusion set. No filler and nothing buried.
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?
An output schema exists, so return values needn't be itemized, and the description adds the key exclusion about claim receipts and role tokens. Missing only error/empty behavior for a stale job_id or read_token, which an agent calling this repeatedly would want.
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 coverage is 100% and each parameter carries a description naming its source tool and format pattern, so the schema does the heavy lifting. The phrase 'using the read token' merely restates what the schema already documents.
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?
States a specific verb and resource (read one job) plus what is returned (JSON payload and status), and the qualifier 'one known job' implicitly separates it from the queue-listing sibling read_agent_queue. It stops short of naming that sibling explicitly, so an agent must infer the boundary.
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?
'Read one known job' implies you must already hold a job_id, which is the main precondition, but the description never states when to use this versus read_agent_queue, claim_agent_queue_job, or ack/release variants. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_agent_runRead an agent runARead-onlyInspect
Read a run's status, steps, results and time left. A control token also sees the form_url and wake_url of a step waiting for an answer, each a link to hand to whoever should answer. wait_seconds, up to 25, waits for a change or the end before answering. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | The read_token or the control_token returned once at creation. | |
| run_id | Yes | The run_id returned at creation; not a credential. | |
| wait_seconds | No | Wait up to this many seconds, 0 to 25, for the run to change before answering. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description discloses two behaviors the annotations cannot: that token privilege level changes what is returned (control token reveals form_url and wake_url), and that wait_seconds converts the call into a blocking wait for a change or terminal state. It also states the auth requirement (no API key, account or sign up).
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?
Four short sentences with the resource and return contents front-loaded, followed by the token-privilege and wait behaviors. The closing "No API key, no account and no sign up" is somewhat promotional in tone but does carry the auth fact, so it is not pure waste.
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?
With no output schema and no annotations covering privileges or timing, the description does the necessary work: it names the returned fields, the conditional extra fields, and the blocking behavior. Minor gaps remain around pagination of steps/results and what a terminal run state looks like.
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 coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: it explains the consequence of passing a control token (extra answer links) and frames wait_seconds as waiting for a change or the end before answering rather than a plain sleep. It does not clarify the read_token-vs-control_token distinction beyond the schema's own wording.
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 resource ("Read a run's status, steps, results and time left") and enumerates the returned facets, which cleanly separates it from siblings such as cancel_agent_run, create_agent_run and complete_agent_run_step. An agent can identify the operation without inspecting the schema.
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 rather than stated: it explains that a control token additionally exposes form_url/wake_url "to hand to whoever should answer" and that wait_seconds waits for a change, which hints at the polling pattern. However, it never states when to choose this tool over read_agent_handoff, read_agent_queue_job or read_agent_inbox, and gives no when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_dns_nameRead a temporary DNS nameARead-onlyIdempotentInspect
Look up what a temporary DNS name points at and how long it has left. No token is needed: everything it returns is already public in DNS. Use it to confirm a name exists and resolves the way you expect before handing it to someone else. It fails once the name has expired, and a name stops answering in the same second it falls due.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The slug the service assigned, without the aisense- prefix and without the zone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | Yes | |
| ok | Yes | |
| ttl | Yes | |
| name | Yes | |
| slug | Yes | |
| record | Yes | |
| serial | No | |
| expire_at | Yes | |
| nameservers | Yes | |
| expire_timestamp | Yes | |
| created_at_timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses that no token is required, that all returned data is already public in DNS, and that the lookup fails once the name expires, including the exact timing of expiry. This is valuable behavioral context the annotations do not 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?
Three concise sentences, with the main purpose front-loaded and no filler. Each sentence adds relevant information: what it does, authentication implications, usage context, and failure behavior.
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-only tool with an output schema and comprehensive annotations, the description covers all the extra context an agent needs: purpose, usage, auth requirements, and expiry behavior. Nothing important is missing.
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 covers the only parameter, slug, with a clear description including the pattern, length, and the instruction to omit the prefix and zone. With 100% schema description coverage, the description does not need to add more, and it doesn't, so the baseline score of 3 is appropriate.
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 ('Look up') and resource ('temporary DNS name'), and specifies what it returns: the target and remaining lifetime. It is clearly distinguishable from sibling tools like create_dns_name, delete_dns_name, and update_dns_name.
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 clear use context: confirm a name exists and resolves as expected before handing it to someone else. It also notes that no token is needed. It does not explicitly contrast with alternatives, but the use case is specific enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_heartbeatRead heartbeatARead-onlyIdempotentInspect
Read one heartbeat immediately. Use it to inspect whether the monitor is armed, missed, fired or expired, whether it is running late, and its next deadline. This does not wait for a state change. The heartbeat ID is a 256-bit bearer secret. No authentication is required.
| Name | Required | Description | Default |
|---|---|---|---|
| heartbeat_id | Yes | The secret heartbeat ID returned by create_heartbeat. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| late | Yes | |
| misses | Yes | |
| status | Yes | |
| on_miss | Yes | |
| delivery | No | |
| ping_url | Yes | |
| ping_count | Yes | |
| status_url | Yes | |
| heartbeat_id | Yes | |
| grace_seconds | Yes | |
| missed_at_datetime | No | |
| created_at_datetime | Yes | |
| expires_at_datetime | Yes | |
| missed_at_timestamp | No | |
| created_at_timestamp | Yes | |
| expect_every_seconds | Yes | |
| expires_at_timestamp | Yes | |
| miss_due_at_datetime | Yes | |
| terminal_at_datetime | No | |
| last_ping_at_datetime | Yes | |
| miss_due_at_timestamp | Yes | |
| terminal_at_timestamp | No | |
| last_ping_at_timestamp | Yes | |
| next_expected_at_datetime | Yes | |
| next_expected_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description adds meaningful behavioral context: it reads immediately without waiting, the heartbeat ID is a 256-bit bearer secret, and no authentication is required. These details clarify security expectations and non-blocking behavior without contradicting the annotations.
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 description is compact and front-loaded with the core action. Each sentence earns its place: what the tool does, what it inspects, the non-waiting behavior, and the security-relevant bearer-secret/no-auth clarification. There is no filler or repetition of schema details.
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-only tool with an output schema, the description covers the essential context: what state information is available, that it is non-blocking, that the ID is a secret, and that authentication is not required. Nothing an agent needs to decide whether to call this tool is missing.
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 coverage is 100% and the single parameter is already described as the secret heartbeat ID returned by create_heartbeat. The description adds further meaning by emphasizing that the ID is a 256-bit bearer secret and that no authentication is required, which goes beyond the schema and helps the agent handle the parameter correctly.
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 resource ('Read one heartbeat immediately') and then enumerates exactly what can be inspected: armed, missed, fired, expired, running late, and next deadline. This distinguishes it from the sibling create_heartbeat and ping_heartbeat by focusing on immediate status inspection rather than creation or waiting.
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 clearly states the intended use ('Use it to inspect whether...') and explicitly notes that it does not wait for a state change, which guides an agent away from using this tool for blocking or state-transition waiting. It does not name a specific alternative tool, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_human_approvalRead human approvalARead-onlyIdempotentInspect
Check whether the person has answered a form from create_human_approval, and read the answer. For a group, partial means at least one person has answered and answered means all form links are complete. The group view contains counts, a tally and anonymous respondent numbers, never form tokens or notification settings. Set wait_seconds from 1 to 25 to wait for a change, or zero to read immediately. No API key, account or sign up is required.
| Name | Required | Description | Default |
|---|---|---|---|
| action_id | Yes | The UUID that create_human_approval returned. | |
| wait_seconds | No | Wait up to this many seconds for a new answer. Zero returns immediately. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| tally | No | |
| status | Yes | |
| answered | No | |
| response | Yes | |
| action_id | Yes | |
| responses | No | |
| respondents | No | |
| wait_reason | Yes | |
| waited_seconds | Yes | |
| expire_datetime | Yes | |
| expire_timestamp | Yes | |
| created_at_datetime | Yes | |
| answered_at_datetime | Yes | |
| created_at_timestamp | Yes | |
| answered_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds meaningful behavioral detail: group semantics, what the group view contains and never contains, the effect of wait_seconds, and the lack of authentication requirements. No annotation contradiction exists.
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 purpose is front-loaded, and the remaining sentences each carry essential information: group behavior, group-view privacy constraints, wait behavior, and authentication requirements. There is no filler.
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 read tool with a known output schema and safety annotations, the description covers everything an agent needs: what action to read, polling semantics, group interpretation, privacy boundaries, and auth requirements. Nothing essential is missing.
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 both parameters already have descriptive text. The description reinforces action_id as the UUID from create_human_approval and frames wait_seconds as waiting 'for a change,' but it does not add substantial parameter meaning beyond the schema.
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 resource: 'Check whether the person has answered a form from create_human_approval, and read the answer.' It clearly ties the tool to its create-sibling and distinguishes it from the other read tools available.
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 strong contextual guidance: it tells when to use it (after create_human_approval), explains partial vs. answered for groups, and prescribes wait_seconds behavior from 1 to 25 or 0 for immediate reads. It does not explicitly name alternatives or exclusions, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_one_time_secret_receiptRead one-time secret statusARead-onlyIdempotentInspect
Read status and timestamps using the separate receipt token. Never returns ciphertext or plaintext and does not consume the secret. Status is a server event, not proof a person read it. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| secret_id | Yes | The secret_id returned at creation; not a credential. | |
| receipt_token | Yes | The receipt_token returned once at creation. Reads metadata or burns; cannot reveal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and idempotent, and the description adds substantive behavior beyond that: it never returns ciphertext or plaintext, it does not consume the secret, the status reflects a server event rather than proof of human reading, and no credentials/account are needed. These are exactly the traits an agent needs before calling a receipt-based read.
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?
Four short sentences, front-loaded with the action and the most important constraint (no plaintext, no consumption). The trailing 'No API key, no account and no sign up' is slightly redundant with openWorldHint=false but still conveys auth-free access in one line.
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 two-parameter read with no output schema, the description covers the essentials: what is returned (status and timestamps) and what is not (secret contents). The only gap is that the possible status values or their meaning are not enumerated, which would help an agent interpret results.
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 coverage is 100%, with both secret_id and receipt_token documented including their hex patterns and the note that receipt_token 'reads metadata or burns; cannot reveal'. The description reinforces that the receipt token is separate and non-credential, but adds little beyond the schema, so baseline 3 is appropriate.
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?
States a specific verb and resource (read status/timestamps of a one-time secret) with the key scoping constraint that it uses the receipt token and does not consume the secret. This implicitly but clearly separates it from reveal_one_time_secret (returns no ciphertext/plaintext) and burn_one_time_secret (does not consume), so an agent can pick correctly without opening schemas.
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?
Gives a clear condition for use: check status/timestamps with the separate receipt token without burning the secret. It does not explicitly name the alternative tools (reveal_one_time_secret, burn_one_time_secret) or state when-not to use it, but the negative constraints (no plaintext, no consumption) effectively define the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_qr_codeRead QR codes in an imageARead-onlyIdempotentInspect
Read the QR codes in a PNG, JPEG, GIF or WebP image. Several codes come back joined by newlines. Give image_base64 or storage_id. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| storage_id | No | A storage_id from store_file, from a previous tool result, or from REST /storage. Objects expire 24 hours after they were stored. | |
| image_base64 | No | The file as standard base64, at most about 190 KB of file through MCP. For a larger file, store it with REST POST /services/v1/storage first and pass storage_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses the return shape ('several codes come back joined by newlines') and the auth posture ('no API key, no account, no sign up'), both of which the annotations do not convey. It does not say what happens when no code is found, which keeps it from a 5.
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?
Three short sentences, front-loaded with the core action and formats, then return behavior, then auth reassurance. Nothing is redundant or buried.
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 two-parameter read tool with no output schema, the description covers formats, input choice, return encoding, and auth. Only the empty-result / error case is left unspecified, a minor gap given the tool's simplicity.
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 both parameters are already well documented, including the 24-hour expiry and the size limit. The description's 'Give image_base64 or storage_id' only restates the either/or choice already implied by the schema, adding no size, format, or expiry detail.
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?
States a specific verb ('read') and resource ('QR codes') plus the exact accepted image formats (PNG, JPEG, GIF, WebP), which cleanly separates it from the sibling create_qr_code. An agent can pick it without opening the schema.
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 tells the caller to 'Give image_base64 or storage_id', which is input guidance rather than when-to-use guidance. There is no explicit statement of when to prefer storage_id over base64 (that lives only in the schema) and no when-not or alternative-tool routing, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_semantic_searchRead a semantic search collectionARead-onlyIdempotentInspect
Read the model, the number of notes, the notes added over the lifetime, the note limit and the expiry of a collection with the read token. Notes are found by searching. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| read_token | Yes | The read_token from create_semantic_search, shown once. It reads and searches the collection. | |
| collection_id | Yes | The collection_id from create_semantic_search. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavior: access is token-based rather than API key/account ('No API key, no account and no sign up') and it discloses what the response contains, which matters because there is no output schema. It stops short of covering error cases (invalid/revoked token) or rate limits.
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 first sentence is dense but front-loads the returned fields correctly. The trailing 'No API key, no account and no sign up' is promotional framing that does little to help an agent select or invoke the tool, and the phrasing 'Read the model' is slightly awkward for what is collection metadata.
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?
With only two fully documented parameters, complete annotations and no output schema, the description does the one thing it must: enumerate the fields returned so the agent knows what it gets back. Only the absence of failure-mode behavior keeps it from being fully complete.
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 coverage is 100% and both parameters carry their own descriptions tying them to create_semantic_search, including the 'shown once' caveat for read_token. The prose adds nothing about parameter format or sourcing beyond what the schema already documents, so the baseline 3 applies.
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 the resource (a semantic search collection) and enumerates exactly what is read: model, note count, lifetime notes added, note limit, expiry. The clause 'Notes are found by searching' signals that note content is not returned here, implicitly separating it from the search/query siblings, though it never names 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?
Usage is only implied: you need the read_token, which the schema ties back to create_semantic_search, so an agent can infer this is the status/inspection call after creation. There is no explicit when-to-use statement and no named alternative (e.g. query_semantic_search for actual note retrieval) — the routing hint is oblique rather than directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_stored_fileRead a stored fileARead-onlyIdempotentInspect
Read a stored object by storage_id. JSON comes back as data, an image as an image, and any other file, such as a PDF from html_to_pdf or a ZIP from process_image, as an embedded resource of at most 4 MB. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| storage_id | Yes | A storage_id from store_file, from a previous tool result, or from REST /storage. Objects expire 24 hours after they were stored. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so safety is covered. The description adds genuinely new behavior: the return shape varies by content type (JSON as data, image as image, anything else as an embedded resource) and the 4 MB size ceiling, which an agent needs to know before pulling a large PDF. The auth disclosure ('no API key, no account') is useful but borders on promotional.
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?
Front-loaded with the action and identifier, followed by the return-type breakdown and the size cap, all in three tight sentences. The closing 'No API key, no account and no sign up' is the one clause that reads as marketing filler rather than operational detail.
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?
With no output schema and a single parameter, the description carries the burden of describing return values — and it does so by content type with a concrete size limit, which is exactly what an agent needs. It does not say what happens when the object has expired or the id is unknown, a minor omission given the schema already flags the 24-hour window.
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 storage_id property already documents the UUID pattern, valid sources, and the 24-hour expiry. The description adds only the phrase 'by storage_id', so the schema is doing the heavy lifting — the correct baseline of 3.
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?
States a specific verb and resource — 'Read a stored object by storage_id' — immediately distinguishing it from store_file and the other read_* siblings that return different artifact types. The mention of html_to_pdf and process_image as producers of readable content ties the tool to concrete upstream siblings an agent already knows.
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 by the input requirement (you need a storage_id, which comes from store_file, a prior tool result, or REST /storage). However, there is no explicit when-to-use or when-not guidance relative to read_temporary_data, read_one_time_secret_receipt, or read_webhook_capture, which are the plausible confusable siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_temporary_dataRead temporary dataARead-onlyIdempotentInspect
Fetch back a JSON value that store_temporary_data saved earlier, in this session or in another one. Returns the value exactly as it was stored. Fails if the id is unknown or if the 24 hour lifetime has already passed, so treat a failure as expired or never written rather than as a temporary fault worth retrying. sha256_hash is the digest of the stored bytes and bytes their length, the same values store_temporary_data reported. A value stored with max_downloads answers downloads_left, how many reads remain, and is gone once they are taken. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| storage_id | Yes | The UUID that store_temporary_data returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | |
| bytes | Yes | |
| storage_id | Yes | |
| sha256_hash | Yes | |
| downloads_left | No | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses the 24-hour lifetime, the meaning of failure, the returned digest and byte length, and the max_downloads consumption model (downloads_left, value gone once reads are taken). It also notes no API key or account is required, which matters for agent planning. This is exactly the kind of behavior an agent cannot infer from the annotations.
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 core action and its return semantics are front-loaded, and every sentence carries operational information. It is somewhat run-on and the closing 'No API key, no account and no sign up' is marketing-flavored, but it still conveys a real constraint on usage.
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 one-parameter read tool with an output schema, the description covers lifetime, failure interpretation, return fields, and download-limited values — everything an agent needs to call it and react to results correctly. Nothing material is left unspecified.
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 coverage is 100% and the single parameter is already documented as a UUID from store_temporary_data, so the schema does the heavy lifting. The description adds the consequence of using an id with max_downloads (reads deplete the value) and ties the id's provenance back to the store call, which is meaning beyond the schema.
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?
States a specific verb and resource ('Fetch back a JSON value that store_temporary_data saved earlier') and names the paired write tool, so an agent can immediately tell this is the read side of a store/read pair. It also scopes the retrieval to 'in this session or in another one', clarifying cross-session reach.
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 clear from context: call it with an id returned by store_temporary_data. It goes further than most by giving a decision rule for failures ('treat a failure as expired or never written rather than as a temporary fault worth retrying'), which directly shapes agent retry behavior. It does not, however, explicitly contrast with a sibling such as read_stored_file, leaving that boundary to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_webhook_captureRead webhook captureARead-onlyIdempotentInspect
Check whether anything has been sent to a capture URL yet, and read it. The status field is pending or captured. Pending is the ordinary answer before the sender fires and is not a failure. Set wait_seconds from 1 to 25 to wait efficiently for the first request. The call returns early when the capture changes. Zero reads the current state immediately. Unknown and expired IDs fail. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| capture_id | Yes | The UUID that create_webhook_capture returned. | |
| wait_seconds | No | Wait up to this many seconds for a request. Zero returns immediately. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| status | Yes | |
| request | Yes | |
| capture_id | Yes | |
| wait_reason | Yes | |
| waited_seconds | Yes | |
| expire_datetime | Yes | |
| expire_timestamp | Yes | |
| created_at_datetime | Yes | |
| captured_at_datetime | Yes | |
| created_at_timestamp | Yes | |
| captured_at_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and closed-world, so the safety profile is covered; the description still adds real value by explaining that pending is a normal pre-fire state and not a failure, that the call returns early when the capture changes, and that no API key or account is needed. It does not describe what a captured payload contains, though the output schema likely carries that. A solid but not exceptional add-on beyond annotations.
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?
Purpose is front-loaded in the first sentence, followed by status semantics, waiting guidance, and error/credential facts. The telegraphic sentence fragments are dense and nearly waste-free, though the style is clipped enough that a slightly more connected phrasing would read better.
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?
With an output schema present, return values need no explanation; the description instead covers the things an agent actually needs to call it correctly: status values, that pending is not an error, wait semantics, and failure modes for unknown/expired IDs. Nothing material is missing for a two-parameter read tool.
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 coverage is 100% and both parameters are documented in the schema, including the 0–25 range and the zero-means-immediate rule, so the baseline is 3. The description restates the range and adds the early-return-on-change behavior, which is marginal value over the schema rather than new semantics.
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?
"Check whether anything has been sent to a capture URL yet, and read it" gives a specific verb (check/read) and resource (capture), and the capture_id schema ties it back to create_webhook_capture. It does not explicitly name the sibling creator/reader pair, but the read-only framing is unmistakable.
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 clearly states when to use the wait parameter vs. not ("Set wait_seconds from 1 to 25 to wait efficiently for the first request... Zero reads the current state immediately") and warns that unknown and expired IDs fail. It stops short of naming an alternative tool, but within this tool's scope the when-to-use guidance is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_webhook_scheduleRead a scheduled webhookARead-onlyInspect
Read a scheduled webhook: its status, attempts and, after it fired, the HTTP status and an excerpt of the answer. wait_seconds, up to 25, waits for the status to change before answering. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| schedule_id | Yes | The schedule_id from schedule_webhook. | |
| wait_seconds | No | Wait up to this many seconds, 0 to 25, for the status to change before answering. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered, but idempotentHint=false is unusual for a read and the description does not explain it. The wait_seconds long-polling behavior is genuine added context, yet the description says nothing about what happens on timeout, whether the wait counts against any limit, or how a non-existent or never-fired schedule is reported. Some behavioral value is added; important edges remain unstated.
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?
Three short sentences: purpose and payload first, then the waiting mechanic, then access terms. The return contents are front-loaded where an agent needs them. "No API key, no account and no sign up" is slightly promotional but does carry real access information, so it mostly earns its place.
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?
With only two parameters and no output schema, the main risk is the agent not knowing what comes back; the description mitigates that by naming status, attempts, HTTP status, and a response excerpt. The long-poll semantics of wait_seconds are also covered. Remaining gaps are failure and timeout behavior, which are secondary for a low-complexity read tool.
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%, so both parameters are fully documented with type, range, and the UUID pattern. The description's mention of "wait_seconds, up to 25" restates the schema rather than extending it, adding no format or edge-case detail. Baseline 3 is appropriate where the schema does the heavy lifting.
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 and resource ("Read a scheduled webhook") and goes further by enumerating what is returned: status, attempts, and post-fire HTTP status plus an excerpt of the response. That is well beyond a restatement of the name. It does not explicitly contrast itself with schedule_webhook or cancel_webhook_schedule, so sibling differentiation is left to the reader, which keeps it from a 5.
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 a clear context for use, including the specific polling pattern: pass wait_seconds to block until the status changes rather than re-calling repeatedly. Access prerequisites are stated (no API key, no account, no sign up). There is no explicit when-not guidance or named alternative, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_agent_queue_jobRelease agent queue jobADestructiveInspect
Return a claimed job to pending using the worker token and its current receipt. On the fifth claim it becomes failed. The receipt is invalidated. Stale receipts conflict.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id of the claimed job. | |
| receipt | Yes | The receipt from the current claim. A newer claim or a release makes it stale. | |
| queue_id | Yes | The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps. | |
| worker_token | Yes | The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| job | Yes | |
| queue_id | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the receipt is invalidated by the call, stale receipts produce a conflict, and repeated claims escalate to a failed state on the fifth claim — all of which matter for a destructive, non-idempotent operation.
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?
Four short sentences, front-loaded with the core action and effect, no filler. A couple of telegraphic fragments ('The receipt is invalidated. Stale receipts conflict.') are dense but still parse cleanly.
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 destructive, strictly-validated four-parameter mutation with an output schema, the description covers the failure and conflict semantics an agent needs before calling. Minor gaps remain around whether the worker immediately loses the job and what a conflict response looks like, but the output schema carries the return side.
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%, so all four parameters are already documented, including the receipt-staleness note and the worker_token's provenance. The description adds only the relational detail that the token and receipt must be the current pair, which is marginal beyond the schema baseline.
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?
States a specific verb and resource: 'Return a claimed job to pending using the worker token and its current receipt.' An agent can distinguish this from claim_agent_queue_job, ack_agent_queue_job, and renew_agent_queue_job without opening any schema, since those do not return a job to pending.
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 by the semantics of returning a job to pending, and the fifth-claim failure rule hints at retry behavior, but the description never explicitly contrasts this with ack_agent_queue_job (terminal success) or renew_agent_queue_job (extend the claim). The agent must infer when to release versus acknowledge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_leaseRelease leaseAInspect
Give up a lease before its TTL ends so another agent can acquire the work. Use it when abandoning work without a reusable result. The secret owner token is required. No authentication is required.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Work identity. With a namespace use 1 to 128 URL-safe ASCII characters, starting with a letter or digit. Without one use a caller-generated secret of 32 to 200 ASCII characters from A-Z, a-z, 0-9, dot, underscore, colon, tilde or hyphen, with at least eight distinct characters. | |
| namespace | No | Optional 256-bit namespace from create_lease_namespace. Keep it secret. | |
| owner_token | Yes | Secret owner token returned by acquire_lease. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| owner_token | No | |
| ttl_seconds | No | |
| completed_at | No | |
| fencing_token | No | |
| lease_expires_at | No | |
| absolute_expires_at | No | |
| retry_after_seconds | No | |
| completed_at_timestamp | No | |
| lease_expires_at_timestamp | No | |
| absolute_expires_at_timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent, non-destructive operation. The description adds valuable context: it releases the lease before TTL ends, requires the secret owner token, and explicitly states 'No authentication is required.' This goes beyond the annotations by clarifying the authorization model and the effect on other agents. It doesn't mention what happens to the lease's data or whether the release is permanent, but the core behavior is well disclosed.
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?
Three sentences, each earning its place: the action and purpose, the usage condition, and the required token plus auth note. The most important information is front-loaded. No fluff or repetition of schema details.
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 mutating lease operation with a clear schema and output schema, the description covers the essential context: when to use it, what it does, and the key prerequisite. It could mention what the response contains or what happens to the lease after release, but the output schema likely covers that. The description is complete enough for an agent 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?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds the context that owner_token is the 'secret owner token' and that it is required, but this is also in the schema. The description does not add new parameter-level meaning beyond what the schema provides, so a baseline 3 is appropriate.
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 action ('Give up a lease before its TTL ends'), the resource ('a lease'), and the purpose ('so another agent can acquire the work'). It also distinguishes the tool from siblings like renew_lease and complete_lease by specifying the use case of abandoning work without a reusable result.
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 explicitly says when to use this tool ('when abandoning work without a reusable result') and implies when not to use it (when there is a reusable result, presumably complete_lease). It also mentions the required secret owner token, which is a key prerequisite. This is strong guidance for an agent deciding between release_lease and related lease tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renew_agent_queue_jobRenew agent queue jobAInspect
Move the active claim deadline using the worker token and current receipt. Visibility accepts 30-900 seconds, defaults to 60 seconds and is capped by the original queue expiry. A stale or expired receipt is a conflict. Queue lifetime is never extended.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job_id of the claimed job. | |
| receipt | Yes | The receipt from the current claim. A newer claim or a release makes it stale. | |
| queue_id | Yes | The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps. | |
| worker_token | Yes | The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them. | |
| visibility_timeout | No | Claim visibility in seconds, capped by the fixed queue expiry. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| job | Yes | |
| queue_id | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare write, non-idempotent, non-destructive, closed-world; the description adds real substance with the 30-900s range, the 60s default, the cap at the original queue expiry, conflict semantics for stale receipts, and the explicit guarantee that queue lifetime is not extended. The main remaining gap is whether a successful renewal rotates or preserves the receipt, which matters given idempotentHint=false.
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?
Four short sentences, front-loaded with the action, then the constraint, then the failure mode, then the invariant. No filler and nothing buried.
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 non-idempotent mutation with full schema coverage, annotations, and an output schema, the description covers limits, defaults, failure, and invariants well. The one unresolved point an agent would want is post-renewal receipt validity, which the output schema may cover but the description leaves unstated.
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 coverage is 100%, so every parameter is already documented, including the visibility_timeout bounds and default. The description largely restates the visibility constraints and adds only light framing around the worker token and receipt being the credentials for the call.
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?
States a specific verb and resource: move the active claim deadline, using the worker token and current receipt. This clearly separates it from acquire/claim (initial claim), release_agent_queue_job (give up), and renew_lease (a different lease subsystem).
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?
Implies the correct usage context (you hold an active claim with a receipt) and states the failure condition: a stale or expired receipt is a conflict. It does not explicitly name the alternative tools for other lifecycle stages, so an agent must infer that claim/release are the siblings for those cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renew_leaseRenew leaseAInspect
Extend a lease that this caller still owns. Use it before the current TTL ends when work is still running. The owner token is required and must stay secret. Renewal cannot move the absolute 24 hour limit. No authentication is required.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Work identity. With a namespace use 1 to 128 URL-safe ASCII characters, starting with a letter or digit. Without one use a caller-generated secret of 32 to 200 ASCII characters from A-Z, a-z, 0-9, dot, underscore, colon, tilde or hyphen, with at least eight distinct characters. | |
| namespace | No | Optional 256-bit namespace from create_lease_namespace. Keep it secret. | |
| owner_token | Yes | Secret owner token returned by acquire_lease. | |
| ttl_seconds | No | The new lease length in seconds from now, 1 to 86400, default 60. It cannot pass the absolute 24 hour limit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| error | No | |
| result | No | |
| status | Yes | |
| owner_token | No | |
| ttl_seconds | No | |
| completed_at | No | |
| fencing_token | No | |
| lease_expires_at | No | |
| absolute_expires_at | No | |
| retry_after_seconds | No | |
| completed_at_timestamp | No | |
| lease_expires_at_timestamp | No | |
| absolute_expires_at_timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say this is a non-read-only, non-idempotent, non-destructive local operation), the description discloses the hard 24-hour absolute ceiling that TTL renewal cannot exceed and the secrecy requirement on the owner token. It omits what happens on an expired lease or invalid token, which would complete the picture for a non-idempotent mutation.
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?
Five short sentences, front-loaded with the action and the timing condition, with no filler. The final 'No authentication is required' sentence is useful but sits slightly at odds with the required secret owner token, making the ending a touch abrupt.
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?
With an output schema present, return values need no explanation, and the schema fully documents parameters. For a four-parameter mutation with annotations, the description covers purpose, timing, secrecy, and the renewal ceiling — only failure modes (expired lease, wrong owner) are unaddressed.
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%, so key, namespace, owner_token, and ttl_seconds are all documented in the schema itself. The description only echoes the owner-token secrecy and the 24-hour cap, both already present in the schema text, so it adds little parameter meaning beyond structured data.
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?
States a specific verb ('Extend') and resource ('lease') with an ownership qualifier ('that this caller still owns'), which meaningfully separates it from acquire_lease, complete_lease, and release_lease. It does not explicitly name any sibling, so differentiation is inferential rather than stated.
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?
'Use it before the current TTL ends when work is still running' gives a clear triggering condition and implicit exclusion (do not call when work is done — use complete_lease/release_lease instead), but those alternatives are never named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reveal_one_time_secretConsume one encrypted secretADestructiveInspect
Destructively consume and return ciphertext using the read token. Decrypt locally; never send the key to MCP. Consumption happens before the response: a lost response cannot be recovered by retrying. Reveal only with explicit intent; never automatically retry. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| secret_id | Yes | The secret_id returned at creation; not a credential. | |
| read_token | Yes | The read_token returned once at creation. Authorizes one destructive ciphertext reveal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses critical behavior an agent could not otherwise know: consumption commits before the response is returned, so a dropped response is unrecoverable, and decryption must happen locally with the key never sent to the server. This directly reinforces and extends destructiveHint and idempotentHint=false with operational consequences.
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 most important fact, destructive consumption, is front-loaded, and the retry warning is tight and actionable. The trailing 'No API key, no account and no sign up' does not help an agent decide or invoke correctly and is the one expendable clause.
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?
With no output schema, the description correctly states that ciphertext is returned and must be decrypted locally, which is the essential return contract. It omits the ciphertext encoding/algorithm details, but the irreversibility warning and local-decryption requirement cover the highest-risk unknowns for a 2-parameter destructive tool.
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%, including formats and what each credential means, so the baseline is 3. The description mentions 'the read token' but adds no format or validation detail beyond the schema; 'No API key, no account and no sign up' is onboarding copy, not parameter meaning.
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?
States a specific verb and resource: 'Destructively consume and return ciphertext using the read token.' The 'destructive' framing implicitly separates it from read_one_time_secret_receipt, but no sibling is named explicitly, so an agent must infer that burn_one_time_secret is different.
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?
'Reveal only with explicit intent; never automatically retry' gives a clear use condition and an explicit prohibition. It stops short of naming alternatives (e.g., burn_one_time_secret or receipt reading) or stating what to do when a caller lacks the token.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_webhookSchedule a webhookAInspect
Schedule an HTTP POST of a JSON payload to a public URL: once, after delay_seconds or at the Unix time fire_at, 5 seconds to 24 hours ahead, or repeatedly every 60 to 86400 seconds until 24 hours after creation. The URL must use a host name, not an IP address, and resolve to a public address on port 80 or 443. The answer has schedule_id, which reads and cancels the job and should be kept private. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The public http or https URL to POST to, with a host name rather than an IP address, on port 80 or 443. | |
| every | No | Fire repeatedly at this interval in seconds, 60 to 86400, until 24 hours after creation. | |
| fire_at | No | Fire once at this Unix time, 5 seconds to 24 hours ahead. | |
| payload | No | Any JSON, at most 32 KB. Defaults to {}. | |
| delay_seconds | No | Fire once after this many seconds, 5 to 86400. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false), the description discloses the side effect precisely: an outbound HTTP POST to a public endpoint, either once or repeatedly until 24 hours after creation. It adds important operational context not in the annotations: the returned schedule_id is the only handle for reading and cancelling and should be kept private, and no authentication is required.
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?
Three tight sentences: the action and modes first, then eligibility constraints, then the return handle and access model. No filler, and the most decision-relevant information (what it does, whether it can fire) is front-loaded. It is dense but every clause carries operational meaning.
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 mutating scheduling tool with no output schema, the description supplies everything needed: what is fired, when, against what eligibility rules, what handle comes back, and that it requires no credentials. An agent can decide and invoke correctly without further inference.
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 coverage is 100%, and the schema already documents url restrictions, every (60–86400), fire_at (5s–24h ahead), payload size/default, and delay_seconds. The description restates the same bounds and the host-name/port constraint rather than adding new semantics such as format examples or interplay rules between every and delay_seconds. Baseline 3 is appropriate when the schema carries the parameter detail.
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 resource: 'Schedule an HTTP POST of a JSON payload to a public URL', and immediately qualifies the two modes (one-shot vs repeating). This distinguishes it from sibling tools like read_webhook_schedule, cancel_webhook_schedule, and create_webhook_capture without the agent needing to open a schema.
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?
Clear conditions for use are given: the URL must use a host name rather than an IP, must resolve publicly on port 80 or 443, and firing windows are bounded (5s–24h ahead, or 60–86400s intervals expiring 24h after creation). It also notes no API key, account, or sign-up is needed, which tells the agent it can call this immediately. It stops short of explicitly naming the sibling tools to use for reading or cancelling afterward, referring only to 'the schedule_id, which reads and cancels the job'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_healthCheck the serviceARead-onlyInspect
Check that the AI SENSE service answers. Returns status ok and the server time with microseconds. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds genuinely useful context beyond that by stating no API key, account, or sign-up is required and by describing the payload (status ok plus server time with microseconds). It does not describe failure behavior when the service is unreachable, which keeps it below a 5.
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?
Three short sentences, front-loaded with the action and followed by the return value, which is the right order. The auth caveat is somewhat redundant, restating "no key / no account / no sign up" three ways in one clause, but it is not enough to undermine an otherwise tight definition.
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 trivial zero-parameter health check with no output schema, the description supplies purpose, auth requirements, and the shape of the response, which is nearly everything an agent needs. Only the error/outage behavior is left unstated.
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 tool takes zero parameters, so there is nothing for the description to disambiguate; the schema is fully documented and empty by design. Baseline for a no-parameter tool applies.
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?
"Check that the AI SENSE service answers" states a specific verb and resource, and the mention of returning status ok plus server time makes it distinguishable from time-related siblings like get_current_time. It does not explicitly name a sibling it replaces, so it stops short of a 5.
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 health-check framing implies when to use it (verifying connectivity/availability), but there is no explicit guidance such as "use this before other calls" or "use get_current_time if you only need the time." The prerequisites sentence is about auth, not usage selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_urlShorten URLAInspect
Turn a long URL into a short 307.fi link that redirects to it. Use it when a URL has to be typed, read aloud, pasted into a message with a length limit, or put in front of a person. No API key, no account and no sign up. The link stops working 24 hours after creation, so do not use it for anything that must survive longer than a day; it is for handoffs inside a task, not for publishing.
| Name | Required | Description | Default |
|---|---|---|---|
| long_url | Yes | HTTP or HTTPS URL to shorten. |
Output Schema
| Name | Required | Description |
|---|---|---|
| short_url | Yes | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover safety and idempotency flags, so the description carries real weight and delivers: no API key, account, or sign-up required, and a hard 24-hour expiry that the agent cannot infer from annotations. It does not restate that each call produces a distinct link (non-idempotent), but that is already declared by idempotentHint=false, so the omission is minor rather than a contradiction.
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?
Three sentences, all front-loaded: what it does, when to reach for it, then the critical expiry caveat. Every clause earns its place, including the list of use cases, which is what makes the trigger conditions actionable.
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 tool is simple, has an output schema, and full schema coverage for its one parameter, so the description only needs to add auth model and lifetime semantics, both of which it covers. An agent has everything required to invoke it correctly and to know when the result will stop working.
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 single parameter is fully described in the schema (format uri, maxLength 4096, 'HTTP or HTTPS URL to shorten'), so the baseline applies. The description adds no syntax or format guidance beyond that; it never mentions the 4096 limit or that non-HTTP schemes are rejected.
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 first sentence gives a concrete verb and artifact: turn a long URL into a short 307.fi link that redirects to it. That names the input, the output domain, and the redirect behavior, which is enough to distinguish it from anything else in the sibling list (closest neighbors, create_qr_code and slugify_text, do not shorten URLs).
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 states explicit positive triggers (typed, read aloud, pasted into a length-limited message, shown to a person) and an explicit exclusion (nothing that must survive longer than a day, not for publishing). It also names the intended scope, handoffs inside a task, which resolves the main ambiguity an agent would face.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_failureSimulate a failureARead-onlyInspect
Get a chosen failure on purpose, to test how an agent or client handles it: an HTTP status from 200 to 504, an HTML error page (html), an empty body (empty) or JSON labelled as text (wrongtype), after an optional delay of up to 10 seconds. The result reports the status, content type, headers and body the REST endpoint sent, and is an error result for statuses of 400 and above. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| outcome | Yes | The HTTP status to answer with, 200 to 504, or html for an HTML error page, empty for an empty body, or wrongtype for JSON labelled as text. | |
| delay_ms | No | Wait this many milliseconds before answering, 0 to 10000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that no API key or account is required, that a delay of up to 10 seconds is applied before answering, exactly what the result reports (status, content type, headers, body), and that statuses of 400 and above are returned as error results. That last point is the key behavioral detail an agent needs, since a deliberately injected failure will surface as a tool error rather than a normal response. Nothing here contradicts readOnlyHint=true, because the tool injects simulated responses rather than mutating state.
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?
Effectively one dense sentence plus two short follow-ups, with the purpose front-loaded and the result format immediately after. The closing 'No API key, no account and no sign up' is slightly promotional but does convey real auth requirements, so it earns its place. The middle clause listing outcome categories is somewhat redundant with the enum.
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 two-parameter fault-injection tool with no output schema, the description covers the purpose, the delay semantics, the shape of the reported result, and the crucial fact that >=400 statuses come back as errors. An agent has everything needed to call this correctly and interpret the response.
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 enum parameter already documents every outcome value, so the baseline of 3 applies. The description restates the outcome categories (HTTP status range, html, empty, wrongtype) and the delay bound without adding syntax or edge-case detail beyond the schema. It confirms rather than extends the 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 opens with a specific verb and resource ('Get a chosen failure on purpose, to test how an agent or client handles it') and then enumerates the exact failure modes available. It is immediately distinguishable from anything else in the sibling list, none of which involve fault injection.
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 context for using it is explicit: to test how an agent or client handles failures. There are no competing siblings to redirect to, so the lack of explicit alternatives is a minor gap rather than a real ambiguity. It does not state when not to use it, which keeps it just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
slugify_textMake a URL slugBRead-onlyIdempotentInspect
Turn text into a lowercase URL slug with words joined by hyphens. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The text to turn into a slug, up to 10000 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is covered. The description adds real behavioral detail the annotations do not: the output is lowercased and words are hyphen-joined. However, it is silent on how punctuation, unicode/accents, or runs of whitespace are handled, and on what the return value actually is.
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 first sentence is well-formed and front-loaded with the actual transformation and output format. The second sentence ('No API key, no account and no sign up') is marketing boilerplate that gives an agent nothing actionable and dilutes an otherwise tight definition.
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-only, idempotent utility with full schema coverage and no output schema, the description covers what an agent needs to invoke it correctly. It falls short only on edge-case behavior for unusual input characters, which is a minor omission at this complexity level.
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 coverage is 100% and the single 'text' parameter is fully documented, including the 1-10000 character bounds, so the baseline is 3. The description adds only that this text is what gets slugified, which is already implied by the parameter's own description.
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 ('Turn') and resource ('text into a lowercase URL slug') and even specifies the joining convention (hyphens), so the transformation is unambiguous. It does not differentiate against any sibling, but no sibling tool in the list performs slugification, so the lack of differentiation is low-risk.
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?
There is no when-to-use or when-not-to-use guidance, no mention of prerequisites, and no comparison to the nearest siblings such as validate_value or create_dns_name. The only contextual line ('No API key, no account and no sign up') is about access, not about selecting this tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_fileStore a fileAInspect
Store a file given as base64 for 24 hours, at a link that anyone who has it can open. Answers storage_id and storage_url. Use it to hand a file to another tool, such as an image to process_image or read_qr_code. Never store secrets or personal data. max_downloads, 1 to 100, removes the file after that many fetches; the answer then carries downloads_max and downloads_left, and a spent storage_id answers that the object is gone. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data_base64 | Yes | The file as standard base64, at most about 190 KB of file through MCP. For a larger file, store it with REST POST /services/v1/storage first and pass storage_id. | |
| max_downloads | No | Optional. How many times the file may be fetched before it is removed, 1 to 100. Without it the file lives 24 hours. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the 24-hour TTL, that the URL is bearer-access ('anyone who has it can open'), the no-API-key/no-account posture, and the burn-after-N-fetches semantics including what a spent storage_id returns. These are exactly the operational and safety facts an agent cannot infer from readOnlyHint/destructiveHint.
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?
Front-loads the core action and lifetime, then layers constraints and the max_downloads edge case. Dense but nearly every clause carries new information; the final sentence jumps between return fields and expiry behavior in a way that is slightly harder to parse than it needs to be.
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?
With no output schema, the description still accounts for return values, TTL, access model, authentication requirements, and the exhausted-id case. Combined with a fully documented two-parameter schema, an agent has everything needed to call it correctly and interpret the result.
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 coverage is 100%, so the baseline is 3, but the description adds real meaning: what max_downloads actually causes (file removal after that many fetches) and how it surfaces in the response (downloads_max, downloads_left, and an error state for a spent id). Size limits and base64 format are left to the schema, which already documents them thoroughly.
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?
States a specific verb and resource ('Store a file given as base64'), plus scope: 24-hour lifetime and a link anyone with it can open. It also names the return values (storage_id, storage_url). It does not explicitly distinguish itself from the sibling store_temporary_data or explain the relationship to read_stored_file, which keeps it below a 5.
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?
Gives explicit usage context ('hand a file to another tool') with named downstream consumers process_image and read_qr_code, plus a clear prohibition ('Never store secrets or personal data'). What is missing is guidance on when to prefer this over the sibling store_temporary_data, or how it pairs with read_stored_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
store_temporary_dataStore temporary dataAInspect
Put any JSON value somewhere another process can fetch it, and get back a storage_id plus a public read_url. Use it to hand a result to a different agent, a script, a webhook receiver or a later run, when there is no shared filesystem and no database between you. No API key, no account and no sign up. Anyone holding the URL can read it, so never store secrets, credentials or personal data. The value disappears 24 hours after it is written. Read it back with read_temporary_data, passing the storage_id. The answer also carries sha256_hash, the digest of the stored bytes, and bytes, their length, so a receiver can tell it got what you sent. The same object over REST calls the link storage_url and serves it with that digest as its ETag. max_downloads, 1 to 100, removes the value after that many reads; the answer then carries downloads_max and downloads_left, and a spent storage_id answers that the object is gone.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The JSON value to store. Any type: object, array, string, number, boolean or null. Readable by anyone with the URL, so no secrets. | |
| max_downloads | No | Optional. How many times the value may be read before it is removed, 1 to 100. Without it the value lives 24 hours. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bytes | Yes | |
| read_url | Yes | |
| storage_id | Yes | |
| sha256_hash | Yes | |
| downloads_max | No | |
| downloads_left | No | |
| expire_timestamp | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: no API key or account needed, public readability of the URL, a 24-hour TTL, max_downloads removal semantics, spent-id behavior, and the sha256_hash/bytes returned for integrity checking. These are exactly the operational facts an agent needs before writing data to a publicly readable location.
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?
Front-loads the core action and return values in the first sentence, then layers constraints and lifecycle details. It is dense with useful facts, though the REST-specific aside about storage_url and ETag is marginal overhead for an MCP caller.
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 two-parameter write tool with annotations covering safety, this covers lifecycle, access model, rate-free access, integrity metadata and read-back routing. Even though an output schema exists and return values needn't be explained, the added explanation of hash/bytes/counter fields makes the tool safe to call without inspecting the schema.
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 coverage is 100%, so baseline is already 3, and the description adds real meaning: max_downloads removes the value after that many reads and the response then carries downloads_max/downloads_left, while omitting it means the 24-hour default. It restates the 'any JSON type' and no-secrets constraint already in the schema, which is the only redundancy.
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?
Opens with a concrete verb and resource: put a JSON value somewhere another process can fetch, returning storage_id and read_url. It is clearly separable from store_file (files) and the secret-handling siblings, and it names read_temporary_data as the counterpart.
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?
States the when: handing a result to another agent, script, webhook receiver or later run, specifically when there is no shared filesystem or database. It also names a when-not ('never store secrets, credentials or personal data') and routes the read path to read_temporary_data with the storage_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
time_formatsCurrent time in several formatsARead-onlyInspect
The current time in several formats at once: a Unix timestamp, Unix time with microseconds, an ISO 8601 date and time at an optional UTC offset, and Swatch Internet Time. Named timezones such as Europe/Oslo are answered by get_current_time. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | UTC offset as a sign and four digits, from -1200 to +1200, for example +0200 or -0530. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context that no API key or account is needed, and it enumerates what is returned, but it does not discuss output formatting details such as precision or the shape of the returned string. The additions are modest beyond what annotations supply.
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 output formats are front-loaded in the first sentence and the sibling boundary follows immediately, so the reader gets the essentials fast. The closing 'No API key, no account and no sign up' is slightly promotional phrasing, and the Swatch Internet Time mention may be noise for most callers, but overall it is tight.
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?
This is a simple, zero-required-parameter tool with no output schema, and the description compensates for the missing output schema by naming the formats returned. What remains unclear is the precise serialization of the response (delimiters, ordering, microsecond precision), which an agent might need to parse it reliably.
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 coverage is 100% and the single parameter is optional with a pattern and range already documented, so the schema does the heavy lifting. The description only says the offset is 'optional' and applies to the ISO 8601 output, adding a little scope meaning but no format or default detail beyond the schema.
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 gives a specific verb-resource pair ('the current time') and enumerates the exact formats returned: Unix timestamp, Unix time with microseconds, ISO 8601 with optional UTC offset, and Swatch Internet Time. It also draws an explicit boundary against the sibling get_current_time for named timezones, so an agent can distinguish the two without opening a schema.
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 clearly routes named-timezone requests to get_current_time, which is an explicit when-not rule. It does not mention the closely related siblings convert_timestamp (converting a supplied timestamp) or list_timezones, so the alternative space is only partially mapped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dns_nameUpdate a temporary DNS nameAInspect
Change the address a temporary DNS name points at. Needs the dns_token from create_dns_name. Use it when the machine behind the name moved and you would rather keep the name than hand out a new one. The expiry does not move: the name still disappears 24 hours after it was created. One change per name per 10 seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | A public unicast IPv4 or IPv6 address. Private, loopback, link-local and multicast ranges are refused. The address is required and never taken from the caller, because the caller is usually not the machine the name should point at. | |
| ttl | No | Seconds. 60 is the only value on the menu, so leave it out unless you want to be explicit. | |
| slug | Yes | The slug the service assigned, without the aisense- prefix and without the zone. | |
| dns_token | Yes | The dns_token from create_dns_name. It is shown once and never again. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | Yes | |
| ok | Yes | |
| ttl | Yes | |
| name | Yes | |
| slug | Yes | |
| record | Yes | |
| serial | No | |
| expire_at | Yes | |
| nameservers | Yes | |
| expire_timestamp | Yes | |
| created_at_timestamp | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description carries the full burden. It discloses the auth requirement (dns_token), the non-extending expiry ('the name still disappears 24 hours after it was created'), and a rate limit ('One change per name per 10 seconds'). These are meaningful side effects beyond what the schema provides, and there is no contradiction with annotations.
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?
Four sentences, each with a distinct role: action, prerequisite, use case, and side-effect/rate-limit. No redundant wording, and the most important information (action, prerequisite) 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 mutation tool with an output schema and a 100% covered input schema, the description covers the critical behavioral aspects: what it does, when to use it, the required credential, the expiry non-extension, and the rate limit. It omits error cases, but those are not typically required when schema and annotations already provide structural detail.
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 coverage is 100% with detailed per-parameter descriptions. The tool description adds no new parameter-level meaning beyond reinforcing that dns_token comes from create_dns_name. Baseline 3 is correct when the schema does the heavy lifting.
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 'Change the address a temporary DNS name points at,' a specific verb+resource statement that clearly differentiates the tool from its siblings (create_dns_name, delete_dns_name, read_dns_name). The title and description align and no ambiguity remains about what operation is performed.
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 trigger: 'Use it when the machine behind the name moved and you would rather keep the name than hand out a new one.' It also names the prerequisite dns_token from create_dns_name. While it doesn't explicitly contrast with delete_dns_name or read_dns_name, the use case is clear enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_emailCheck an email addressARead-onlyIdempotentInspect
Check an email address: its syntax, whether its domain has MX records, listing up to five, and whether the domain has an address record. The mail server is not contacted, so a good answer does not prove that the mailbox exists. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The email address to check. Nothing is sent to it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and openWorld, so the safety profile is covered; the description adds real value beyond them by disclosing that no SMTP/mail-server contact occurs, that up to five MX records are returned, and that no API key or account is required. It does not describe error cases (e.g., malformed input vs. NXDOMAIN), which is a minor remaining gap.
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, front-loaded with the checks performed before the caveat, with essentially no filler. The closing 'No API key, no account and no sign up' restates the same point three ways and could be one clause, a small redundancy.
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?
With no output schema and only one parameter, the description carries the burden of explaining results, and it does describe the returned content (syntax verdict, up to five MX records, address-record presence) plus the key limitation. It stops short of stating the overall response shape or how a failed check is reported, which keeps it from being fully complete.
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?
There is a single parameter with 100% schema description coverage, and the schema already states 'Nothing is sent to it,' so the description adds no new meaning about the email argument. With one fully documented parameter this is the expected baseline rather than a deficiency.
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 gives a specific verb (check) and resource (an email address) and enumerates the exact checks performed: syntax, MX records, and an address record. That is far more concrete than a sibling like validate_value or lookup_network, though it never names those siblings to route the agent explicitly.
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 clearly establishes the context of use (verify an email address and its domain) and adds an important boundary: a positive answer does not prove the mailbox exists because the mail server is not contacted. It stops short of naming alternatives such as lookup_network for raw DNS queries, so there is no explicit when-not-to-use routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_valueValidate a number or codeARead-onlyIdempotentInspect
Validate an IBAN, a payment card number (Luhn), a Norwegian organisation number (orgnr), a Norwegian bank account number (kontonummer) or a phone number, with the checksum and the normalized form where the type has them. Nothing is stored or looked up. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | iban, card for a payment card number, orgnr for a Norwegian organisation number, kontonummer for a Norwegian bank account number, or phone. | |
| value | Yes | The value to check. Spaces and dashes are allowed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint=false, and idempotentHint, so the safety profile is known. The description adds useful behavioral context beyond that: it returns a checksum result and a normalized form where applicable, and it explicitly stores and looks up nothing and requires no API key or account. It does not describe the response shape, but that is a minor gap for a simple validator.
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 tightly written sentences with no filler. The supported types and the stateless, no-account behavior are front-loaded, and every clause contributes useful 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 two-parameter stateless validator with no output schema, the description covers the formats accepted, the checksum and normalization behavior, and the absence of storage or authentication requirements. Only the exact return format is unstated, which is a reasonable omission given that there is no output schema and the behavior is described in prose.
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 already documents both the type enum and the value field including the tolerance for spaces and dashes. The description reinforces the supported formats and mentions normalized output, but it adds no syntax or format detail 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 gives a specific verb (validate) and enumerates the exact resource types it handles: IBAN, payment card via Luhn, Norwegian orgnr, kontonummer, and phone number. It also distinguishes itself from the sibling validate_email by listing only non-email formats, so an agent can select it without opening the schema.
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 by the list of supported value types, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative such as validate_email. The statelessness note helps an agent understand it is safe to call, but the routing guidance is only indirect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_hashVerify a hashARead-onlyIdempotentInspect
Check that text matches a hash. Name the algorithm when you know it. Without it the algorithm follows from the hash: 8, 32, 40, 64 or 128 hex characters mean CRC32, MD5, SHA-1, SHA-256 or SHA-512, and an integer means CRC32 in decimal; whirlpool, sha3_256, sha3_512, blake2b and blake3 share those lengths and must be named. For argon2id, bcrypt and scrypt the hash is the salted string those algorithms answered; the cost is read from it and must be within what this service produces. Answers match and algorithm, with computed for digests and params for password hashes. No API key, no account and no sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The text to check against the hash. | |
| hash | Yes | The hash to compare against. | |
| algorithm | No | Optional for the first five, required for the rest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and closed-world behavior, and the description adds real context beyond that: unsalted digest algorithms are auto-detected from hash length, and for argon2id/bcrypt/scrypt the cost is read from the hash and must fall within what this service produces, which is a meaningful constraint on accepted input. It also states no API key or account is required. It doesn't describe failure behavior (e.g., a non-matching result) in detail, which keeps it from a 5.
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?
Content is front-loaded and dense with no filler; every clause about inference rules or cost limits carries information. Some sentences are run-on and slightly awkward ('the hash is the salted string those algorithms answered'), which costs a little readability.
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 three-parameter tool with no output schema, the description covers the input-side ambiguity well and even sketches the return shape ('match and algorithm, with computed for digests and params for password hashes'), so the agent knows what comes back without an output schema. It is essentially complete for correct invocation.
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 coverage is 100%, so the baseline is 3, but the description adds substantial meaning the schema cannot convey: hex-length-to-algorithm inference (8/32/40/64/128 → CRC32/MD5/SHA-1/SHA-256/SHA-512), integer meaning CRC32 in decimal, and the explicit list of same-length algorithms that must be named. That directly resolves the one genuinely ambiguous parameter.
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 resource: 'Check that text matches a hash,' which is clearly distinct from computing a hash. However, it never names the obvious sibling `hash_data` as the tool to use when no verification is needed, so an agent must infer the contrast itself.
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 strong guidance on when the algorithm argument may be omitted versus when it must be named, which is genuinely useful usage context. But it offers no guidance on tool selection (e.g., use hash_data to produce a hash, validate_value or json_check for other checks); usage is implied rather than stated.
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.
1 tool update
- Changed
create_agent_run8 fields changed- added
Input schema / properties / execution / properties / permissions / properties / read_sources / descriptionAdded value: +"Up to four exact public HTTPS URLs or the slashdot_public feed. A query is part of the grant. Credentials, fragments, IP literals and private service addresses are refused." - removed
Input schema / properties / execution / properties / permissions / properties / read_sources / items / enumRemoved value: -[ - "slashdot_public" -] - added
Input schema / properties / execution / properties / permissions / properties / read_sources / items / maxLengthAdded value: +1024 - changed
Input schema / properties / execution / properties / permissions / properties / read_sources / maxItemsPrevious value: -1New value: +4 - added
Input schema / properties / execution / properties / permissions / properties / read_sources / uniqueItemsAdded value: +true - added
Input schema / properties / execution / properties / tools / descriptionAdded value: +"Choose at most one delivery tool. Delivery needs share_artifacts permission and the channel credentials installed over HTTPS." - changed
Input schema / properties / execution / properties / tools / items / enumPrevious value: -[ - "web_read", - "storage_create", - "storage_read", - "action_create", - "action_read", - "telegram_send" -]New value: +[ + "web_read", + "storage_create", + "storage_read", + "action_create", + "action_read", + "telegram_send", + "slack_send", + "discord_send" +] - changed
Input schema / properties / steps / descriptionPrevious value: -"Each step has id and type. delegate takes task and timeout_seconds; managed delegates can require_tools and require_artifacts. Version 1 waits for time, external or human. Version 2 waits for time (delay_seconds or not_before_timestamp) or action (from_step, artifact, timeout_seconds, on_timeout:continue). After an action wait, a delegate requiring storage_create may set record_feedback:true. decide takes request and optional require. complete is last."New value: +"Each step has id and type. delegate takes task and timeout_seconds. Managed delegates can require_tools and require_artifacts. Optional store_result_as reserves a handle for a Storage result created in that step. It needs storage_create and share_artifacts. Version 1 waits for time, external or human. Version 2 waits for time (delay_seconds or not_before_timestamp) or action (from_step, artifact, timeout_seconds, on_timeout:continue). After an action wait, a delegate requiring storage_create may set record_feedback:true. decide takes request and optional require. complete is last."
1 tool update
- Changed
create_agent_run3 fields changed- added
Input schema / properties / executionAdded value: +{ + "additionalProperties": false, + "description": "Managed v2 configuration without credentials. Permissions restrict what the model may request. Tool results, not model claims, confirm effects.", + "properties": { + "limits": { + "additionalProperties": false, + "properties": { + "model_calls": { + "maximum": 16, + "minimum": 1, + "type": "integer" + }, + "tool_calls": { + "maximum": 32, + "minimum": 0, + "type": "integer" + }, + "web_reads": { + "maximum": 12, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "model_calls", + "tool_calls", + "web_reads" + ], + "type": "object" + }, + "mode": { + "enum": [ + "managed" + ], + "type": "string" + }, + "model": { + "maxLength": 160, + "minLength": 1, + "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,159}$", + "type": "string" + }, + "permissions": { + "additionalProperties": false, + "properties": { + "read_sources": { + "items": { + "enum": [ + "slashdot_public" + ], + "type": "string" + }, + "maxItems": 1, + "minItems": 0, + "type": "array" + }, + "share_artifacts": { + "type": "boolean" + } + }, + "required": [ + "read_sources", + "share_artifacts" + ], + "type": "object" + }, + "protocol": { + "enum": [ + "text_protocol" + ], + "type": "string" + }, + "provider": { + "enum": [ + "openai", + "ollama_cloud" + ], + "type": "string" + }, + "tools": { + "items": { + "enum": [ + "web_read", + "storage_create", + "storage_read", + "action_create", + "action_read", + "telegram_send" + ], + "type": "string" + }, + "maxItems": 6, + "minItems": 0, + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "mode", + "provider", + "model", + "protocol", + "tools", + "permissions", + "limits" + ], + "type": "object" +} - changed
Input schema / properties / steps / descriptionPrevious value: -"The steps in order. Each has id and type. delegate takes task and timeout_seconds, wait takes event (time, external or human) with delay_seconds or timeout_seconds, decide takes request with state and questions, and optional require."New value: +"Each step has id and type. delegate takes task and timeout_seconds; managed delegates can require_tools and require_artifacts. Version 1 waits for time, external or human. Version 2 waits for time (delay_seconds or not_before_timestamp) or action (from_step, artifact, timeout_seconds, on_timeout:continue). After an action wait, a delegate requiring storage_create may set record_feedback:true. decide takes request and optional require. complete is last." - added
Input schema / properties / versionAdded value: +{ + "description": "Defaults to 1 for external workers. Use 2 with execution for managed text-model execution.", + "enum": [ + 1, + 2 + ], + "type": "integer" +}
1 tool update
- Changed
decode_audio1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"auto tries all three bands within one shared time limit. Pick audible, high or ultrasound when known."New value: +"auto tries all three bands within one shared time limit, and the earlier v1 format only in audible. Pick audible, high or ultrasound when known."
2 tool updates
- Changed
decode_audio2 fields changed- changed
Input schema / properties / mode / descriptionPrevious value: -"auto detects either tone range. Pick audible or ultrasound when known."New value: +"auto tries all three bands within one shared time limit. Pick audible, high or ultrasound when known." - changed
Input schema / properties / mode / enumPrevious value: -[ - "auto", - "audible", - "ultrasound" -]New value: +[ + "auto", + "audible", + "high", + "ultrasound" +]
- Changed
encode_audio2 fields changed- changed
Input schema / properties / mode / descriptionPrevious value: -"audible by default. ultrasound is experimental and depends on the speakers and microphone."New value: +"audible by default. high and ultrasound are experimental and depend on the speakers and microphone." - changed
Input schema / properties / mode / enumPrevious value: -[ - "audible", - "ultrasound" -]New value: +[ + "audible", + "high", + "ultrasound" +]
38 tool updates
- Changed
ack_agent_queue_job4 fields changed- added
Input schema / properties / job_id / descriptionAdded value: +"The job_id of the claimed job." - added
Input schema / properties / queue_id / descriptionAdded value: +"The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps." - added
Input schema / properties / receipt / descriptionAdded value: +"The receipt from the current claim. A newer claim or a release makes it stale." - added
Input schema / properties / worker_token / descriptionAdded value: +"The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them."
- Changed
advance_agent_handoff1 field changed- added
Input schema / properties / note / descriptionAdded value: +"An optional note recorded with this move in the history, up to 500 characters."
- Changed
cancel_webhook_schedule1 field changed- added
Input schema / properties / schedule_id / descriptionAdded value: +"The schedule_id from schedule_webhook."
- Changed
claim_agent_queue_job2 fields changed- added
Input schema / properties / queue_id / descriptionAdded value: +"The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps." - added
Input schema / properties / worker_token / descriptionAdded value: +"The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them."
- Changed
complete_agent_run_step1 field changed- added
Input schema / properties / step_id / descriptionAdded value: +"The id of the delegated step, as written in the plan."
- Changed
create_agent_handoff1 field changed- added
Input schema / properties / note / descriptionAdded value: +"An optional note kept with the handoff, up to 500 characters."
- Changed
create_one_time_secret2 fields changed- added
Input schema / properties / algorithm / descriptionAdded value: +"The cipher, always AES-256-GCM." - added
Input schema / properties / version / descriptionAdded value: +"The envelope version, always 1."
- Changed
create_qr_code1 field changed- added
Input schema / properties / text / descriptionAdded value: +"The text or URL the QR code holds, up to 2000 characters."
- Changed
crypto_wallet2 fields changed- added
Input schema / properties / chain / descriptionAdded value: +"bitcoin, ethereum or solana." - added
Input schema / properties / operation / descriptionAdded value: +"balance reads the balance of the public address in address; new_wallet generates a key pair that is sent once and not stored."
- Added
decode_audio - Added
encode_audio - Changed
encode_data2 fields changed- added
Input schema / properties / format / descriptionAdded value: +"base64, base64url without padding, base32, base58 with the Bitcoin alphabet, hex, url percent-encoding or html entities." - added
Input schema / properties / operation / descriptionAdded value: +"encode turns data into the chosen format; decode turns an encoded string back into text or bytes."
- Changed
enqueue_agent_queue_job3 fields changed- added
Input schema / properties / job_key / descriptionAdded value: +"Your own stable key for the job, 1 to 64 characters. A repeat with the same key and payload returns the original job." - added
Input schema / properties / queue_id / descriptionAdded value: +"The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps." - added
Input schema / properties / write_token / descriptionAdded value: +"The write_token from create_agent_queue, shown once. It adds jobs."
- Changed
generate_random1 field changed- added
Input schema / properties / kind / descriptionAdded value: +"number for an integer between from and to, color for #rrggbb, guid, password for a password of length characters, or passphrase for groups word groups."
- Changed
hash_data2 fields changed- added
Input schema / properties / algorithm / descriptionAdded value: +"The hash function. argon2id, bcrypt and scrypt are slow, salted password hashes limited to 200 calls a day; the others answer a digest." - added
Input schema / properties / data / descriptionAdded value: +"The text to hash, as UTF-8."
- Changed
html_markdown_convert1 field changed- added
Input schema / properties / direction / descriptionAdded value: +"html_to_markdown converts the HTML in data to Markdown; markdown_to_html converts the Markdown in data to HTML."
- Changed
html_to_pdf2 fields changed- added
Input schema / properties / html / descriptionAdded value: +"The complete HTML to render. Scripts and network requests are off, so images must be inline data URLs." - added
Input schema / properties / options / descriptionAdded value: +"Optional page settings: page-size (A3, A4, A5, Letter, Legal, Tabloid), orientation (Portrait, Landscape) and margin-top, margin-bottom, margin-left, margin-right such as 10mm."
- Changed
json_check1 field changed- added
Input schema / properties / operation / descriptionAdded value: +"format pretty-prints or compacts the JSON in data; validate reports whether it parses and where it breaks."
- Changed
json_csv_convert2 fields changed- added
Input schema / properties / delimiter / descriptionAdded value: +"The field separator: a comma (the default), a semicolon or a tab." - added
Input schema / properties / direction / descriptionAdded value: +"json_to_csv turns columns and rows into result.csv; csv_to_json turns the CSV text in data into result.json."
- Changed
jwt_token2 fields changed- added
Input schema / properties / operation / descriptionAdded value: +"encode signs payload with secret and answers jwt; decode verifies token with secret and answers its payload." - added
Input schema / properties / secret / descriptionAdded value: +"The HS256 signing key, 1 to 4096 characters."
- Changed
lookup_network1 field changed- added
Input schema / properties / kind / descriptionAdded value: +"client_ip and user_agent describe this request; reverse_ip looks up the IPv4 address in value, and domain_ip resolves the domain in value."
- Changed
match_tables3 fields changed- added
Input schema / properties / keys / descriptionAdded value: +"Pairs of key columns to match on, such as {\"left\": \"id\", \"right\": \"customer_id\"}." - added
Input schema / properties / left / descriptionAdded value: +"The first table, as a list of row objects." - added
Input schema / properties / right / descriptionAdded value: +"The second table, as a list of row objects."
- Changed
process_image10 fields changed- added
Input schema / properties / count / descriptionAdded value: +"For colors, how many main colors to find, 2 to 16." - added
Input schema / properties / crop / descriptionAdded value: +"For favicon: fit pads the image to a square, trim removes plain borders first and then pads, center fills the square and crops what sticks out." - added
Input schema / properties / fit / descriptionAdded value: +"For resize to a width and a height: contain keeps the whole image inside the box, cover fills the box and crops what sticks out." - added
Input schema / properties / format / descriptionAdded value: +"The output format for convert and resize: jpeg, png or webp. jpg is the same as jpeg." - added
Input schema / properties / height / descriptionAdded value: +"Target height in pixels for resize, 1 to 10000." - added
Input schema / properties / lossless / descriptionAdded value: +"For WebP output, true stores the image losslessly and ignores quality." - added
Input schema / properties / operation / descriptionAdded value: +"convert to another format, vectorize to SVG paths, compress, resize, read metadata, strip metadata, find the main colors, or make favicons." - added
Input schema / properties / quality / descriptionAdded value: +"Quality from 40 to 95 for JPEG and lossy WebP output." - added
Input schema / properties / upscale / descriptionAdded value: +"For resize, true lets the image grow beyond its original size." - added
Input schema / properties / width / descriptionAdded value: +"Target width in pixels for resize, 1 to 10000."
- Changed
query_semantic_search2 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"How many notes to answer, 1 to 10, default 3." - added
Input schema / properties / query / descriptionAdded value: +"What to look for, in plain words, up to 500 characters."
- Changed
read_agent_handoff1 field changed- added
Input schema / properties / wait_seconds / descriptionAdded value: +"Wait up to this many seconds, 0 to 25, for the state to change before answering."
- Changed
read_agent_queue2 fields changed- added
Input schema / properties / queue_id / descriptionAdded value: +"The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps." - added
Input schema / properties / read_token / descriptionAdded value: +"The read_token from create_agent_queue, shown once. It reads the queue and its jobs."
- Changed
read_agent_queue_job3 fields changed- added
Input schema / properties / job_id / descriptionAdded value: +"The job_id from enqueue_agent_queue_job or claim_agent_queue_job." - added
Input schema / properties / queue_id / descriptionAdded value: +"The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps." - added
Input schema / properties / read_token / descriptionAdded value: +"The read_token from create_agent_queue, shown once. It reads the queue and its jobs."
- Changed
read_agent_run1 field changed- added
Input schema / properties / wait_seconds / descriptionAdded value: +"Wait up to this many seconds, 0 to 25, for the run to change before answering."
- Changed
read_webhook_schedule2 fields changed- added
Input schema / properties / schedule_id / descriptionAdded value: +"The schedule_id from schedule_webhook." - added
Input schema / properties / wait_seconds / descriptionAdded value: +"Wait up to this many seconds, 0 to 25, for the status to change before answering."
- Changed
release_agent_queue_job4 fields changed- added
Input schema / properties / job_id / descriptionAdded value: +"The job_id of the claimed job." - added
Input schema / properties / queue_id / descriptionAdded value: +"The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps." - added
Input schema / properties / receipt / descriptionAdded value: +"The receipt from the current claim. A newer claim or a release makes it stale." - added
Input schema / properties / worker_token / descriptionAdded value: +"The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them."
- Changed
renew_agent_queue_job4 fields changed- added
Input schema / properties / job_id / descriptionAdded value: +"The job_id of the claimed job." - added
Input schema / properties / queue_id / descriptionAdded value: +"The queue_id from create_agent_queue, or from create_agent_run for a run with delegated steps." - added
Input schema / properties / receipt / descriptionAdded value: +"The receipt from the current claim. A newer claim or a release makes it stale." - added
Input schema / properties / worker_token / descriptionAdded value: +"The worker_token from create_agent_queue or create_agent_run, shown once. It claims jobs and acknowledges, renews or releases them."
- Changed
renew_lease1 field changed- added
Input schema / properties / ttl_seconds / descriptionAdded value: +"The new lease length in seconds from now, 1 to 86400, default 60. It cannot pass the absolute 24 hour limit."
- Changed
schedule_webhook4 fields changed- added
Input schema / properties / delay_seconds / descriptionAdded value: +"Fire once after this many seconds, 5 to 86400." - added
Input schema / properties / every / descriptionAdded value: +"Fire repeatedly at this interval in seconds, 60 to 86400, until 24 hours after creation." - added
Input schema / properties / fire_at / descriptionAdded value: +"Fire once at this Unix time, 5 seconds to 24 hours ahead." - added
Input schema / properties / url / descriptionAdded value: +"The public http or https URL to POST to, with a host name rather than an IP address, on port 80 or 443."
- Changed
simulate_failure2 fields changed- added
Input schema / properties / delay_ms / descriptionAdded value: +"Wait this many milliseconds before answering, 0 to 10000." - added
Input schema / properties / outcome / descriptionAdded value: +"The HTTP status to answer with, 200 to 504, or html for an HTML error page, empty for an empty body, or wrongtype for JSON labelled as text."
- Changed
slugify_text1 field changed- added
Input schema / properties / text / descriptionAdded value: +"The text to turn into a slug, up to 10000 characters."
- Changed
validate_email1 field changed- added
Input schema / properties / email / descriptionAdded value: +"The email address to check. Nothing is sent to it."
- Changed
validate_value1 field changed- added
Input schema / properties / type / descriptionAdded value: +"iban, card for a payment card number, orgnr for a Norwegian organisation number, kontonummer for a Norwegian bank account number, or phone."
- Changed
verify_hash1 field changed- added
Input schema / properties / data / descriptionAdded value: +"The text to check against the hash."
1 tool update
- Changed
process_image2 fields changed- changed
Input schema / properties / operation / enumPrevious value: -[ - "convert", - "compress", - "resize", - "metadata", - "strip", - "colors", - "favicon" -]New value: +[ + "convert", + "vectorize", + "compress", + "resize", + "metadata", + "strip", + "colors", + "favicon" +] - added
Input schema / properties / thresholdAdded value: +{ + "default": 50, + "description": "Brightness threshold in percent for vectorize. Higher values include lighter pixels.", + "maximum": 99, + "minimum": 1, + "type": "integer" +}
4 tool updates
- Changed
create_agent_handoff1 field changed- changed
Input schema / properties / notify_url / descriptionPrevious value: -"A public http or https URL that receives a small JSON signal after each committed transition."New value: +"A public http or https URL with a host name, not an IP address, that receives a small JSON signal after each committed transition."
- Changed
create_heartbeat1 field changed- changed
Input schema / properties / on_miss / descriptionPrevious value: -"Exactly one miss target. Use url for a public HTTP or HTTPS webhook on port 80 or 443, or wake_task_id for an active Agent Wake webhook task."New value: +"Exactly one miss target. Use url for a public HTTP or HTTPS webhook with a host name, not an IP address, on port 80 or 443, or wake_task_id for an active Agent Wake webhook task."
- Changed
create_human_approval1 field changed- changed
Input schema / properties / notify_url / descriptionPrevious value: -"Optional public HTTP or HTTPS callback after the final answer."New value: +"Optional public HTTP or HTTPS callback with a host name, not an IP address, after the final answer."
- Changed
create_webhook_capture1 field changed- changed
Input schema / properties / notify_url / descriptionPrevious value: -"Optional public HTTP or HTTPS callback. It receives one small signal after capture."New value: +"Optional public HTTP or HTTPS callback with a host name, not an IP address. It receives one small signal after capture."
4 tool updates
- Added
cancel_agent_run - Added
complete_agent_run_step - Added
create_agent_run - Added
read_agent_run
3 tool updates
- Added
advance_agent_handoff - Added
create_agent_handoff - Added
read_agent_handoff
4 tool updates
- Added
burn_one_time_secret - Added
create_one_time_secret - Added
read_one_time_secret_receipt - Added
reveal_one_time_secret
3 tool updates
- Changed
read_temporary_data1 field changed- added
Output schema / properties / downloads_leftAdded value: +{ + "type": "integer" +}
- Changed
store_file1 field changed- added
Input schema / properties / max_downloadsAdded value: +{ + "description": "Optional. How many times the file may be fetched before it is removed, 1 to 100. Without it the file lives 24 hours.", + "maximum": 100, + "minimum": 1, + "type": "integer" +}
- Changed
store_temporary_data3 fields changed- added
Input schema / properties / max_downloadsAdded value: +{ + "description": "Optional. How many times the value may be read before it is removed, 1 to 100. Without it the value lives 24 hours.", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / downloads_leftAdded value: +{ + "type": "integer" +} - added
Output schema / properties / downloads_maxAdded value: +{ + "type": "integer" +}
5 tool updates
- Added
add_semantic_search_notes - Added
create_semantic_search - Added
delete_semantic_search_note - Added
query_semantic_search - Added
read_semantic_search
1 tool update
- Changed
decide1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"Optional. rules (default), or a configured model such as clef. Unknown models are refused."New value: +"Optional. rules (default), clef, nimble or tev1. Unknown models are refused."
1 tool update
- Changed
decide3 fields changed- added
Input schema / properties / modelAdded value: +{ + "description": "Optional. rules (default), or a configured model such as clef. Unknown models are refused.", + "maxLength": 32, + "minLength": 1, + "type": "string" +} - changed
Input schema / properties / questions / descriptionPrevious value: -"1 to 64 named questions."New value: +"1 to 64 named rule questions, or up to 4 model questions under the default model limits." - changed
Input schema / properties / state / descriptionPrevious value: -"The facts the rules test."New value: +"The facts the rules test, or the input sent to the selected model."
1 tool update
- Added
html_markdown_convert
Related MCP Connectors
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
70+ pay-per-call tools for AI agents: web search, email verify, KYC, stocks, crypto, news, data
62 real-world tools for agents: search, scraping, social, enrichment, image, video, voice.
Email inboxes, webhooks, mock APIs, 2FA codes, approvals and 170 tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides 63 production-ready API tools for AI agents, including web scraping, AI generation, crypto data, OCR, image generation, audio transcription, text-to-speech, email, and domain lookup.3-
- AlicenseNot gradedqualityNot gradedmaintenanceSearch and discover 500+ tools, APIs, and services for AI agents. Browse 15 categories, get recommendations, and access structured metadata including auth methods, free tiers, and example calls.1-
- FlicenseNot gradedqualityDmaintenanceProvides 95 free tools and 22 workflows for AI agents via MCP, no API key required, covering versatile functionalities.2-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to access 10 public APIs as tools, covering weather, currency, crypto, geocoding, news, time, and country data without API keys.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.