Skip to content

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.

Tools: 0 delete, 2 irreversible, 11 write, 19 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.
Govern this server →

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

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

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

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

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

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "add": a word for a change.

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

Tools listed without sign-in

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.

    Matched 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

    What this check looks for

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "merge_dictionaries" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

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

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

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "add": a word for a change.

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

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

    What this check looks for

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-utilities
claude mcp add --transport http code-utilities https://ukdata.reliness.co.uk/mcp/code-utilities

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

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

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for uk.co.reliness/code-utilities
[![anlyon.dev](https://anlyon.dev/badge/uk.co.reliness/code-utilities.svg)](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.