Skip to content

Agoria

by agoria.studio · remote · no sign-in to list tools · v0.2.0 · published by studio.agoria

Search local businesses and book, order, quote or message any of them from one connection.

Changes · 9

18 tools: 9 change things and 9 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http registry https://agoria.studio/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "open_demand" 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 name "open_demand" says "open": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

18 tools

Changes things 9Claude Code: ask
  • accept_quoteChoose a business's quote.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.
    Description, as the server wrote it
    Choose a business's quote. This creates a real order at that business and declines the others. If that business protects payments, the reply carries a payment link where the money is held by Agoria until the customer confirms they got the work — hand that link to the customer.

    Annotations the server declares

    • title: Accept one of the quotes
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • ask_marketSame index as search_market, but takes a plain sentence — 'three bedroom house under 800k in Geelong', 'automatic ute under 80,000km' — and works out the filters itself.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
    Same index as search_market, but takes a plain sentence — 'three bedroom house under 800k in Geelong', 'automatic ute under 80,000km' — and works out the filters itself. Use it when you have the user's own words; use search_market when you already know the exact filters.

    Annotations the server declares

    • title: Search everything for sale, in one sentence
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • book_appointmentBook an appointment at any business by slug.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.
    Description, as the server wrote it
    Book an appointment at any business by slug. Confirm the slot with check_availability first.

    Annotations the server declares

    • title: Book an appointment at a business
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • check_availabilityCheck open appointment slots for a service at a business on a date (YYYY-MM-DD).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
    Check open appointment slots for a service at a business on a date (YYYY-MM-DD).

    Annotations the server declares

    • title: Check availability at a business
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • create_wantSave a standing search on the customer's behalf.No findings

    Why it is in this group

    • The name "create_want" says "create": a word for a change.
    Description, as the server wrote it
    Save a standing search on the customer's behalf. They get told when matching supply appears, AND — anonymously, without their contact details — sellers who could satisfy it can see it and offer. Use this when search_market found nothing good: it converts a dead end into a request the market can answer.

    Annotations the server declares

    • title: Tell the network what you're looking for
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • open_demandOpen standing requests from real buyers, anonymised.1 finding

    Why it is in this group

    • The name "open_demand" says "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "open_demand" 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 name "open_demand" says "open": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Open standing requests from real buyers, anonymised. Useful for a business deciding what to stock or list, and for understanding where the network has no supply at all.

    Annotations the server declares

    • title: What buyers are looking for and nobody is supplying
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • price_guideA price distribution for comparable items on the network — asking prices, and where the network settled the sale, what buyers actually paid.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
    A price distribution for comparable items on the network — asking prices, and where the network settled the sale, what buyers actually paid. Widens the comparison and says so when the exact match is too thin to be meaningful.

    Annotations the server declares

    • title: What is a fair price?
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • request_quotesDescribe a job once and send it to the businesses that can price it.No findings

    Why it is in this group

    • The name "request_quotes" says "request": a word for a change.
    Description, as the server wrote it
    Describe a job once and send it to the businesses that can price it. Each one answers with a real number, what it covers, and how long the price stands. Returns a briefToken — poll compare_quotes with it to see the prices as they land, then accept_quote to choose one. Use this instead of calling request_quote at each business separately.

    Annotations the server declares

    • title: Get quotes from several businesses at once
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • take_actionPerform any non-booking action a business supports (request_quote, place_order, send_message, pay_invoice, sign_document, subscribe, register…).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.
    Description, as the server wrote it
    Perform any non-booking action a business supports (request_quote, place_order, send_message, pay_invoice, sign_document, subscribe, register…). Get valid action ids and their fields from get_business. Pass the action's fields as a JSON object. If the result is 'action_required', hand the user the next.url (payment/signing link) or re-call with fields.confirmToken to confirm.

    Annotations the server declares

    • title: Take an action at a business
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 9Claude Code: allow
  • compare_quotesSee every business's answer to a brief side by side: price, what it covers, lead time, rating, whether the payment would be protected, and which is cheapest or soonest.No findings

    Why it is in this group

    • The name "compare_quotes" says "compare": a word for reading.
    Description, as the server wrote it
    See every business's answer to a brief side by side: price, what it covers, lead time, rating, whether the payment would be protected, and which is cheapest or soonest.

    Annotations the server declares

    • title: Compare the quotes on a brief
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_businessGet full details for a business by slug: description, contact, hours, services, FAQs, and the actions its agent supports.No findings

    Why it is in this group

    • The name "get_business" says "get": a word for reading.
    Description, as the server wrote it
    Get full details for a business by slug: description, contact, hours, services, FAQs, and the actions its agent supports.

    Annotations the server declares

    • title: Get a business profile
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_itemEverything about a single item: full facets, photos, where it is, who is selling it and how well-proven they are, a price guide computed from comparable items on the network, and t…No findings

    Why it is in this group

    • The name "get_item" says "get": a word for reading.
    Description, as the server wrote it
    Everything about a single item: full facets, photos, where it is, who is selling it and how well-proven they are, a price guide computed from comparable items on the network, and the adjacent services a buyer usually needs next (finance, inspection, conveyancing, transport).

    Annotations the server declares

    • title: Get one item for sale
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • get_reviewsGet a business's aggregate rating and reviews by slug.No findings

    Why it is in this group

    • The name "get_reviews" says "get": a word for reading.
    Description, as the server wrote it
    Get a business's aggregate rating and reviews by slug. Optionally filter to a product/service id.

    Annotations the server declares

    • title: Get reviews & rating for a business
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_market_filtersWhat can be searched and filtered on.No findings

    Why it is in this group

    • The name "list_market_filters" says "list": a word for reading.
    Description, as the server wrote it
    What can be searched and filtered on. Call this when you are unsure which `kind` or which `filters` keys search_market will accept.

    Annotations the server declares

    • title: List the item kinds and filters available
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • list_productsList the products a business sells by slug — price/sale, availability/stock, brand, SKU/GTIN, variants, specs, dimensions.No findings

    Why it is in this group

    • The name "list_products" says "list": a word for reading.
    Description, as the server wrote it
    List the products a business sells by slug — price/sale, availability/stock, brand, SKU/GTIN, variants, specs, dimensions.

    Annotations the server declares

    • title: List products at a business
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • resolve_placeResolve a suburb, postcode or city to coordinates and the radius that name implies.No findings

    Why it is in this group

    • The name "resolve_place" says "resolve": a word for reading.
    Description, as the server wrote it
    Resolve a suburb, postcode or city to coordinates and the radius that name implies. Use it to check a place exists before passing it to search_market.

    Annotations the server declares

    • title: Turn a place name into a point and a radius
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_businessesFind businesses on Agoria by free-text query, category, and/or city.No findings

    Why it is in this group

    • The name "search_businesses" says "search": a word for reading.
    Description, as the server wrote it
    Find businesses on Agoria by free-text query, category, and/or city. Returns each business's slug plus the actions its agent can take, so you can act on it directly from this same connection.

    Annotations the server declares

    • title: Search the business directory
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • search_marketSearch individual items across every business on the network — property listings, vehicles, courses, products, services, events, plans — with typed filters, a price range and a rad…No findings

    Why it is in this group

    • The name "search_market" says "search": a word for reading.
    Description, as the server wrote it
    Search individual items across every business on the network — property listings, vehicles, courses, products, services, events, plans — with typed filters, a price range and a radius around a place. Prefer this over search_businesses whenever the user is looking for a THING rather than a company. Returns items with prices, locations, photo counts and the seller's verification status.

    Annotations the server declares

    • title: Search everything for sale
    • 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.

Install

Pinned to version 0.2.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http registry https://agoria.studio/mcp

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__registry__search_businesses",
      "mcp__registry__search_market",
      "mcp__registry__get_item",
      "mcp__registry__list_market_filters",
      "mcp__registry__resolve_place",
      "mcp__registry__get_business",
      "mcp__registry__list_products",
      "mcp__registry__get_reviews",
      "mcp__registry__compare_quotes"
    ],
    "ask": [
      "mcp__registry__ask_market",
      "mcp__registry__price_guide",
      "mcp__registry__create_want",
      "mcp__registry__open_demand",
      "mcp__registry__check_availability",
      "mcp__registry__book_appointment",
      "mcp__registry__take_action",
      "mcp__registry__request_quotes",
      "mcp__registry__accept_quote"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as registry. Review it before you use it.