io. github. mirajmahmudul/ agentdevx
by mirajmahmudul · remote · no sign-in to list tools · v1.1.0 · published by GitHub user mirajmahmudul
Give your AI hands. Identity, credential vault, and API gateway for autonomous agents.
38 tools: 15 can delete or cancel things, 4 change things and 19 only read.
Scanned Oct 21, 2026
- Deletes or cancels15Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads19Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http agentdevx https://agentdevx.onrender.com/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "open-weather.getCurrentWeather" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getCurrentWeather" says "open": a word for a change.
The server marks "open-weather.getForecast" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getForecast" says "open": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
38 tools
Deletes or cancels 15Claude Code: deny
acme-mailer.send_emailSend an email to a recipientNo findings
Why it is in this group
- The name "acme-mailer.send_email" says "send": a word for sending, and what is sent cannot be taken back.
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Send an email to a recipient
Annotations the server declares
- title: acme-mailer - send_email
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
echo-server.addAdd two numbersNo findings
Why it is in this group
- The name "echo-server.add" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add two numbers
Annotations the server declares
- title: echo-server - add
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
echo-server.echoReturns whatever you sendNo findings
Why it is in this group
- The description's first verb is "return": a word for reading.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Returns whatever you send
Annotations the server declares
- title: echo-server - echo
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
jsonplaceholder.createPostCreate a new postNo findings
Why it is in this group
- The name "jsonplaceholder.createPost" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a new post
Annotations the server declares
- title: jsonplaceholder - createPost
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
petstore-api.addPetAdd a new pet to the store.No findings
Why it is in this group
- The name "petstore-api.addPet" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add a new pet to the store.
Annotations the server declares
- title: petstore-api - addPet
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
petstore-api.createUserCreate user.No findings
Why it is in this group
- The name "petstore-api.createUser" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create user.
Annotations the server declares
- title: petstore-api - createUser
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
petstore-api.createUsersWithListInputCreates list of users with given input array.No findings
Why it is in this group
- The name "petstore-api.createUsersWithListInput" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Creates list of users with given input array.
Annotations the server declares
- title: petstore-api - createUsersWithListInput
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
petstore-api.deleteOrderDelete purchase order by identifier.No findings
Why it is in this group
- The name "petstore-api.deleteOrder" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete purchase order by identifier.
Annotations the server declares
- title: petstore-api - deleteOrder
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
petstore-api.deletePetDeletes a pet.No findings
Why it is in this group
- The name "petstore-api.deletePet" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Deletes a pet.
Annotations the server declares
- title: petstore-api - deletePet
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
petstore-api.deleteUserDelete user resource.No findings
Why it is in this group
- The name "petstore-api.deleteUser" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete user resource.
Annotations the server declares
- title: petstore-api - deleteUser
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
petstore-api.placeOrderPlace an order for a pet.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Place an order for a pet.
Annotations the server declares
- title: petstore-api - placeOrder
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
petstore-api.updatePetUpdate an existing pet.No findings
Why it is in this group
- The name "petstore-api.updatePet" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update an existing pet.
Annotations the server declares
- title: petstore-api - updatePet
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
petstore-api.updatePetWithFormUpdates a pet in the store with form data.No findings
Why it is in this group
- The name "petstore-api.updatePetWithForm" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Updates a pet in the store with form data.
Annotations the server declares
- title: petstore-api - updatePetWithForm
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
petstore-api.updateUserUpdate user resource.No findings
Why it is in this group
- The name "petstore-api.updateUser" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update user resource.
Annotations the server declares
- title: petstore-api - updateUser
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
petstore-api.uploadFileUploads an image.No findings
Why it is in this group
- The name "petstore-api.uploadFile" says "upload": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Uploads an image.
Annotations the server declares
- title: petstore-api - uploadFile
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
Changes things 4Claude Code: ask
memory.storeStore a key-value pair in the agent's encrypted, persistent memory.No findings
Why it is in this group
- The name "memory.store" says "store": a word for a change.
Description, as the server wrote it Store a key-value pair in the agent's encrypted, persistent memory. Survives across sessions.
Annotations the server declares
- title: Memory - Store
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
open-weather.getCurrentWeatherGet current weather for a city1 finding
Why it is in this group
- The name "open-weather.getCurrentWeather" says "open": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "open-weather.getCurrentWeather" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getCurrentWeather" says "open": a word for a change.
Description, as the server wrote it Get current weather for a city
Annotations the server declares
- title: open-weather - getCurrentWeather
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
open-weather.getForecastGet 5-day weather forecast for a city1 finding
Why it is in this group
- The name "open-weather.getForecast" says "open": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "open-weather.getForecast" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getForecast" says "open": a word for a change.
Description, as the server wrote it Get 5-day weather forecast for a city
Annotations the server declares
- title: open-weather - getForecast
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
webscrape.scrapeScrape a webpage and extract its structure: title, headings, links, images, and text content.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Scrape a webpage and extract its structure: title, headings, links, images, and text content. Uses static HTML fetch (does not render JavaScript).
Annotations the server declares
- title: Web Scrape - Page
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
Only reads 19Claude Code: allow
exchange-rate.getLatestRatesGet latest exchange rates for a base currencyNo findings
Why it is in this group
- The name "exchange-rate.getLatestRates" says "get": a word for reading.
Description, as the server wrote it Get latest exchange rates for a base currency
Annotations the server declares
- title: exchange-rate - getLatestRates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
github-api.getRepoGet a GitHub repository by owner and nameNo findings
Why it is in this group
- The name "github-api.getRepo" says "get": a word for reading.
Description, as the server wrote it Get a GitHub repository by owner and name
Annotations the server declares
- title: github-api - getRepo
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
github-api.listRepoIssuesList issues for a GitHub repositoryNo findings
Why it is in this group
- The name "github-api.listRepoIssues" says "list": a word for reading.
Description, as the server wrote it List issues for a GitHub repository
Annotations the server declares
- title: github-api - listRepoIssues
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
github-api.searchReposSearch GitHub repositoriesNo findings
Why it is in this group
- The name "github-api.searchRepos" says "search": a word for reading.
Description, as the server wrote it Search GitHub repositories
Annotations the server declares
- title: github-api - searchRepos
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
jsonplaceholder.getPostGet a single post by IDNo findings
Why it is in this group
- The name "jsonplaceholder.getPost" says "get": a word for reading.
Description, as the server wrote it Get a single post by ID
Annotations the server declares
- title: jsonplaceholder - getPost
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
jsonplaceholder.getPostsGet all postsNo findings
Why it is in this group
- The name "jsonplaceholder.getPosts" says "get": a word for reading.
Description, as the server wrote it Get all posts
Annotations the server declares
- title: jsonplaceholder - getPosts
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
jsonplaceholder.getUsersGet all usersNo findings
Why it is in this group
- The name "jsonplaceholder.getUsers" says "get": a word for reading.
Description, as the server wrote it Get all users
Annotations the server declares
- title: jsonplaceholder - getUsers
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
memory.recallRetrieve a previously stored value from the agent's encrypted, persistent memory by key.No findings
Why it is in this group
- The description's first verb is "retrieve": a word for reading.
Description, as the server wrote it Retrieve a previously stored value from the agent's encrypted, persistent memory by key.
Annotations the server declares
- title: Memory - Recall
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.findPetsByStatusFinds Pets by status.No findings
Why it is in this group
- The name "petstore-api.findPetsByStatus" says "find": a word for reading.
Description, as the server wrote it Finds Pets by status.
Annotations the server declares
- title: petstore-api - findPetsByStatus
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.findPetsByTagsFinds Pets by tags.No findings
Why it is in this group
- The name "petstore-api.findPetsByTags" says "find": a word for reading.
Description, as the server wrote it Finds Pets by tags.
Annotations the server declares
- title: petstore-api - findPetsByTags
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.getInventoryReturns pet inventories by status.No findings
Why it is in this group
- The name "petstore-api.getInventory" says "get": a word for reading.
Description, as the server wrote it Returns pet inventories by status.
Annotations the server declares
- title: petstore-api - getInventory
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.getOrderByIdFind purchase order by ID.No findings
Why it is in this group
- The name "petstore-api.getOrderById" says "get": a word for reading.
Description, as the server wrote it Find purchase order by ID.
Annotations the server declares
- title: petstore-api - getOrderById
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.getPetByIdFind pet by ID.No findings
Why it is in this group
- The name "petstore-api.getPetById" says "get": a word for reading.
Description, as the server wrote it Find pet by ID.
Annotations the server declares
- title: petstore-api - getPetById
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.getUserByNameGet user by user name.No findings
Why it is in this group
- The name "petstore-api.getUserByName" says "get": a word for reading.
Description, as the server wrote it Get user by user name.
Annotations the server declares
- title: petstore-api - getUserByName
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.loginUserLogs user into the system.No findings
Why it is in this group
- The description's first verb is "log": a word for reading.
Description, as the server wrote it Logs user into the system.
Annotations the server declares
- title: petstore-api - loginUser
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
petstore-api.logoutUserLogs out current logged in user session.No findings
Why it is in this group
- The description's first verb is "log": a word for reading.
Description, as the server wrote it Logs out current logged in user session.
Annotations the server declares
- title: petstore-api - logoutUser
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
public-holidays.getAvailableCountriesGet list of available countriesNo findings
Why it is in this group
- The name "public-holidays.getAvailableCountries" says "get": a word for reading.
Description, as the server wrote it Get list of available countries
Annotations the server declares
- title: public-holidays - getAvailableCountries
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
public-holidays.getPublicHolidaysGet public holidays for a country and yearNo findings
Why it is in this group
- The name "public-holidays.getPublicHolidays" says "get": a word for reading.
Description, as the server wrote it Get public holidays for a country and year
Annotations the server declares
- title: public-holidays - getPublicHolidays
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
webscrape.extractDesignAnalyze a webpage and extract its design system: colors, fonts, font sizes, spacing values, layout patterns (flexbox/grid usage), and component class name patterns.No findings
Why it is in this group
- The description's first verb is "analyze": a word for reading.
Description, as the server wrote it Analyze a webpage and extract its design system: colors, fonts, font sizes, spacing values, layout patterns (flexbox/grid usage), and component class name patterns. Uses static HTML fetch (does not render JavaScript).
Annotations the server declares
- title: Web Scrape - Design System
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http agentdevx https://agentdevx.onrender.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__agentdevx__public-holidays_getPublicHolidays",
"mcp__agentdevx__public-holidays_getAvailableCountries",
"mcp__agentdevx__jsonplaceholder_getPosts",
"mcp__agentdevx__jsonplaceholder_getPost",
"mcp__agentdevx__jsonplaceholder_getUsers",
"mcp__agentdevx__exchange-rate_getLatestRates",
"mcp__agentdevx__github-api_getRepo",
"mcp__agentdevx__github-api_listRepoIssues",
"mcp__agentdevx__github-api_searchRepos",
"mcp__agentdevx__petstore-api_findPetsByStatus",
"mcp__agentdevx__petstore-api_findPetsByTags",
"mcp__agentdevx__petstore-api_getPetById",
"mcp__agentdevx__petstore-api_getInventory",
"mcp__agentdevx__petstore-api_getOrderById",
"mcp__agentdevx__petstore-api_loginUser",
"mcp__agentdevx__petstore-api_logoutUser",
"mcp__agentdevx__petstore-api_getUserByName",
"mcp__agentdevx__memory_recall",
"mcp__agentdevx__webscrape_extractDesign"
],
"ask": [
"mcp__agentdevx__open-weather_getCurrentWeather",
"mcp__agentdevx__open-weather_getForecast",
"mcp__agentdevx__memory_store",
"mcp__agentdevx__webscrape_scrape"
],
"deny": [
"mcp__agentdevx__jsonplaceholder_createPost",
"mcp__agentdevx__petstore-api_addPet",
"mcp__agentdevx__petstore-api_updatePet",
"mcp__agentdevx__petstore-api_updatePetWithForm",
"mcp__agentdevx__petstore-api_deletePet",
"mcp__agentdevx__petstore-api_uploadFile",
"mcp__agentdevx__petstore-api_placeOrder",
"mcp__agentdevx__petstore-api_deleteOrder",
"mcp__agentdevx__petstore-api_createUser",
"mcp__agentdevx__petstore-api_createUsersWithListInput",
"mcp__agentdevx__petstore-api_updateUser",
"mcp__agentdevx__petstore-api_deleteUser",
"mcp__agentdevx__echo-server_echo",
"mcp__agentdevx__echo-server_add",
"mcp__agentdevx__acme-mailer_send_email"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as agentdevx. Review it before you use it.
