Skip to content

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.

Deletes · 15Changes · 4

38 tools: 15 can delete or cancel things, 4 change things and 19 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "open-weather.getCurrentWeather" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getCurrentWeather" says "open": a word for a change.

    What this check looks for
  • The server marks "open-weather.getForecast" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getForecast" says "open": a word for a change.

    What this check looks for

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".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getCurrentWeather" says "open": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true}; The name "open-weather.getForecast" says "open": a word for a change.

      What this check looks for
    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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.