Atlas / MCP servers / mondaycom / Agent Tool Protocol

Agent Tool ProtocolBLOCK

mcp/mondaycom/agent-tool-protocol

Agent Tool Protocol

Verdict
BLOCK
Grade
F
Trust score
55 /100
Exposed tools
132 110r · 18w · 4d
Transport
—
License
MIT
Stars
101
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

A production-ready, code-first protocol for AI agents to interact with external systems through secure sandboxed code execution.

What is Agent Tool Protocol?

Agent Tool Protocol (ATP) is a next-generation protocol that enables AI agents to interact with external systems by generating and executing TypeScript/JavaScript code in a secure, sandboxed environment. Unlike traditional function-calling protocols, ATP allows LLMs to write code that can execute multiple operations in parallel, filter and transform data, chain operations together, and use familiar programming patterns.

ATP provides a complete ecosystem for building production-ready AI agents with:

  • Secure code execution in isolated V8 VMs with memory limits and timeouts
  • Runtime SDK (atp.*) for LLM calls, embeddings, approvals, caching, and logging
  • Stateless architecture with optional caching for scalability
  • Client tools for seamless integration with LangChain, LangGraph, and other frameworks
  • Provenance tracking to defend against prompt injection attacks
  • OpenAPI and MCP compatibility for connecting to any API or MCP server

Why ATP vs MCP?

Traditional function-calling protocols like Model Context Protocol (MCP) have fundamental limitations:

MCP Limitations

  • Context Bloat: Large schemas consume significant tokens in every request
  • Sequential Execution: Only one tool can be called at a time
  • No Data Processing: Can't filter, transform, or combine results within the protocol
  • Limited Model Support: Not all LLMs support function calling well
  • Schema Overhead: Complex nested schemas are verbose and token-expensive

ATP Advantages

  • ✅ OpenAPI Integration: Built in open api integration allowing to connect a single server to multiple mcps & openapis
  • ✅ Parallel Execution: Execute multiple operations simultaneously
  • ✅ Data Processing: Filter, map, reduce, and transform data inline
  • ✅ **Code Flexibili
Read from source at commit 5c0dae9fbfc1OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add atp-vercel-sdk --env API_KEYS=${API_KEYS} --env ATP_API_KEY=${ATP_API_KEY} --env ATP_API_KEYS=${ATP_API_KEYS} --env ATP_AUTH_TOKEN=${ATP_AUTH_TOKEN} -- npx -y @mondaydotcomorg/[email protected]
claude-desktop
{
  "mcpServers": {
    "atp-vercel-sdk": {
      "command": "npx",
      "args": [
        "-y",
        "@mondaydotcomorg/[email protected]"
      ],
      "env": {
        "API_KEYS": "${API_KEYS}",
        "ATP_API_KEY": "${ATP_API_KEY}",
        "ATP_API_KEYS": "${ATP_API_KEYS}",
        "ATP_AUTH_TOKEN": "${ATP_AUTH_TOKEN}"
      }
    }
  }
}
03

Exposed tools (132)

