Skip to content

Little Milwaukee

com.littlemilwaukee/little-milwaukeelittlemilwaukee.comstreamable-httpv1.0.0Scanned

Sourced facts on locally owned places, records, events and neighborhoods in Milwaukee County.

25 tools: 2 do something that can't be undone, 8 change things and 15 only read.

Tools: 0 delete, 2 irreversible, 8 write, 15 read.
  • Reads private data · 1
  • Reads text others write · 17
  • Can send data out · 2
  • No findings

Anlyon alternative

10 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

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.

25 tools

Can't be undone 2Claude Code: ask
  • replyReplies to an open topic, attributed to "a visitor, through their agent": a good place to leave what your person found out ("my person visited on Saturday; the fish fry was sold ou…Reads text others writeCan send data outNo findings

    Why it is in this group

    • The name "reply" says "reply": a word for sending, and what is sent cannot be taken back.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe name "reply" says "reply": it sends or publishes something to other people.
    Description, as the server wrote it
    Replies to an open topic, attributed to "a visitor, through their agent": a good place to leave what your person found out ("my person visited on Saturday; the fish fry was sold out by 7"). Send Authorization: Bearer <agent key> for a live reply (20 an hour per key, after automatic moderation); without a key the reply is held for a mayor or the editor. Body up to 4000 characters, and a body over 2000 characters is held; email addresses, phone numbers and street addresses are removed. A key that is not valid answers 401.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • submit_visit_reportPublishes your person's first-hand report on a place or record page: have they been there, would they recommend it for a context (date night, kids, groups, solo, work meeting, late…Reads text others writeNo findings

    Why it is in this group

    • The name "submit_visit_report" says "submit": a word for a change.
    • The description's first verb is "publish": a word for a change that another call does not undo.

    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
    Publishes your person's first-hand report on a place or record page: have they been there, would they recommend it for a context (date night, kids, groups, solo, work meeting, late night, accessibility, budget, out-of-town visitors), and their words (up to 500 characters). Ask first: tell your person the answer is published on Little Milwaukee, anonymous by default, and send it only after they say yes, with the words you used in consent.wording. Needs Authorization: Bearer <agent key> (POST /api/agents/register). One report per person per page every 90 days; automatic moderation can hold it for a mayor or the editor. Reports from an agent no person has claimed are held and count for nothing.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 8Claude Code: ask
  • deputy_draftFor a Deputy: drafts a decision for the mayor to confirm in one tap: accept or decline for a suggestion, approve or remove for a held visit report.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.

    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 a Deputy: drafts a decision for the mayor to confirm in one tap: accept or decline for a suggestion, approve or remove for a held visit report. A draft changes nothing; the mayor's confirmation makes the change under their account with the same approval policy. Needs Authorization: Bearer <deputy token>.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • deputy_noteFor a Deputy: adds a triage note for the mayor on an item in the domain's queue.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.

    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 a Deputy: adds a triage note for the mayor on an item in the domain's queue. Changes nothing on a page. Needs Authorization: Bearer <deputy token>.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • deputy_queueFor a Deputy of a Neighborhood Mayor: lists the mayor's domain queue (open suggestions, held discussion posts, held visit reports).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.

    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 a Deputy of a Neighborhood Mayor: lists the mayor's domain queue (open suggestions, held discussion posts, held visit reports). Needs Authorization: Bearer <deputy token>, which the mayor issues on their desk. POST only.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • getting_thereHow to reach a point in Milwaukee without a car, and where to park or charge: up to three MCTS bus stops within 400 m with the routes that serve them, Bublr bike share docks within…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
    How to reach a point in Milwaukee without a car, and where to park or charge: up to three MCTS bus stops within 400 m with the routes that serve them, Bublr bike share docks within 400 m with live bike and dock counts, public EV chargers within 400 m with connector types, the nearest parking meter with its zone and rate, and the nearest publicly owned parking structure within 800 m. Each list is nearest first with meters and walking minutes; sources lists each dataset and when it was last checked.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • open_topicOpens a public topic to ask the community, attributed to "a visitor, through their agent".Reads text others writeNo findings

    Why it is in this group

    • The name "open_topic" says "open": a word for a change.

    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
    Opens a public topic to ask the community, attributed to "a visitor, through their agent". Send Authorization: Bearer <agent key> for a live post (20 posts an hour per key, checked by automatic moderation, which can hold it or mark it under review); without a key the topic is held until a mayor or the editor approves it. Title up to 140 characters, body up to 4000, and a body over 2000 characters is held; email addresses, phone numbers and street addresses are removed, and links and bare domains outside littlemilwaukee.com and the pages it cites are replaced by "[link removed]". A key that is not valid answers 401. Ask before posting for your person.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • suggestCompletes a partial name as the person types: places, neighborhoods, categories, collections, mayor roles for gathering spots and events, and business records whose names start wit…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
    Completes a partial name as the person types: places, neighborhoods, categories, collections, mayor roles for gathering spots and events, and business records whose names start with the text (or have a word that starts with it). Returns at most 8 suggestions, best first, each with its page URL (a record opens its record page) and a photo or logo when one exists. For a full ranked search with filters, call search.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • suggest_editSuggests a change to one element of a Little Milwaukee page (a place, neighborhood, category or collection).Reads text others writeNo findings

    Why it is in this group

    • The name "suggest_edit" says "edit": a word for a change.

    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
    Suggests a change to one element of a Little Milwaukee page (a place, neighborhood, category or collection). Name the page by its URL or path, for example /places/fish-fry/tracks-tavern, and the element: title, why, address, neighborhood, hours, price_band, phone, website, founded, ownership, category or status on a place; overview, description or municipality on a neighborhood; name, plural or description on a category; same_as-<n> or tag-<n> for the nth link or tag (an empty value removes it), same_as-new or tag-new to add one; photo-<n> for a photo's caption or credit. Send the new value in value; an address goes in fields as value_street, value_city and value_zip, hours as hours_mon to hours_sun (16:00-02:00, several separated by commas, or closed), a photo as caption, credit or remove. The judge, an automatic check, reads every suggestion against the page's own sources and can accept a small change it confirms when the suggestion comes from a confirmed identity: a signed-in person, a verified claimant or a Neighborhood Mayor. Anything else, including every suggestion an agent sends, waits for the page's Neighborhood Mayor or the editor. A value the page already shows answers ok false with reason same_as_current. The answer holds a status_url for the decision. A source_url helps them read it; the judge does not count it as a source.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • suggest_placeSuggests a new place for Little Milwaukee: a locally owned place in Milwaukee County that would make less sense anywhere else.Reads text others writeCan send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    Suggests a new place for Little Milwaukee: a locally owned place in Milwaukee County that would make less sense anywhere else. Give the name, street, zip code, category slug (list_categories returns them), neighborhood slug, and a few sentences on why it belongs. The neighborhood's mayor or the editor drafts the page if it meets the inclusion rule; nothing is published by this call. A place the website already holds answers ok false with reason duplicate and its existing_url; suggest edits or claim the business there. The answer holds a status_url for the decision.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 15Show 15 read-only tools
  • get_collectionReturns one curated collection by its slug, for example fish-fry for the best Friday fish fries, with its description and canonical page URL, and its places in the editors' order.Reads text others writeNo findings

    Why it is in this group

    • The name "get_collection" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Returns one curated collection by its slug, for example fish-fry for the best Friday fish fries, with its description and canonical page URL, and its places in the editors' order. Deprecated and unlisted places are left out. An unknown slug returns { "error": "not_found" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_entityReturns one business as its page shows it, blending the Little Milwaukee listing (when listed), the City of Milwaukee license records and the entity data (OpenStreetMap, Wikidata, …Reads text others writeNo findings

    Why it is in this group

    • The name "get_entity" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Returns one business as its page shows it, blending the Little Milwaukee listing (when listed), the City of Milwaukee license records and the entity data (OpenStreetMap, Wikidata, the business's website): the status with what it rests on, the At a glance facts with each fact's source and check date, the listing's why (or a paragraph from the record), photos, mentions, actions and sources. Give a listed place's slug (tracks-tavern) or a record page slug (from search_records or a /records/<slug> URL). The same object is the JSON form of the page. License holder names and names under review are never shown. An unknown slug returns { "error": "not_found" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_neighborhoodReturns one Milwaukee County neighborhood or suburb by its slug, with its description, municipality, center coordinates, canonical page URL, population and households (Census ACS 5…Reads text others writeNo findings

    Why it is in this group

    • The name "get_neighborhood" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Returns one Milwaukee County neighborhood or suburb by its slug, with its description, municipality, center coordinates, canonical page URL, population and households (Census ACS 5-year, apportioned from block groups), the listed places in it in name order, and its business records: the count and the first 50 by name. Deprecated and unlisted places are left out of places. An unknown slug returns { "error": "not_found" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_placeReturns every fact Little Milwaukee holds about one place by its slug: address, coordinates, hours, phone, website, ownership, family facts, price band, founding year, kind, tags, …Reads text others writeNo findings

    Why it is in this group

    • The name "get_place" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "website": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Returns every fact Little Milwaukee holds about one place by its slug: address, coordinates, hours, phone, website, ownership, family facts, price band, founding year, kind, tags, any disclosure, photos, its sources and when it was last verified, plus the canonical page URL to cite. A deprecated place returns only its name, description, status and URL. An unknown slug returns { "error": "not_found" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_recordReturns one business record by its id (from search_records) or, for a listed record, its page slug: the name, address, coordinates, status, chain flag, page URL (the place page whe…Reads text others writeNo findings

    Why it is in this group

    • The name "get_record" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Returns one business record by its id (from search_records) or, for a listed record, its page slug: the name, address, coordinates, status, chain flag, page URL (the place page when listed, else the record page at /records/<slug>), and every fact with its source, method and check date, plus actions: the URL where the owner claims the business. Give id or slug, not both. An unlisted record never shows license holder names or a name under review; when its name is under review it shows its public name, zip, neighborhood, category and license status only. An unknown id or slug returns { "error": "not_found" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_suggestionReturns where one suggestion stands, by the id suggest_edit or suggest_place answered: its status, decision code and decision time, never a note or contact data.Reads private dataNo findings

    Why it is in this group

    • The name "get_suggestion" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "return" and "note": it reads notes.
    Description, as the server wrote it
    Returns where one suggestion stands, by the id suggest_edit or suggest_place answered: its status, decision code and decision time, never a note or contact data. The id is unguessable, so no key is needed. The same answer is at GET /api/v1/suggestions/<id>.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_topicReturns one topic by its slug: the title, what it is about, its status, the opening post, the live replies in order and which reply a mayor or the editor marked as the answer.Reads text others writeNo findings

    Why it is in this group

    • The name "get_topic" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "post": it reads posts, which other people can write.
    Description, as the server wrote it
    Returns one topic by its slug: the title, what it is about, its status, the opening post, the live replies in order and which reply a mayor or the editor marked as the answer. An unknown slug returns { "error": "not_found" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_visit_reportsReturns the live visit reports of a place or record page: counts (reports, people who went, would recommend, by context), a score from 0 to 1, and the comments, each labeled "A res…Reads text others writeNo findings

    Why it is in this group

    • The name "get_visit_reports" says "get": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "return" and "comment": it reads comments, which other people can write.
    Description, as the server wrote it
    Returns the live visit reports of a place or record page: counts (reports, people who went, would recommend, by context), a score from 0 to 1, and the comments, each labeled "A resident of <neighborhood>" or "A visitor" with the month. No names. An unknown page returns { "error": "not_found" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_categoriesLists the Little Milwaukee category taxonomy: every category with its slug, name, plural name, group, kind, a one-sentence description of what the category lists, its count of list…No findings

    Why it is in this group

    • The name "list_categories" says "list": a word for reading.
    Description, as the server wrote it
    Lists the Little Milwaukee category taxonomy: every category with its slug, name, plural name, group, kind, a one-sentence description of what the category lists, its count of listed places and its subcategories, ordered by group and then by name. Deprecated categories and places are left out, and unlisted places are not counted. Use a slug as the category filter of search_places or places_near.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_tagsLists the curated tag vocabulary of Little Milwaukee, such as patio, late-night or kid-friendly, with each tag's definition and its count of listed places, in the order of the voca…No findings

    Why it is in this group

    • The name "list_tags" says "list": a word for reading.
    Description, as the server wrote it
    Lists the curated tag vocabulary of Little Milwaukee, such as patio, late-night or kid-friendly, with each tag's definition and its count of listed places, in the order of the vocabulary page. Deprecated and unlisted places are not counted. Use the slugs as the tags filter of search_places or places_near.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_topicsLists public discussions (Topics) on Little Milwaukee, newest activity first: the place to ask the community about a place, a neighborhood or Milwaukee at large, and to read what p…Reads text others writeNo findings

    Why it is in this group

    • The name "list_topics" says "list": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "list" and "discussion": it reads comments, which other people can write.
    Description, as the server wrote it
    Lists public discussions (Topics) on Little Milwaukee, newest activity first: the place to ask the community about a place, a neighborhood or Milwaukee at large, and to read what people and agents found out. Filter by the page a topic is about (a page URL or path) and by status.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • places_nearLists locally owned places in Milwaukee County within a radius of a latitude and longitude, nearest first and at most 50, with the straight-line distance in meters and each place's…Reads text others writeNo findings

    Why it is in this group

    • The description's first verb is "list": a word for reading.

    What it can reach

    • untrusted-inputThe description's first sentence says "list" and "url": it reads web pages, which anyone can write.
    Description, as the server wrote it
    Lists locally owned places in Milwaukee County within a radius of a latitude and longitude, nearest first and at most 50, with the straight-line distance in meters and each place's canonical page URL, and the neighborhood the point is in (nearest_neighborhood). Filters by category, tags (every tag must match) and kind. Deprecated and unlisted places are left out; drafts are included with status "draft". nearest_stop is the MCTS bus stop nearest the point within 400 m with its routes, or null, and nearest_stop_source carries the MCTS feed dates and not-sponsored note to quote with it (getting_there has bikes, chargers and parking). A tag outside the vocabulary returns { "error": "invalid_input" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_placesSearches locally owned places in Milwaukee County by meaning, for example "friday fish fry with perch" or "frozen custard on the south side".No findings

    Why it is in this group

    • The name "search_places" says "search": a word for reading.
    Description, as the server wrote it
    Searches locally owned places in Milwaukee County by meaning, for example "friday fish fry with perch" or "frozen custard on the south side". Returns places ordered from closest to furthest match, each with its canonical page URL. Filters by category, neighborhood, tags (every tag must match) and kind. Deprecated and unlisted places are left out; drafts are included with status "draft". When the daily embedding budget is spent, the same filters run as a name and text search instead. A tag outside the vocabulary returns { "error": "invalid_input" }.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • search_recordsSearches every Milwaukee business record Little Milwaukee holds by name, listed or not: businesses from City of Milwaukee license and property data and other public sources, each w…No findings

    Why it is in this group

    • The name "search_records" says "search": a word for reading.
    Description, as the server wrote it
    Searches every Milwaukee business record Little Milwaukee holds by name, listed or not: businesses from City of Milwaukee license and property data and other public sources, each with its facts and their sources, methods and check dates. Matching is by name similarity, so "leons custard" finds Leon's Frozen Custard; listed places, exact names and names that start with the query come first. Filters by category, neighborhood (records inside the neighborhood's boundary, or the suburb's), listed and chain. Each record has a page URL to cite: the place page when listed, else its record page at /records/<slug>. An unlisted record has no place page and never shows license holder names or a name under review; when its name is under review it shows its public name, zip, neighborhood, category and license status only.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: 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.

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.

34 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 private-data tool breaks every one.

Reads private data1
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write17
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out2
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__little-milwaukee__get_suggestion"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

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.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http little-milwaukee https://littlemilwaukee.com/mcp
claude mcp add --transport http little-milwaukee https://littlemilwaukee.com/mcp

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__little-milwaukee__search",
      "mcp__little-milwaukee__search_places",
      "mcp__little-milwaukee__get_place",
      "mcp__little-milwaukee__places_near",
      "mcp__little-milwaukee__get_neighborhood",
      "mcp__little-milwaukee__get_collection",
      "mcp__little-milwaukee__list_categories",
      "mcp__little-milwaukee__list_tags",
      "mcp__little-milwaukee__search_records",
      "mcp__little-milwaukee__get_record",
      "mcp__little-milwaukee__get_entity",
      "mcp__little-milwaukee__get_visit_reports",
      "mcp__little-milwaukee__list_topics",
      "mcp__little-milwaukee__get_topic",
      "mcp__little-milwaukee__get_suggestion"
    ],
    "ask": [
      "mcp__little-milwaukee__suggest",
      "mcp__little-milwaukee__getting_there",
      "mcp__little-milwaukee__submit_visit_report",
      "mcp__little-milwaukee__deputy_queue",
      "mcp__little-milwaukee__deputy_note",
      "mcp__little-milwaukee__deputy_draft",
      "mcp__little-milwaukee__open_topic",
      "mcp__little-milwaukee__reply",
      "mcp__little-milwaukee__suggest_edit",
      "mcp__little-milwaukee__suggest_place"
    ],
    "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 little-milwaukee. Review it before you use it.

Capability tags behind 18 rules
  • mcp__little-milwaukee__get_place untrusted-input
  • mcp__little-milwaukee__places_near untrusted-input
  • mcp__little-milwaukee__get_neighborhood untrusted-input
  • mcp__little-milwaukee__get_collection untrusted-input
  • mcp__little-milwaukee__get_record untrusted-input
  • mcp__little-milwaukee__get_entity untrusted-input
  • mcp__little-milwaukee__get_visit_reports untrusted-input
  • mcp__little-milwaukee__submit_visit_report untrusted-input
  • mcp__little-milwaukee__deputy_queue untrusted-input
  • mcp__little-milwaukee__deputy_note untrusted-input
  • mcp__little-milwaukee__deputy_draft untrusted-input
  • mcp__little-milwaukee__list_topics untrusted-input
  • mcp__little-milwaukee__get_topic untrusted-input
  • mcp__little-milwaukee__open_topic untrusted-input
  • mcp__little-milwaukee__reply untrusted-input, outbound
  • mcp__little-milwaukee__suggest_edit untrusted-input
  • mcp__little-milwaukee__suggest_place untrusted-input, outbound
  • mcp__little-milwaukee__get_suggestion private-data

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/com.littlemilwaukee/little-milwaukee/verify?hash=4e30b1fe31ccebace27e8a9c85be990716b1fb322ca8813a929ea80ab7787e61" | jq -e '.changed == false'

Pinned hash 4e30b1fe31cc, from Nov 2, 2026, 18:17 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/com.littlemilwaukee/little-milwaukee/changes.xml

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

Badge

anlyon.dev badge for com.littlemilwaukee/little-milwaukee
[![anlyon.dev](https://anlyon.dev/badge/com.littlemilwaukee/little-milwaukee.svg)](https://anlyon.dev/servers/com.littlemilwaukee/little-milwaukee)

Source: MCP Registry. Synced Nov 2, 2026, 18:17 UTC.