Skip to content

Filipe Santos Fotografia

by filipesantosfotografia.com · remote · no sign-in to list tools · v0.4.0 · published by com.filipesantosfotografia

Porto photo studio: prices, bookings, gift vouchers, quotes and AI caricature booth software.

Deletes · 2Final · 1Changes · 6

12 tools: 2 can delete or cancel things, 1 do something that can't be undone, 6 change things and 3 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 estudio https://mcp.filipesantosfotografia.com/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "check_gift_voucher" 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":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.

    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.

12 tools

Deletes or cancels 2Claude Code: deny
  • cancel_studio_bookingCancels a studio booking identified by its reference (e.g.No findings

    Why it is in this group

    • The name "cancel_studio_booking" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Cancels a studio booking identified by its reference (e.g. FSF-1A2B3C4D) and the email used to book. Before calling, tell the user the policy and get explicit confirmation: there are no cash refunds; cancelling at least 24 h before turns the amount paid into studio credit (a code valid 12 months for any session); less than 24 h before is not possible. Offer to reschedule instead (up to 2 times). Unpaid pre-bookings are simply released; amounts paid with a voucher go back to the voucher.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
    • idempotentHint: true
  • reschedule_studio_bookingMoves an existing studio booking (up to 2 times) to a new free time, identified by booking reference and the email used to book.No findings

    Why it is in this group

    • The name "reschedule_studio_booking" says "reschedule": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Moves an existing studio booking (up to 2 times) to a new free time, identified by booking reference and the email used to book. Check free times first with get_studio_slots for the same package and confirm the new time with the user before calling. Not possible less than 24 hours before the current session.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • openWorldHint: true
    • idempotentHint: true
Can't be undone 1Claude Code: ask
  • request_quoteSends a quote request to the studio for anything not bookable directly (weddings, baptisms, corporate photo/video, photobooth / 360 videobooth / AI caricature mirror, couple or pro…No findings

    Why it is in this group

    • The name "request_quote" says "request": a word for a change.
    • The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Sends a quote request to the studio for anything not bookable directly (weddings, baptisms, corporate photo/video, photobooth / 360 videobooth / AI caricature mirror, couple or proposal sessions, studio events, prints). Creates the request in the studio's system; the client gets a confirmation email and a personal proposal within 24 hours. Only call after the user confirms the details and agrees to be contacted.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
Changes things 6Claude Code: ask
  • buy_caricature_booth_creditsBuys event passes for the Photobooth Caricatura software license of an event vendor: each pass adds 600 AI caricatures for 39€ (no subscription, credits do not expire), 1 to 10 pas…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
    Buys event passes for the Photobooth Caricatura software license of an event vendor: each pass adds 600 AI caricatures for 39€ (no subscription, credits do not expire), 1 to 10 passes per purchase. Paid now by MB WAY, Multibanco or card; the caricatures are added to the license automatically as soon as the payment is confirmed and a confirmation email is sent. Needs the license key and the email it was registered with. Only call after the user confirms the number of passes, total price and payment method.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • buy_gift_voucherSells a digital gift voucher for the studio (great for Christmas, birthdays, Mother's/Father's Day): either a specific session (base 35€, completo 150€, equipa 250€, familia 200€, …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
    Sells a digital gift voucher for the studio (great for Christmas, birthdays, Mother's/Father's Day): either a specific session (base 35€, completo 150€, equipa 250€, familia 200€, natal 159€) or an amount (50, 100, 150, 200 or 250€). Paid now by MB WAY, Multibanco or card; after payment the buyer receives the voucher by email, ready to print or forward, with a code valid 12 months for any studio session (unused balance stays on the voucher). Only call after the buyer confirms what to buy, their name and email, and the payment method.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • check_event_dateChecks whether the studio can still take an event on a given date (weddings, baptisms, corporate events and other on-location work; the studio has two teams).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
    Checks whether the studio can still take an event on a given date (weddings, baptisms, corporate events and other on-location work; the studio has two teams). Returns available, limited (one team left) or fully_booked. The answer is indicative; the date is only reserved after the proposal is accepted. Use before request_quote when the user has a date.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • idempotentHint: true
  • check_gift_voucherChecks a gift voucher or studio credit code (FSF-XXXX-XXXX): whether it is valid, its balance and expiry date.1 finding

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "check_gift_voucher" 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":false}; The input takes a statement or command to run (input.code), which can change anything it can reach.

      What this check looks for
    Description, as the server wrote it
    Checks a gift voucher or studio credit code (FSF-XXXX-XXXX): whether it is valid, its balance and expiry date.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • idempotentHint: true
  • request_studio_bookingPre-books a studio portrait, family session or studio rental at a free slot from get_studio_slots and starts payment.No findings

    Why it is in this group

    • The name "request_studio_booking" says "request": a word for a change.
    Description, as the server wrote it
    Pre-books a studio portrait, family session or studio rental at a free slot from get_studio_slots and starts payment. Only call after the user has explicitly confirmed the package, the exact start time and their contact details. Suggest MB WAY first (instant); a Multibanco reference is only possible for sessions more than 48 h away. A gift voucher or studio credit code (FSF-XXXX-XXXX) pays all or part of the price. The slot is held for a limited time (hold_expires_at) and the booking is confirmed once paid. Offer extra edited photos (5€ each) and make-up when relevant. Calling again with the same email, package and time returns the same pre-booking.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
  • start_caricature_booth_demoFor event vendors (photobooth / magic mirror companies, wedding photographers, entertainment, event rental): starts a free demo of the Photobooth Caricatura software — a white-labe…No findings

    Why it is in this group

    • The name "start_caricature_booth_demo" says "start": a word for a change.
    Description, as the server wrote it
    For event vendors (photobooth / magic mirror companies, wedding photographers, entertainment, event rental): starts a free demo of the Photobooth Caricatura software — a white-label Windows app that turns each guest photo into an AI caricature in seconds, delivered by QR code and printed with the vendor's own frame and logo. Creates a license with 10 free caricatures and emails the key and the quick-start guide; the studio then sends the software link and helps with the first setup. One demo per business email (asking again returns the same license). Only call after the user confirms the business name and email.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
    • idempotentHint: true
Only reads 3Claude Code: allow
  • check_caricature_booth_creditsShows how many AI caricatures are left on an event vendor's Photobooth Caricatura license and how many were used.No findings

    Why it is in this group

    • The description's first verb is "show": a word for reading.
    Description, as the server wrote it
    Shows how many AI caricatures are left on an event vendor's Photobooth Caricatura license and how many were used. Needs the license key and the email it was registered with.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • idempotentHint: true
  • get_studio_slotsLists free start times at Estúdio 266 for a bookable package between two dates (max 21 days).No findings

    Why it is in this group

    • The name "get_studio_slots" says "get": a word for reading.
    Description, as the server wrote it
    Lists free start times at Estúdio 266 for a bookable package between two dates (max 21 days). Monday–Friday, 10:00–18:00 Lisbon time, closed on Portuguese public holidays, booked at least 24 h ahead. Times are ISO 8601 with the Lisbon offset.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_servicesReturns Filipe Santos Fotografia's public catalog with prices: studio portrait and family packages, studio rental, add-ons, corporate photo/video and extras, wedding collections an…No findings

    Why it is in this group

    • The name "list_services" says "list": a word for reading.
    Description, as the server wrote it
    Returns Filipe Santos Fotografia's public catalog with prices: studio portrait and family packages, studio rental, add-ons, corporate photo/video and extras, wedding collections and price range, baptism packages, photobooth / 360 videobooth / AI caricature mirror packages, studio events, other sessions, the AI caricature mirror software licensed to event vendors, delivery times and contact. Use when the user asks what the studio offers, how much something costs, or how booking works. Optionally filter by category.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
    • idempotentHint: 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.4.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http estudio https://mcp.filipesantosfotografia.com/mcp

Run in a terminal.

Claude Code permissions

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

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__estudio__list_services",
      "mcp__estudio__get_studio_slots",
      "mcp__estudio__check_caricature_booth_credits"
    ],
    "ask": [
      "mcp__estudio__request_studio_booking",
      "mcp__estudio__check_event_date",
      "mcp__estudio__request_quote",
      "mcp__estudio__buy_gift_voucher",
      "mcp__estudio__check_gift_voucher",
      "mcp__estudio__start_caricature_booth_demo",
      "mcp__estudio__buy_caricature_booth_credits"
    ],
    "deny": [
      "mcp__estudio__cancel_studio_booking",
      "mcp__estudio__reschedule_studio_booking"
    ]
  }
}

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 estudio. Review it before you use it.