110 read · 18 write · 4 destructive. Blast radius: 4 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
addwrite
allOptionalreadAll fields optional
allRequiredreadAll fields required
alwaysFailsreadEndpoint that always fails
analyzeread
analyze_dataread
apiCall1read
atp_execute_codewriteExecute TypeScript code in ATP sandbox with access to streaming tools. Available APIs: ${typeDefinitions}
audit-sensitive-accessreadLogs access to sensitive data (does not block)
block-llm-recipientsreadBlocks sending data to LLM-extracted email addresses
block-llm-recipients-approvalreadRequires approval for sending to LLM-extracted email addresses
calculatereadPerform calculation
computereadPerform computation
conversations_listreadList conversations (channels)
conversations_membersread
createIssuewriteCreate a new issue
createRepowriteCreate repository
createTablewriteCreate a new table (requires db:admin scope)
deepFunctionreadDeep nested test
deletedestructiveDelete a record (requires db:write scope)
deleteFiledestructiveDelete a file
deletePlandestructivedelete a plan
destructiveOperationread
doSomethingreadDo something
documentedreadFunction with documentation
dummyreadDummy function
echoreadEcho input
emptyRequiredreadEmpty required array
enrichDatareadEnrich data with additional info
events_deletedestructivedelete event
events_getreadget event
events_insertwritecreate event
events_listreadlist events
exampleread
exfiltrateread
explorerTestread
failingOperationread
fetchAnalyticsread
fetchDatareadFetch data (pauses execution)
fetchPublicInforead
fetchSensitiveDataread
fetchSensitiveUserread
fetchUserread
fetchUserDataread
fetchUsersread
formatDatereadFormat a date string
func1readFunction 1
func2readFunction 2
getChannelreadGet channel information
getCurrentWeatherreadGet the current weather for a location
getDatareadGet data
getForecastreadGet weather forecast for the next 5 days
getItemsreadGet items
getPublicDatareadGet public data
getSensitiveread
getStatusreadGet API status
getSystemInforeadGet system information
getTimestampreadGet current timestamp
getTransactionreadGet transaction by ID
getUserreadGet user information
getValuereadGet a value
greetread
helloreadSay hello
insertwriteInsert a record into a table (requires db:write scope)
listreadList users
listChannelsreadList Slack channels
listDirectoryreadList files in a directory
listEventsreadList calendar events
listPlansreadlist plans
listReposreadList repositories for a user
listUsersreadList users
localComputereadPerform local computation
lowercasereadConvert text to lowercase
mcpToolreadTool from MCP server
messages_listreadlist messages
messages_sendwritesend message
mixedTypesreadFunction with mixed types
multiplyread
mutation_create_itemwriteCreate an item on a board
no_schema_toolreadTool without schema
postMessagewritePost a message to Slack
prevent-data-exfiltrationreadPrevents sending data to recipients who cannot read it
prevent-data-exfiltration-approvalreadRequires approval for sending data to recipients who cannot read it
processDatareadProcess data (pauses execution)
processInternalread
processLocalreadProcess data locally
queryreadQuery records from a table (requires db:read scope)
queryUsersreadQuery users from the database
query_boardsreadQuery boards from Monday.com
readFilereadRead a file from the filesystem
readLocalreadRead local data
read_filereadRead a file from disk
require-user-originreadRequires critical parameters to come directly from user input
require-user-origin-approvalreadRequires approval for critical operations with non-user data
researchread
safeOperationread
sayHelloreadSay hello
search_apireadSearch API
searchableFunctionread
sendwriteSend an email
sendEmailread
sendExternalread
sensitiveOperationread
setStatuswriteSet status
setValuewriteSet cached value
simple_calcread
slowOperationreadSlow operation that pauses
sometimesFailsreadEndpoint that sometimes fails
storeValuereadStore a value
stream_storyread
successreadEndpoint that always succeeds
systemInforeadGet system information
testread
testAddread
testApiread
testFunctionreadTest function with mixed fields
testOperationread
testToolread
test_toolreadA test tool
throwErrorreadTool that throws
toolAreadTool A
toolBreadTool B
trackreadTrack event to external analytics
transferwriteTransfer money
transformreadTransform data
updatewriteUpdate a record (requires db:write scope)
updateUserwriteUpdate user
uppercasereadConvert text to uppercase
users_inforead
validSyntaxreadFunction with valid syntax
writeFilewriteWrite content to a file
write_filewriteWrite a file to disk
04

Trust audit

