Agent Jobs MCP Server
The Agent Jobs MCP Server enables AI agents to manage asynchronous tasks on the AI Connect platform through comprehensive job management capabilities:
Create Jobs: Create new asynchronous jobs with specified job types, target channels (e.g., Slack, WhatsApp, Web), and optional scheduling parameters
List Jobs: Retrieve jobs with filtering by status, job type, channel, creation/scheduling dates, plus pagination and sorting options
Retrieve Job Details: Get specific job information using its unique ID
Cancel Jobs: Terminate running or scheduled jobs by ID with optional cancellation reason
Get Job Type Information: Fetch details about specific job types by their ID
Monitor Job Status: Track job statuses including WAITING, RUNNING, COMPLETED, FAILED, and CANCELED
Utilizes Node.js runtime for the server implementation, providing the foundation for the Agent Jobs MCP system.
Allows AI agents to create and manage jobs that execute on the Slack platform through the Agent Jobs system of the AI Connect platform.
Implements the server using TypeScript for type safety and better developer experience.
Enables AI agents to create and manage jobs that execute on WhatsApp through the Agent Jobs system of the AI Connect platform.
Uses Zod for schema validation within the MCP server implementation to ensure data integrity.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Agent Jobs MCP Serverlist my recent jobs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Connect MCP Server
An MCP (Model Context Protocol) server that allows AI agents to query and manage jobs in the AI Connect platform.
About AI Connect Jobs
AI Connect Jobs is a robust asynchronous task management system on the AI Connect platform, enabling the creation, monitoring, and execution of jobs across different platforms like Slack and WhatsApp, with support for scheduled execution, automatic retries, and timeout handling. The API provides endpoints to create, list, query, and cancel jobs, allowing developers and external systems to easily integrate asynchronous processing functionalities into their applications, automating complex workflows without the need to implement the entire task management infrastructure.
Related MCP server: agent-mesh MCP Server
Features
This MCP Server provides tools for AI agents to:
๐ List Jobs: Query all jobs with advanced filtering
๐ Get Specific Job: Retrieve details of a specific job by ID
โ Create Jobs: Create new jobs for immediate or scheduled execution
โ Cancel Jobs: Cancel running or scheduled jobs
๐ Monitor Status: Track job status (WAITING, RUNNING, COMPLETED, FAILED, CANCELED)
Technologies
Node.js with TypeScript
Model Context Protocol (MCP) by Anthropic
Zod for schema validation
AI Connect API for integration with the Agent Jobs system
Installation
NPX (Recommended)
You can run the MCP server directly using npx without installation:
npx @aiconnect/agentjobs-mcp --helpLocal Installation
Clone the repository:
git clone <repository-url>
cd agentjobs-mcpInstall dependencies:
npm installConfigure environment variables (Optional):
The MCP server comes with default values from .env.example, so you can run it without setting any environment variables. However, you must provide an API key for authentication.
cp .env.example .envEdit the .env file with your credentials:
DEFAULT_ORG_ID=your-organization # Default: aiconnect
AICONNECT_API_KEY=your-api-key # Required: Must be provided
AICONNECT_API_URL=https://api.aiconnect.cloud/api/v0 # Default
DEFAULT_TIMEZONE=America/Sao_Paulo # Default: UTC (informational only, surfaced via get_context)Important: If no environment variables are provided, the server will use these defaults:
DEFAULT_ORG_ID:aiconnectAICONNECT_API_URL:https://api.aiconnect.cloud/api/v0AICONNECT_API_KEY: empty (must be provided for API calls to work)DEFAULT_TIMEZONE:UTC
Build the project:
npm run buildUsage
CLI Usage
The MCP server now supports CLI commands for easy management:
# Show help and usage information
npx @aiconnect/agentjobs-mcp --help
# Show version information
npx @aiconnect/agentjobs-mcp --version
# Show current configuration status
npx @aiconnect/agentjobs-mcp --config
# Start MCP server (default behavior)
npx @aiconnect/agentjobs-mcpSetting Environment Variables:
# Using environment variables with npx
AICONNECT_API_URL=https://api.aiconnect.cloud/api/v0 \
AICONNECT_API_KEY=your-api-key-here \
npx @aiconnect/agentjobs-mcp
# Or create a .env file (recommended for development)
cp .env.example .env
# Edit .env with your credentials
npx @aiconnect/agentjobs-mcpRequired Environment Variables:
AICONNECT_API_URL: API endpoint URL (e.g., https://api.aiconnect.cloud/api/v0)AICONNECT_API_KEY: Your API authentication key
Optional Environment Variables:
DEFAULT_ORG_ID: Fallback organization ID when a tool'sorg_idparameter is omitted (default:aiconnect)DEFAULT_TIMEZONE: Preferred timezone surfaced by theget_contexttool so LLM clients can format timestamps. Informational only โ does not change behavior of other tools, which continue to emit timestamps in UTC (default:UTC)
CLI Command Examples:
# Quick help
npx @aiconnect/agentjobs-mcp -h
# Check version
npx @aiconnect/agentjobs-mcp -v
# Verify configuration before starting
npx @aiconnect/agentjobs-mcp -c
# Test with environment variables
env AICONNECT_API_URL=https://api.aiconnect.cloud/api/v0 \
AICONNECT_API_KEY=test-key \
npx @aiconnect/agentjobs-mcp --configLocal Development
For local development, you can use npm scripts:
# Build and test CLI commands
npm run cli:help
npm run cli:version
npm run cli:config
# Run test suite (if available)
npm run test:cliConfiguration Options
This MCP server is designed to work out-of-the-box with minimal configuration. It uses a smart fallback system:
With environment variables: Full control over all settings
Without environment variables: Uses defaults from
.env.examplePartial configuration: Mix of environment variables and defaults
Default Values (when no env vars are set):
DEFAULT_ORG_ID:"aiconnect"AICONNECT_API_URL:"https://api.aiconnect.cloud/api/v0"AICONNECT_API_KEY:""(empty - you must provide this)DEFAULT_TIMEZONE:"UTC"
Error Handling:
The server will always start, even if environment variables are missing.
If
AICONNECT_API_KEYorAICONNECT_API_URLare not provided, each tool will return a clear error message upon execution, guiding the user to configure the environment correctly.If
DEFAULT_ORG_IDis not set, it defaults to "aiconnect".If
DEFAULT_TIMEZONEis not set, it defaults to "UTC". This value is purely informational (returned by theget_contexttool) and does not affect timestamp parsing or formatting in other tools.
Running the MCP server
npm startThe server will start and wait for connections via stdio transport.
Claude Desktop Configuration
To use this MCP server with Claude Desktop, add the following configuration to your claude_desktop_config.json file:
{
"mcpServers": {
"agentjobs": {
"command": "node",
"args": ["/path/to/agentjobs-mcp/build/index.js"],
"env": {
"DEFAULT_ORG_ID": "your-organization",
"AICONNECT_API_KEY": "your-api-key",
"AICONNECT_API_URL": "https://api.aiconnect.cloud/api/v0",
"DEFAULT_TIMEZONE": "America/Sao_Paulo"
}
}
}
}Local Development with Claude Code
For development and testing, you can add this MCP server directly to your Claude Code project:
# Prerequisites: build the project first
npm install
npm run build
# Configure your .env file
cp .env.example .env
# Edit .env with your API credentials
# Add MCP server to Claude Code (project scope)
claude mcp add --scope project agentjobs -- ./mcp-agentjobs.shThis allows you to test and use the AgentJobs tools directly within Claude Code during development, providing immediate feedback and easier debugging.
Available Tools
๐ get_jobs_stats
Get aggregated statistics for agent jobs without retrieving individual job data. Optimized for dashboards and monitoring with minimal network overhead.
Parameters:
scheduled_at_gte: Start of period (ISO 8601)scheduled_at_lte: End of period (ISO 8601)org_id: Organization filterjob_type_id: Job type filtertags: Tags filter (comma-separated)status: Status filterchannel_code: Channel filter
๐ง list_jobs
Lists all jobs with filtering and pagination options.
Parameters:
status(optional): Filter by status (WAITING, RUNNING, COMPLETED, FAILED, CANCELED)job_type_id(optional): Filter by job typechannel_code(optional): Filter by channel codelimit(optional): Result limit (default: 50)offset(optional): Pagination offsetsort(optional): Field and direction for sortinginclude_activities(optional): Attach recent activities to each job (default: false)activities_limit_per_job(optional): Max activities per job (1โ100, default 15)activities_total_limit(optional): Global cap across the response (1โ3000, default 500)activities_sort(optional):created_ator-created_at(default-created_at)
๐ get_job
Gets details of a specific job.
Parameters:
job_id(required): ID of the job to queryinclude_activities(optional): Attach recent activities as an inline overlay (default: false)include_limit(optional): Max activities to attach (1โ100, default 50)include_sort(optional):created_ator-created_at(default-created_at)
๐งพ get_job_activities
Retrieves the audit activity trail for a specific agent job via the dedicated /services/activities endpoint. Supports real pagination (no truncation) and server-side filtering. Use this for focused investigation of a job's activity log; for a quick overlay of recent activities, use get_job with include_activities=true.
Parameters:
job_id(required): ID of the agent joborg_id(optional): Organization scopestatus(optional):submitted,completed, orcanceledactivity_type_code(optional): Open-string code (e.g.,ai_completion)source_type(optional):dispatch,process_module, ordirectlimit(optional): Page size (default 50)offset(optional): Pagination offset (default 0)sort(optional): Sort field/direction (default-created_at)
โ
create_job
Creates a new job for execution.
Parameters:
target_channel: Target channel configurationjob_type_id: Job type IDconfig: Job configuration (timeouts, retries, etc.)params: Job-specific parametersscheduled_at(optional): Date/time for scheduled executiondelay(optional): Random delay in minutes
โ cancel_job
Cancels a running or scheduled job.
Parameters:
job_id(required): ID of the job to cancelreason(optional): Cancellation reason
Job Status
Jobs can have the following status values:
WAITING: Job waiting for executionSCHEDULED: Job scheduled for future executionRUNNING: Job currently runningCOMPLETED: Job completed successfullyFAILED: Job failedCANCELED: Job was canceled
Usage Examples
List running jobs
Agent: "Show me all jobs that are currently running"Query specific job
Agent: "What's the status of job job-123?"Create scheduled job
Agent: "Create a daily report job for Slack channel C123456 to run tomorrow at 9 AM"Cancel job
Agent: "Cancel job job-456 because it's no longer needed"Project Structure
agentjobs-mcp/
โโโ src/ # TypeScript source code
โ โโโ index.ts # Main MCP server entry point
โ โโโ config.ts # Configuration loader
โ โโโ tools/ # Directory for all MCP tools
โ โโโ get_jobs_stats.ts # Tool for getting job statistics
โ โโโ list_jobs.ts # Tool for listing jobs
โ โโโ get_job.ts # Tool for getting a job
โ โโโ get_job_activities.ts # Tool for getting a job's activity trail
โ โโโ create_job.ts # Tool for creating a job
โ โโโ cancel_job.ts # Tool for canceling a job
โโโ build/ # Compiled JavaScript code
โโโ docs/ # Documentation
โ โโโ agent-jobs-api.md # API documentation
โโโ package.json # Dependencies and scripts
โโโ tsconfig.json # TypeScript configuration
โโโ .env.example # Environment variables example
โโโ README.md # This fileDevelopment
Available scripts
npm run build: Compiles TypeScriptnpm start: Runs the compiled servernpm run debug: Runs server in debug mode with detailed loggingnpm run test:tools: Tests tool loading without starting servernpm run cli:config: Shows current configurationnpm run cli:version: Shows version informationnpm run cli:help: Shows help information
Debugging
For detailed debugging information, see Debug Guide.
Quick Debug Commands:
# Test configuration
npm run cli:config
# Test tool loading
npm run test:tools
# Run in debug mode
MCP_DEBUG=true npm run debug
# Use debug helper script (Fish shell)
./debug.fish help
./debug.fish quickDebug Environment:
# Copy debug environment template
cp .env.debug .env
# Edit .env with your API credentials
# Run with debug environment
./debug.fish debug-with-envAdding new tools
Adding a new tool is simple:
Create a new TypeScript file inside the
src/tools/directory (e.g.,my_new_tool.ts).Implement your tool logic following the existing pattern. The server will automatically detect and register it on startup.
Recompile the project with
npm run build.Test with
npm run test:toolsto verify loading.
Contributing
Fork the project
Create a feature branch (
git checkout -b feature/new-feature)Commit your changes (
git commit -am 'Add new feature')Push to the branch (
git push origin feature/new-feature)Open a Pull Request
License
This project is licensed under the MIT License.
Support
For technical support or questions about AI Connect Jobs:
Check the API documentation
Contact the AI Connect development team
Note: This project was developed using the Anthropic mcp-tools scaffold for integration with the AI Connect platform.
Available Tools
6 toolscancel_jobB
Cancels an agent job by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The unique identifier of the job to be canceled. Example: 'job-12345'. | |
| reason | No | An optional reason explaining why the job is being canceled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description carries the full burden. It states the action is to cancel a job, implying a destructive mutation, but lacks details on permissions needed, whether cancellation is reversible, rate limits, or what happens post-cancellation. It adds basic context but misses key behavioral traits.
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 a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to scan and understand 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 destructive mutation tool with no annotations beyond a title and no output schema, the description is inadequate. It lacks information on permissions, side effects, error handling, or return values, leaving significant gaps in understanding the tool's behavior and context.
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 clear parameter documentation in the schema. The description doesn't add any meaning beyond what the schema provides, such as explaining parameter interactions or usage nuances. Baseline 3 is appropriate as 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 clearly states the action ('cancels') and target resource ('an agent job by its ID'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_job' or 'list_jobs' beyond the obvious action difference, missing specific sibling distinction.
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?
No guidance is provided on when to use this tool versus alternatives or any prerequisites. While the action 'cancels' implies it's for active jobs, there's no explicit mention of job state requirements, error conditions, or comparison with siblings like 'create_job'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_jobB
Create a new Agent Job with the minimal set of fields.
| Name | Required | Description | Default |
|---|---|---|---|
| job_type_id | Yes | ID of the job type (e.g. "mood-monitor") | |
| target_channel | Yes | Where the agent will communicate. | |
| params | No | Freeโform params passed to the agent | |
| scheduled_at | No | Schedule the job to run later |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description carries full burden. It states this creates a new job but lacks behavioral details like required permissions, whether it's idempotent, what happens on failure, or if it triggers immediate execution. The mention of 'minimal set of fields' hints at constraints but is vague.
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 a single, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for a tool with good schema coverage, making every word count.
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 no output schema and minimal annotations, the description is incomplete for a creation tool. It covers the basic action but lacks details on return values, error handling, or behavioral traits, leaving gaps that could hinder agent usage despite good schema 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%, so the schema fully documents parameters. The description adds no additional meaning beyond implying 'minimal fields' might relate to required parameters, but it doesn't clarify which fields are minimal or provide usage context 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 clearly states the action ('Create') and resource ('Agent Job'), specifying it's a new job with minimal fields. It distinguishes from siblings like 'cancel_job' or 'get_job' by being the creation tool, though it doesn't explicitly contrast with 'list_jobs' or 'get_jobs_stats'.
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?
No guidance on when to use this tool versus alternatives is provided. It doesn't mention prerequisites, dependencies, or contrast with sibling tools like 'list_jobs' for viewing existing jobs or 'cancel_job' for stopping them, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobB
Retrieves an agent job by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The unique identifier of the job you want to retrieve. Example: 'job-12345'. | |
| org_id | No | The organization ID. Example: 'aiconnect'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond what annotations provide. Annotations include a title ('Get Agent Job') but no other hints like readOnly or destructive. The description implies a read operation ('retrieves'), which aligns with typical retrieval behavior, but doesn't disclose details such as error handling, authentication needs, or rate limits. No contradiction with annotations 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 description is extremely concise and front-loaded, consisting of a single sentence that directly states the tool's purpose. There is no wasted verbiage or unnecessary elaboration, making it efficient and easy to parse.
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 simplicity (a retrieval operation with 2 parameters and no output schema), the description is minimally adequate. It states what the tool does but lacks context on usage guidelines, behavioral details, or output format. With no annotations beyond title and no output schema, more completeness would be beneficial, but it meets a basic threshold for this low-complexity 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?
The description doesn't add any parameter semantics beyond what the input schema provides. Schema description coverage is 100%, with clear descriptions for both 'job_id' and 'org_id', including examples. The description itself doesn't mention parameters, so it relies entirely on the schema, meeting the baseline score for high 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 clearly states the verb ('retrieves') and resource ('an agent job by its ID'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_job_type' or 'list_jobs', which might retrieve similar job-related information but with different scopes or parameters.
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 no guidance on when to use this tool versus alternatives. For example, it doesn't mention that this is for retrieving a single job by ID, as opposed to 'list_jobs' for multiple jobs or 'get_job_type' for job metadata. There are no explicit when/when-not instructions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobs_statsA
Get aggregated statistics for agent jobs without retrieving individual job data. Optimized for dashboards and monitoring with minimal network overhead.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | No | Filter by organization ID. | |
| scheduled_at_gte | No | Start of period (ISO 8601) | |
| scheduled_at_lte | No | End of period (ISO 8601) | |
| created_at_gte | No | Filter for jobs created at or after a specific time (ISO 8601). | |
| created_at_lte | No | Filter for jobs created at or before a specific time (ISO 8601). | |
| job_type_id | No | Job type filter | |
| channel_code | No | Channel filter | |
| tags | No | Tags filter (comma-separated) | |
| status | No | Status filter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title, so the description carries the burden of behavioral disclosure. It adds useful context about optimization for dashboards and minimal network overhead, which hints at performance characteristics. However, it lacks details on rate limits, authentication needs, or specific return format, leaving some behavioral aspects unclear.
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 two sentences, front-loaded with the core purpose and followed by usage context. Every word earns its placeโno redundancy or fluff. It efficiently communicates key information without unnecessary elaboration.
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 (9 parameters, no output schema, and minimal annotations), the description is adequate but incomplete. It covers purpose and usage well but lacks details on output format, error handling, or behavioral constraints like pagination. For a statistical tool with many filters, more context on result structure would be beneficial.
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 fully documents all 9 parameters. The description does not add any parameter-specific information beyond what the schema provides, such as explaining how filters combine or default behaviors. This meets the baseline for high schema coverage but doesn't enhance parameter understanding.
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 specific action ('Get aggregated statistics') and resource ('agent jobs'), distinguishing it from siblings like 'get_job' (individual job) and 'list_jobs' (individual job data). It explicitly contrasts with retrieving individual job data, making the purpose unambiguous.
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 on when to use this tool ('Optimized for dashboards and monitoring with minimal network overhead') and when not to ('without retrieving individual job data'), with clear alternatives implied (e.g., 'get_job' or 'list_jobs' for individual data). This helps the agent choose appropriately based on the need for aggregated vs. detailed data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_typeB
Retrieves an agent job type by its ID.
| Name | Required | Description | Default |
|---|---|---|---|
| job_type_id | Yes | The unique identifier of the job type you want to retrieve. Example: 'mood-monitor'. | |
| org_id | No | The organization ID. Example: 'aiconnect'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide a title ('Get Job Type Configuration') but no explicit hints like readOnlyHint or destructiveHint. The description adds minimal behavioral context by implying a read operation ('Retrieves'), but it doesn't disclose details such as authentication needs, rate limits, or error handling, leaving gaps in transparency.
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 a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded and appropriately sized, making it easy to parse and understand 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?
Given the tool's low complexity (2 parameters, no output schema, simple schema), the description is minimally adequate. It covers the basic purpose but lacks details on output format, error cases, or integration with siblings, making it incomplete for fully informed usage without additional context.
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 parameters ('job_type_id', 'org_id') well-documented in the schema. The description adds no additional meaning beyond the schema, such as explaining parameter interactions or usage nuances, so it meets the baseline for high coverage without extra value.
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 ('Retrieves') and resource ('an agent job type by its ID'), making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_job' or 'list_jobs', which might retrieve different job-related data, so it misses full sibling distinction.
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 no guidance on when to use this tool versus alternatives such as 'get_job' or 'list_jobs'. It lacks context on prerequisites, exclusions, or specific scenarios, offering only a basic statement of function without usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jobsB
Retrieves a list of agent jobs, with optional filters and pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | No | Filter by organization ID. If not provided, the default from the environment is used. | |
| status | No | Filter by job status. Possible values are: 'waiting', 'scheduled', 'running', 'completed', 'failed', 'canceled'. | |
| scheduled_at | No | Filter by the exact scheduled time in ISO 8601 format (e.g., '2024-07-23T10:00:00Z'). | |
| scheduled_at_gte | No | Filter for jobs scheduled at or after a specific time (ISO 8601). | |
| scheduled_at_lte | No | Filter for jobs scheduled at or before a specific time (ISO 8601). | |
| created_at_gte | No | Filter for jobs created at or after a specific time (ISO 8601). | |
| created_at_lte | No | Filter for jobs created at or before a specific time (ISO 8601). | |
| job_type_id | No | Filter by the specific job type ID (e.g., 'daily-report'). | |
| channel_code | No | Filter by the channel code (e.g., 'C123456' for a Slack channel). | |
| limit | No | Maximum number of jobs to return (e.g.,20). Default is 20. | |
| offset | No | Number of jobs to skip, used for pagination. Default is 0. | |
| sort | No | Field to sort by and direction. Format is 'field:direction'. Example: 'created_at:desc'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond what's implied by the name and annotations. It mentions 'optional filters and pagination' which provides some operational context, but doesn't disclose important behavioral traits like rate limits, authentication requirements, or what happens when no filters are applied. With no annotations provided, the description carries the full burden but does only the bare minimum.
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 a single, efficient sentence that front-loads the core purpose ('Retrieves a list of agent jobs') and then adds qualifying information about filters and pagination. Every word serves a purpose with zero redundancy or wasted space.
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-only list operation with excellent schema coverage (100%) but no output schema, the description provides the minimum viable context. It states what the tool does but lacks information about return format, pagination behavior details, error conditions, or how it differs from sibling tools. The absence of annotations means more behavioral disclosure would be helpful.
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 input schema already provides comprehensive documentation for all 12 parameters. The description adds no additional parameter semantics beyond mentioning that filters and pagination are 'optional' - which is already evident from the schema's lack of required parameters. This meets the baseline for high 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 clearly states the verb ('Retrieves') and resource ('list of agent jobs'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_job' or 'get_jobs_stats', which would require explicit comparison to achieve a perfect score.
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 mentions 'optional filters and pagination' but provides no guidance on when to use this tool versus alternatives like 'get_job' (for single job details) or 'get_jobs_stats' (for aggregated statistics). There's no mention of prerequisites, typical use cases, or exclusion criteria.
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.
6 tool updates
- First observed
cancel_job - First observed
create_job - First observed
get_job - First observed
get_job_type - First observed
get_jobs_stats - First observed
list_jobs
TDQS
Scored across 6 tools
Every tool has a clearly distinct purpose with no ambiguity. Each targets a specific resource or action: cancel_job, create_job, get_job, get_jobs_stats, get_job_type, and list_jobs are all well-defined and non-overlapping. An agent can easily distinguish between them based on their names and descriptions.
All tool names follow a consistent verb_noun pattern throughout, using snake_case uniformly. The verbs (cancel, create, get, list) are clear and predictable, making the set easy to navigate and understand without any deviations or mixed conventions.
With 6 tools, the server is well-scoped for managing agent jobs. Each tool earns its place by covering essential operations like creation, retrieval, listing, cancellation, statistics, and job type handling, without being too sparse or bloated for the domain.
The tool surface provides strong coverage for the agent jobs domain, including CRUD-like operations (create, get, list, cancel) and additional utilities (stats, job type). A minor gap exists in update operations (e.g., update_job), but agents can likely work around this by recreating jobs or using other methods.
Maintenance
Related MCP Connectors
Connect, monitor, and control AI agents โ tasks, approvals, schedules, and governance.
- golemryOAuthcom.golemry
Create and manage scheduled, guarded AI agent jobs with built-in quality control and 900+ connectors
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to delegate tasks, run adversarial reviews, and manage background jobs across multiple models and providers via anymodel_* tools.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables coordinating specialist agents through an event-driven backend, allowing submission of goals, retrieval of job status and results, and listing of jobs via MCP tools.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to list, create, update, run, pause, resume, and delete scheduled shell-script jobs, pass inputs, and read job outputs and message feed entries.MIT
- AlicenseAqualityCmaintenanceEnables MCP-aware agents to estimate, submit, monitor, cancel, and retrieve artifacts from Jungle Grid workloads, supporting asynchronous AI execution, batch processing, training, fine-tuning, and access to logs and managed outputs.1124 npmMIT