UK Data: Code utilities MCP server
uk.co.reliness/code-utilitiesreliness.co.ukstreamable-httpv1.5.0Scanned
Deterministic string, list and number routines: palindromes, sorting, searching, validation, merging
32 tools: 2 do something that can't be undone, 11 change things and 19 only read.
- Reads private data · 1
- Reads text others write · 32
- Can send data out · 0
- 3 findings
Tools listed without sign-in. Remote posture
With Anlyon
2 tools here do something that can't be undone. Govern them.
- Anlyon lists the tools and adopts none.
- Each tool you adopt gets approvals and receipts.
- Your agent never holds the key.
A tool your agent calls directly is not routed through Anlyon and is not governed by it. anlyon.dev only lists and labels, and these labels are the same either way.
What the UK Data: Code utilities MCP server can do
The UK Data: Code utilities MCP server is published by reliness.co.uk, a domain the MCP Registry verified. It has 32 tools. It can do things that cannot be undone, such as sending, paying or publishing (merge_dictionaries and merge_sorted_lists) and create or change data (11 tools: reverse_string, binary_addition, is_palindrome, sort_numbers and 7 more), but cannot delete data. 19 tools only read.
1 tool reads private data (min_meeting_rooms); 32 tools bring in text other people can write (is_valid_ip_address, find_max_subarray_sum, merge_dictionaries and 29 more).
The fixed checks matched 3 findings (annotation-conflict). Each one comes with the text it matched.
Its remote endpoint lists its tools without sign-in.
Last scanned Nov 7, 2026, version 1.5.0.
Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
32 tools
Can't be undone 2Claude Code: ask
merge_dictionariesMerges two dictionaries into a single dictionary, with values from the second dictionary overwriting those from the first for duplicate keys.Reads text others write1 finding
Why it is in this group
- The name "merge_dictionaries" says "merge": a word for a change that another call does not undo.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "merge_dictionaries" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "merge_dictionaries" says "merge": a word for a change that another call does not undo.
Description, as the server wrote it Merges two dictionaries into a single dictionary, with values from the second dictionary overwriting those from the first for duplicate keys. (cost: 1 credit)
Annotations the server declares
- title: merge dictionaries
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
merge_sorted_listsMerges two sorted lists into a single sorted list maintaining ascending order.Reads text others write1 finding
Why it is in this group
- The name "merge_sorted_lists" says "merge": a word for a change that another call does not undo.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "merge_sorted_lists" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "merge_sorted_lists" says "merge": a word for a change that another call does not undo.
Description, as the server wrote it Merges two sorted lists into a single sorted list maintaining ascending order. Returns the merged sorted list. (cost: 1 credit)
Annotations the server declares
- title: merge sorted lists
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Changes things 11Claude Code: ask
binary_additionAdds two binary numbers represented as strings and returns the sum as a binary string.Reads text others write1 finding
Why it is in this group
- The description's first verb is "add": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Findings
- Warn
The server marks "binary_addition" 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,"openWorldHint":true}; The description's first verb is "add": a word for a change.
Description, as the server wrote it Adds two binary numbers represented as strings and returns the sum as a binary string. Performs binary arithmetic with carry propagation. (cost: 1 credit)
Annotations the server declares
- title: binary addition
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
can_attend_meetingsDetermines if a person can attend all meetings given a list of time intervals by checking for overlapping time slots.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Determines if a person can attend all meetings given a list of time intervals by checking for overlapping time slots. Returns true if no meetings conflict, false otherwise. (cost: 1 credit)
Annotations the server declares
- title: can attend meetings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_anagramChecks if two words are anagrams by comparing if they contain the same characters with the same frequencies, ignoring case and whitespace.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if two words are anagrams by comparing if they contain the same characters with the same frequencies, ignoring case and whitespace. (cost: 1 credit)
Annotations the server declares
- title: is anagram
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_palindromeChecks if a string is a valid palindrome, considering only alphanumeric characters and ignoring case and spaces.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if a string is a valid palindrome, considering only alphanumeric characters and ignoring case and spaces. (cost: 1 credit)
Annotations the server declares
- title: is palindrome
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_perfect_squareChecks if a number is a perfect square (i.e., the square of an integer).Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if a number is a perfect square (i.e., the square of an integer). (cost: 1 credit)
Annotations the server declares
- title: is perfect square
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_powerChecks if a given number is an exact integer power of a specified base.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if a given number is an exact integer power of a specified base. Returns true if num = base^k for some non-negative integer k, false otherwise. (cost: 1 credit)
Annotations the server declares
- title: is power
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_rotationChecks if one string is a rotation of another string by verifying if str1 appears in str2 concatenated with itself.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if one string is a rotation of another string by verifying if str1 appears in str2 concatenated with itself. Returns true if str1 is a rotation of str2, false otherwise. (cost: 1 credit)
Annotations the server declares
- title: is rotation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_sum_of_cubesChecks if a number equals the sum of the cubes of its digits (e.g., 153 = 1³ + 5³ + 3³).Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if a number equals the sum of the cubes of its digits (e.g., 153 = 1³ + 5³ + 3³). Returns true if the condition holds, false otherwise. (cost: 1 credit)
Annotations the server declares
- title: is sum of cubes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_valid_parenthesesChecks if a string contains properly balanced and nested parentheses, brackets, and braces.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if a string contains properly balanced and nested parentheses, brackets, and braces. Returns true if every opening symbol has a matching closing symbol in the correct order. (cost: 1 credit)
Annotations the server declares
- title: is valid parentheses
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
reverse_stringReverses the order of characters in a given string, returning the string backwards.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Reverses the order of characters in a given string, returning the string backwards. (cost: 1 credit)
Annotations the server declares
- title: reverse string
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
sort_numbersSorts a list of numbers in ascending order using a deterministic sorting algorithm.Reads text others writeNo 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.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Sorts a list of numbers in ascending order using a deterministic sorting algorithm. (cost: 1 credit)
Annotations the server declares
- title: sort numbers
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 19Show 19 read-only tools
binary_searchPerforms binary search on a sorted list to find the index of a target value, returning -1 if not found.Reads text others writeNo findings
Why it is in this group
- The name "binary_search" says "search": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Performs binary search on a sorted list to find the index of a target value, returning -1 if not found. (cost: 1 credit)
Annotations the server declares
- title: binary search
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
count_bitsCounts the number of set bits (1's) in the binary representation of a non-negative integer.Reads text others writeNo findings
Why it is in this group
- The name "count_bits" says "count": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Counts the number of set bits (1's) in the binary representation of a non-negative integer. (cost: 1 credit)
Annotations the server declares
- title: count bits
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_duplicate_numberFinds the duplicate number in a list of integers where exactly one number appears more than once.Reads text others writeNo findings
Why it is in this group
- The name "find_duplicate_number" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the duplicate number in a list of integers where exactly one number appears more than once. Returns the duplicate value. (cost: 1 credit)
Annotations the server declares
- title: find duplicate number
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_equilibrium_indexFinds the equilibrium index in an array where the sum of elements to the left equals the sum of elements to the right.Reads text others writeNo findings
Why it is in this group
- The name "find_equilibrium_index" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the equilibrium index in an array where the sum of elements to the left equals the sum of elements to the right. Returns -1 if no such index exists. (cost: 1 credit)
Annotations the server declares
- title: find equilibrium index
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_first_non_repeating_charFinds the first character in a string that appears only once.Reads text others writeNo findings
Why it is in this group
- The name "find_first_non_repeating_char" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the first character in a string that appears only once. Returns null if all characters repeat. (cost: 1 credit)
Annotations the server declares
- title: find first non repeating char
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_kth_smallestFinds the kth smallest number in an unsorted list (1-indexed, where k=1 returns the smallest element).Reads text others writeNo findings
Why it is in this group
- The name "find_kth_smallest" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the kth smallest number in an unsorted list (1-indexed, where k=1 returns the smallest element). (cost: 1 credit)
Annotations the server declares
- title: find kth smallest
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_longest_wordFinds and returns the longest word in a given text string.Reads text others writeNo findings
Why it is in this group
- The name "find_longest_word" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds and returns the longest word in a given text string. If multiple words have the same maximum length, returns the first occurrence. (cost: 1 credit)
Annotations the server declares
- title: find longest word
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_majority_elementFinds the majority element in a list that appears more than ⌊n/2⌋ times using Boyer-Moore voting algorithm.Reads text others writeNo findings
Why it is in this group
- The name "find_majority_element" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the majority element in a list that appears more than ⌊n/2⌋ times using Boyer-Moore voting algorithm. Returns the majority element if it exists, null otherwise. (cost: 1 credit)
Annotations the server declares
- title: find majority element
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_max_subarray_sumFinds the maximum sum of any contiguous subarray using Kadane's algorithm.Reads text others writeNo findings
Why it is in this group
- The name "find_max_subarray_sum" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the maximum sum of any contiguous subarray using Kadane's algorithm. (cost: 1 credit)
Annotations the server declares
- title: find max subarray sum
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_minimum_rotated_sorted_arrayFinds the minimum element in a rotated sorted array using binary search.Reads text others writeNo findings
Why it is in this group
- The name "find_minimum_rotated_sorted_array" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the minimum element in a rotated sorted array using binary search. The array was originally sorted in ascending order then rotated at some pivot point. (cost: 1 credit)
Annotations the server declares
- title: find minimum rotated sorted array
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_missing_numberFinds the missing number in a sequence of integers from 0 to n where exactly one number is missing.Reads text others writeNo findings
Why it is in this group
- The name "find_missing_number" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the missing number in a sequence of integers from 0 to n where exactly one number is missing. Uses sum formula or XOR method. (cost: 1 credit)
Annotations the server declares
- title: find missing number
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_n_largestFinds the n largest numbers from a list and returns them in descending order.Reads text others writeNo findings
Why it is in this group
- The name "find_n_largest" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the n largest numbers from a list and returns them in descending order. (cost: 1 credit)
Annotations the server declares
- title: find n largest
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_next_greater_elementFor each element in a list, finds the next greater element to its right.Reads text others writeNo findings
Why it is in this group
- The name "find_next_greater_element" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it For each element in a list, finds the next greater element to its right. Returns -1 if no greater element exists. (cost: 1 credit)
Annotations the server declares
- title: find next greater element
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_pairs_with_sumFinds all unique pairs of integers in a list that sum to a specified target value.Reads text others writeNo findings
Why it is in this group
- The name "find_pairs_with_sum" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds all unique pairs of integers in a list that sum to a specified target value. Returns pairs as arrays. (cost: 1 credit)
Annotations the server declares
- title: find pairs with sum
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
find_peak_elementFinds a peak element in a list where an element is greater than its neighbors.Reads text others writeNo findings
Why it is in this group
- The name "find_peak_element" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds a peak element in a list where an element is greater than its neighbors. Returns the index of any peak element found. (cost: 1 credit)
Annotations the server declares
- title: find peak element
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
flatten_listFlattens a nested list structure into a single-level list by recursively extracting all elements regardless of nesting depth.Reads text others writeNo findings
Why it is in this group
- The name "flatten_list" says "list": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Flattens a nested list structure into a single-level list by recursively extracting all elements regardless of nesting depth. (cost: 1 credit)
Annotations the server declares
- title: flatten list
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
is_valid_ip_addressValidates whether a string is a properly formatted IPv4 address with four octets (0-255) separated by dots.Reads text others writeNo findings
Why it is in this group
- The description's first verb is "validate": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Validates whether a string is a properly formatted IPv4 address with four octets (0-255) separated by dots. (cost: 1 credit)
Annotations the server declares
- title: is valid ip address
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
min_meeting_roomsFinds the minimum number of meeting rooms required to accommodate all meetings given their time intervals.Reads private dataReads text others writeNo findings
Why it is in this group
- The description's first verb is "find": a word for reading.
What it can reach
- private-dataThe name "min_meeting_rooms" says "meeting": it reads calendars.
- private-dataThe description's first sentence says "find" and "meeting": it reads calendars.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Finds the minimum number of meeting rooms required to accommodate all meetings given their time intervals. Uses interval scheduling algorithm. (cost: 1 credit)
Annotations the server declares
- title: min meeting rooms
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
validate_sudokuChecks if a 9x9 Sudoku board is valid by verifying that each row, column, and 3x3 sub-grid contains no duplicate digits 1-9.Reads text others writeNo findings
Why it is in this group
- The name "validate_sudoku" says "validate": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Checks if a 9x9 Sudoku board is valid by verifying that each row, column, and 3x3 sub-grid contains no duplicate digits 1-9. Returns true if valid, false otherwise. (cost: 1 credit)
Annotations the server declares
- title: validate sudoku
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
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.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write32
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Remote posture
What anyone on the internet sees at the remote endpoint: an anonymous initialize and tools/list, and the public OAuth metadata.
Looked at Nov 8, 2026, 06:19 UTC, unchanged since Nov 8, 2026. No credentials were sent and no tool was called. What is looked at.
- Reachable
- yes
- HTTP status of an anonymous initialize
- 200
- tools/list served without credentials
- yes
- Tools that change things, listed without credentials
- 13
- Protocol version
- 2025-06-18
- WWW-Authenticate on 401
- not observed
- resource_metadata in WWW-Authenticate
- not observed
- RFC 9728 protected resource metadata
- not observed
- Authorization servers
- not observed
- Legacy HTTP+SSE transport
- no
- Dynamic client registration
- not observed
- Client ID metadata documents
- not observed
- HighThe whole server
The endpoint served tools/list without credentials, and the list has 13 tools that change things (2 irreversible, 11 write). Whether a call also works without credentials was not tested: tools are never called.
What this check looks forMatched text
https://ukdata.reliness.co.uk/mcp/code-utilities: tools/list returned 32 tools to an anonymous client, including merge_dictionaries (irreversible), merge_sorted_lists (irreversible), reverse_string (write), binary_addition (write), is_palindrome (write) and 8 more
Findings
Matches of fixed checks, with the text they matched.
The server marks "merge_dictionaries" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "merge_dictionaries" says "merge": a word for a change that another call does not undo.
- Warnbinary_addition
The server marks "binary_addition" 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,"openWorldHint":true}; The description's first verb is "add": a word for a change.
The server marks "merge_sorted_lists" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "merge_sorted_lists" says "merge": a word for a change that another call does not undo.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.5.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http code-utilities https://ukdata.reliness.co.uk/mcp/code-utilitiesclaude mcp add --transport http code-utilities https://ukdata.reliness.co.uk/mcp/code-utilitiesRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__code-utilities__is_valid_ip_address",
"mcp__code-utilities__find_max_subarray_sum",
"mcp__code-utilities__find_kth_smallest",
"mcp__code-utilities__count_bits",
"mcp__code-utilities__binary_search",
"mcp__code-utilities__min_meeting_rooms",
"mcp__code-utilities__find_next_greater_element",
"mcp__code-utilities__find_pairs_with_sum",
"mcp__code-utilities__find_n_largest",
"mcp__code-utilities__find_minimum_rotated_sorted_array",
"mcp__code-utilities__flatten_list",
"mcp__code-utilities__find_first_non_repeating_char",
"mcp__code-utilities__find_equilibrium_index",
"mcp__code-utilities__find_missing_number",
"mcp__code-utilities__find_longest_word",
"mcp__code-utilities__find_peak_element",
"mcp__code-utilities__find_duplicate_number",
"mcp__code-utilities__validate_sudoku",
"mcp__code-utilities__find_majority_element"
],
"ask": [
"mcp__code-utilities__merge_dictionaries",
"mcp__code-utilities__reverse_string",
"mcp__code-utilities__binary_addition",
"mcp__code-utilities__is_palindrome",
"mcp__code-utilities__sort_numbers",
"mcp__code-utilities__is_perfect_square",
"mcp__code-utilities__is_valid_parentheses",
"mcp__code-utilities__is_anagram",
"mcp__code-utilities__is_power",
"mcp__code-utilities__can_attend_meetings",
"mcp__code-utilities__is_rotation",
"mcp__code-utilities__is_sum_of_cubes",
"mcp__code-utilities__merge_sorted_lists"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as code-utilities. Review it before you use it.
Capability tags behind 32 rules
- mcp__code-utilities__is_valid_ip_address untrusted-input
- mcp__code-utilities__find_max_subarray_sum untrusted-input
- mcp__code-utilities__merge_dictionaries untrusted-input
- mcp__code-utilities__find_kth_smallest untrusted-input
- mcp__code-utilities__count_bits untrusted-input
- mcp__code-utilities__binary_search untrusted-input
- mcp__code-utilities__reverse_string untrusted-input
- mcp__code-utilities__min_meeting_rooms private-data, untrusted-input
- mcp__code-utilities__find_next_greater_element untrusted-input
- mcp__code-utilities__binary_addition untrusted-input
- mcp__code-utilities__is_palindrome untrusted-input
- mcp__code-utilities__sort_numbers untrusted-input
- mcp__code-utilities__find_pairs_with_sum untrusted-input
- mcp__code-utilities__is_perfect_square untrusted-input
- mcp__code-utilities__find_n_largest untrusted-input
- mcp__code-utilities__is_valid_parentheses untrusted-input
- mcp__code-utilities__find_minimum_rotated_sorted_array untrusted-input
- mcp__code-utilities__flatten_list untrusted-input
- mcp__code-utilities__is_anagram untrusted-input
- mcp__code-utilities__find_first_non_repeating_char untrusted-input
- mcp__code-utilities__find_equilibrium_index untrusted-input
- mcp__code-utilities__find_missing_number untrusted-input
- mcp__code-utilities__is_power untrusted-input
- mcp__code-utilities__find_longest_word untrusted-input
- mcp__code-utilities__can_attend_meetings untrusted-input
- mcp__code-utilities__is_rotation untrusted-input
- mcp__code-utilities__find_peak_element untrusted-input
- mcp__code-utilities__find_duplicate_number untrusted-input
- mcp__code-utilities__is_sum_of_cubes untrusted-input
- mcp__code-utilities__validate_sudoku untrusted-input
- mcp__code-utilities__find_majority_element untrusted-input
- mcp__code-utilities__merge_sorted_lists untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/uk.co.reliness/code-utilities/verify?hash=e9c990e5893287d00cee0a0dfe895cf54a07c67dd68768a868edf799d729efbe" | jq -e '.changed == false'Pinned hash e9c990e58932, from Nov 7, 2026, 12:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/uk.co.reliness/code-utilities/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/uk.co.reliness/code-utilities)Source: MCP Registry. Synced Nov 7, 2026, 12:17 UTC.
UK Data: Code utilities MCP server: questions and answers
Answered from the scan above, not from the publisher's description.
Is the UK Data: Code utilities MCP server safe?
- No scan can promise that. What its definitions show: 32 tools, 13 of which can change, send or delete something, and 3 findings from fixed checks. Allow the reads, ask before each change, and deny the deletes; the permissions block on this page does that.
Can the UK Data: Code utilities MCP server delete data?
- No tool is classed as destructive: going by their definitions, none of them deletes, cancels or revokes anything.
Can the UK Data: Code utilities MCP server do things that cannot be undone?
- Yes. 2 tools can send, pay, publish or merge: merge_dictionaries and merge_sorted_lists.
What tools does the UK Data: Code utilities MCP server have?
- 32 tools: 2 irreversible, 11 write, 19 read. merge_dictionaries, merge_sorted_lists, reverse_string, binary_addition, is_palindrome, sort_numbers, is_perfect_square, is_valid_parentheses and 24 more.
Does the UK Data: Code utilities MCP server need sign-in or OAuth?
- Its remote endpoint listed its tools to an anonymous client, without sign-in.
Does the UK Data: Code utilities MCP server send data to outside services?
- None of its tools sends, posts or publishes, or takes a recipient, channel or URL.
Has the UK Data: Code utilities MCP server changed its tools?
- Not since anlyon.dev started tracking it. Last scanned Nov 7, 2026.