BLOCKgrade F · trust 55/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
none-observed
Shell
declared (2 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
packages/server/src/openapi-loader.ts:353
return yaml.load(content) as OpenAPISpec;
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
packages/server/src/openapi-loader.ts:358
return yaml.load(content) as OpenAPISpec;
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
__tests__/e2e/core-flows/core-functionality/multiple-openapi-auth.test.ts:68
token: 'test-protected-token',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/providers/__tests__/token-expiration.test.ts:126
token: 'gho_expires_now_token',
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete, deleteFile, deletePlan, events_delete
Why it matters. 4 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierrc.json
.prettierrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.yarnrc.yml
.yarnrc.yml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
__tests__/e2e/security/live-malicious-requests.test.ts:123
test('BLOCK direct eval() usage', async () => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
__tests__/e2e/security/live-malicious-requests.test.ts:131
test('BLOCK new Function() constructor', async () => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
__tests__/e2e/security/live-malicious-requests.test.ts:132
const exploit = `new Function('return process.env.PROVENANCE_SECRET')()`;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
__tests__/unit/serializer.test.ts:138
const fn = eval(`(${fnSource})`);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
__tests__/unit/serializer.test.ts:198
const fn = new Function(...Object.keys(scope), `return ${fnBody};`);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
__tests__/e2e/provenance/multi-step-tokens.test.ts:151
console.log(`  Token paths:`, step1.provenanceTokens!.map((t) => t.path).join(', '));
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
__tests__/e2e/provenance/multi-step-tokens.test.ts:432
console.log(`✓ Step 14: Token emission capped at ${result.provenanceTokens!.length}`);
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/langchain-react-agent/simple-agent.ts:41
console.log(`🔄 [Hook] Refreshing token (call ${tokenRefreshCount})`);
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/token-refresh/server.ts:48
console.log(`Token TTL: ${Math.round(tokenTTL / 1000)}s, Rotate in: ${Math.round(rotateIn / 1000)}s`);
LOWInformation disclosure · disclose.log_secret · CWE-209, CWE-532
examples/token-refresh/server.ts:67
console.log(`\n=== Waiting ${waitTime / 1000}s to trigger token rotation ===`);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
__tests__/e2e/core-flows/advanced-features/cascading-failures.test.ts:12
} from '../../infrastructure/test-helpers';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
__tests__/e2e/core-flows/advanced-features/multi-step-state-capture.test.ts:11
} from '../../infrastructure/test-helpers';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
__tests__/e2e/core-flows/advanced-features/oauth-scope-filtering.test.ts:18
} from '../../infrastructure/test-helpers';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
__tests__/e2e/core-flows/advanced-features/oauth-scope-filtering.test.ts:19
import { MockOAuthProvider } from '../../infrastructure/mock-servers/oauth-provider-mock';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
__tests__/e2e/core-flows/advanced-features/oauth-scope-filtering.test.ts:20
import { GitHubMockServer } from '../../infrastructure/mock-servers/github-mock';
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
__tests__/e2e/checkpoint/checkpoint-provenance-integration.test.ts:31
'block-tool-data-exfil',
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
__tests__/e2e/checkpoint/checkpoint-provenance-integration.test.ts:73
policy: 'block-tool-data-exfil',

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 5c0dae9fbfc1full audit observations/trust-audit/mcp-server/mondaycom__agent-tool-protocol.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-125c0dae9fbfc1BLOCKF55first audit
06

Questions

What is the @mondaydotcomorg/atp-mcp-adapter MCP server?

Agent Tool Protocol

What tools does @mondaydotcomorg/atp-mcp-adapter expose?

132 in total: 110 read-only, 18 that write, and 4 that can delete or overwrite (delete, deleteFile, deletePlan, events_delete). Every one is listed on this page with its risk.

Is @mondaydotcomorg/atp-mcp-adapter safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (55/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 4 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @mondaydotcomorg/atp-mcp-adapter need?

It reads API_KEYS, ATP_API_KEY, ATP_API_KEYS, ATP_AUTH_TOKEN, ATP_JWT_SECRET, BASIC_AUTH_TEST_API_PASSWORD, BASIC_AUTH_TEST_API_USERNAME, DD_API_KEY, GITHUB_MOCK_API_TOKEN, GITHUB_TEST_TOKEN, GOOGLE_CALENDAR_MCP_TOKEN_PATH and GOOGLE_OAUTH_CREDENTIALS from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How current is this page?

The grade is for one exact copy of the source (5c0dae9fbfc1), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement