Skip to main content
Glama
ubaranzorlu
by ubaranzorlu

fonzip-mcp

Fonzip API v2 için Model Context Protocol sunucusu

Dernek ve vakıfların bağış, üye, aidat, etkinlik ve kampanya verilerine AI ajanlarından erişim.

npm CI License: MIT MCP Registry


Bağımsız bir açık kaynak projesidir; Fonzip Yazılım A.Ş. tarafından geliştirilmemiş, desteklenmemekte ve onaylanmamaktadır.

Claude Code, Claude Desktop, Cursor, VS Code, Codex ve MCP destekleyen diğer istemcilerin Fonzip verilerinize doğrudan erişmesini sağlar.

Sen:    Bu ay kaç düzenli bağışçı kaydolmuş, toplam ne kadar?
Ajan:   [fonzip_donations / list çağrılır]
        Ağustos'ta 34 yeni düzenli bağışçı, aylık toplam 41.250 TL.
  • 13 tool, Fonzip API v2'nin 113 operasyonunu kapsar

  • Tool tanımları OpenAPI spec'inden otomatik üretilir — elle senkron tutulmaz

  • OAuth2 client_credentials, token'ı süreçler arası saklama dahil

  • Türkçe hata mesajları; hatalı çağrıda beklenen şema modele geri döner

Kurulum

Node.js 20 veya üstü gerekir. Önce Fonzip'te Ayarlar > Gelişmiş > Fonzip API menüsünden API anahtarı oluşturun; size bir client_id ve client_secret verilir.

IMPORTANT

Fonzip anahtarları$2b$12$... ile başlar. Kabukta tek tırnak kullanın — çift tırnak veya tırnaksız yazarsanız kabuk $2b ve $12 kısımlarını değişken sanıp siler ve HTTP 403 alırsınız. JSON dosyalarında bu sorun yoktur.

claude mcp add fonzip \
  -e FONZIP_CLIENT_ID='...' \
  -e FONZIP_CLIENT_SECRET='...' \
  -- npx -y @ubaranzorlu/fonzip-mcp

Sadece bulunduğunuz projeye ekler. Tüm projelerde kullanmak için -s user, ekiple paylaşmak için -s project ekleyin.

Ayarlar > Developer > Edit Config ile claude_desktop_config.json dosyasını açın:

{
  "mcpServers": {
    "fonzip": {
      "command": "npx",
      "args": ["-y", "@ubaranzorlu/fonzip-mcp"],
      "env": {
        "FONZIP_CLIENT_ID": "...",
        "FONZIP_CLIENT_SECRET": "..."
      }
    }
  }
}

Claude Desktop'ı yeniden başlatın.

~/.cursor/mcp.json (global) veya proje kökünde .cursor/mcp.json:

{
  "mcpServers": {
    "fonzip": {
      "command": "npx",
      "args": ["-y", "@ubaranzorlu/fonzip-mcp"],
      "env": {
        "FONZIP_CLIENT_ID": "...",
        "FONZIP_CLIENT_SECRET": "..."
      }
    }
  }
}
code --add-mcp '{"name":"fonzip","command":"npx","args":["-y","@ubaranzorlu/fonzip-mcp"],"env":{"FONZIP_CLIENT_ID":"...","FONZIP_CLIENT_SECRET":"..."}}'

Ya da .vscode/mcp.json dosyasına yazıp anahtarları girdi olarak sorun:

{
  "inputs": [
    { "type": "promptString", "id": "fonzip-id", "description": "Fonzip client id", "password": true },
    { "type": "promptString", "id": "fonzip-secret", "description": "Fonzip client secret", "password": true }
  ],
  "servers": {
    "fonzip": {
      "command": "npx",
      "args": ["-y", "@ubaranzorlu/fonzip-mcp"],
      "env": {
        "FONZIP_CLIENT_ID": "${input:fonzip-id}",
        "FONZIP_CLIENT_SECRET": "${input:fonzip-secret}"
      }
    }
  }
}

~/.codex/config.toml:

[mcp_servers.fonzip]
command = "npx"
args = ["-y", "@ubaranzorlu/fonzip-mcp"]
env = { FONZIP_CLIENT_ID = "...", FONZIP_CLIENT_SECRET = "..." }

Standart stdio MCP sunucusudur. İstemcinizin yapılandırmasına şunu tanıtın:

komut:    npx
argüman:  -y @ubaranzorlu/fonzip-mcp
ortam:    FONZIP_CLIENT_ID, FONZIP_CLIENT_SECRET

Sunucu MCP Registry'de io.github.ubaranzorlu/fonzip adıyla kayıtlıdır; registry'den kurulum destekleyen istemciler doğrudan bulabilir.

Doğrulama

İstemcinize sorun: "Fonzip hesabımın bilgilerini göster" — sunucu fonzip_system / me çağrısıyla kurum adınızı döndürmeli.

Related MCP server: DataDawn MCP Server

Ortam değişkenleri

Değişken

Zorunlu

Varsayılan

Açıklama

FONZIP_CLIENT_ID

evet¹

Fonzip API client id

FONZIP_CLIENT_SECRET

evet¹

Fonzip API client secret

FONZIP_ACCESS_TOKEN

hayır

Hazır token. Verilirse client_credentials akışı atlanır

FONZIP_BASE_URL

hayır

https://fonzip.com/api/v2

API adresi

FONZIP_SCHEMA_MODE

hayır

full

full veya compactşema modu

FONZIP_TOKEN_CACHE

hayır

~/.cache/fonzip-mcp/tokens.json

Token önbelleği yolu. off ile kapatılır

FONZIP_TIMEOUT_MS

hayır

30000

İstek zaman aşımı

FONZIP_MAX_RETRIES

hayır

3

429 ve 5xx için yeniden deneme sayısı

FONZIP_USER_AGENT

hayır

fonzip-mcp/<sürüm>

Boş bırakmayınneden

¹ FONZIP_ACCESS_TOKEN verilmediyse zorunlu.

Tool'lar

Fonzip API v2'de 115 operasyon var. Her biri ayrı bir tool olsaydı istemcinin tool listesi şişerdi; bunun yerine operasyonlar konu başlığına göre 13 tool'da gruplandı. Her tool zorunlu bir action parametresi alır.

Tool

Action

Kapsam

fonzip_system

5

Kurum bilgisi (me), ödeme sistemleri, banka hesapları, pazarlama kanalları

fonzip_users

18

Üye/bağışçı kayıtları, zaman tüneli, etiketler, kişiye bağlı listeler

fonzip_donations

14

Bağışlar, bağış kategorileri, mikro bağışlar, bağış sayfaları ve formları

fonzip_monthly_donations

5

Düzenli bağış tutar/kart değişikliği ve iptal

fonzip_membership_dues

9

Aidat abonelikleri ve borçlar

fonzip_events

12

Etkinlikler, biletler, bilet satışları

fonzip_fundraising

19

Bağış kampanyaları, kampanya etkinlikleri, takımlar

fonzip_forms

4

Formlar ve form cevapları

fonzip_ecards

9

E-kartlar, kategoriler, satış işlemleri

fonzip_tags

4

Etiket yönetimi

fonzip_templates

5

Mesaj şablonları

fonzip_webhooks

6

Webhook yönetimi ve test bildirimi

fonzip_communication_permissions

3

E-posta/SMS/telefon izinleri

/token ve /authorize uçları tool olarak sunulmaz; kimlik doğrulama sunucunun kendi işidir.

Örnek çağrı:

{
  "name": "fonzip_donations",
  "arguments": {
    "action": "list",
    "status": "paid",
    "start_date": "2026-01-01T00:00:00+03:00",
    "end_date": "2026-01-31T23:59:59+03:00"
  }
}

Şema modu

full (varsayılan) modda her tool'un tüm parametreleri JSON Schema olarak istemciye gönderilir. 13 tool'un toplam şeması yaklaşık 70 KB (~19 bin token) tutar; model tek turda doğru çağrıyı kurabilir.

Bağlam bütçesi darsa FONZIP_SCHEMA_MODE=compact kullanın: şemalar yalnızca action ve serbest bir params objesine iner, alan adları ise tool açıklamasında özetlenir. Toplam yaklaşık 22 KB (~6 bin token), yani full modun üçte biri. Eksik alan gönderildiğinde hata mesajı o action'ın tam şemasını geri döndürür, böylece model kendini düzeltir.

Her iki modda da hem düz ({"action": "get", "user_id": 1}) hem sarmalanmış ({"action": "get", "params": {"user_id": 1}}) biçim kabul edilir.

Bilinmesi gerekenler

Fonzip aynı anda tek token verir. Geçerli bir token varken /token çağrısı HTTP 409 "Token already created" döner. MCP sunucuları sık yeniden başlatıldığından, token varsayılan olarak ~/.cache/fonzip-mcp/tokens.json dosyasına (0600 izniyle, client id yazılmadan) kaydedilir ve yeniden başlatmada tekrar kullanılır. Bu önbelleği kapatırsanız sunucu yeniden başladığında bir saate kadar token alamayabilir.

User-Agent zorunludur. Fonzip'in önündeki Cloudflare, User-Agent başlığı olmayan istekleri HTTP 403 (error code 1010) ile reddeder. FONZIP_USER_AGENT değerini boş bırakmayın.

Hız sınırı dakikada 240 istektir. HTTP 429 alındığında Retry-After başlığına uyularak yeniden denenir.

İşlem listeleri tarih aralığı ister. start_date ve end_date şu action'larda zorunludur; eksikse istek Fonzip'e gitmeden reddedilir:

fonzip_donationslist, list_micro, report · fonzip_membership_dueslist · fonzip_eventslist_ticket_sales · fonzip_formslist_answers · fonzip_ecardslist_transactions

Sayfalama (start_page, varsayılan 1) ve sayfa boyutu (how_many, varsayılan 10, en fazla 100) göndermezseniz varsayılanları otomatik eklenir. Aynı şekilde fonzip_donations / list için status varsayılan olarak paid gider.

Yazma işlemleri açıktır. Sunucu tüm CRUD operasyonlarını sunar; silme işlemleri geri alınamaz. Silme içeren tool'lar MCP destructiveHint ile işaretlenir, istemciniz bunlar için onay isteyebilir. Yalnızca okuma istiyorsanız Fonzip'te salt okunur yetkili bir API anahtarı oluşturun.

Kişisel veri modele gider. Fonzip yanıtları ad, e-posta, telefon, TC kimlik no ve IBAN içerebilir; bunlar MCP istemcinize ve kullandığınız modele aktarılır. KVKK yükümlülükleriniz açısından değerlendirin. Ayrıntı için SECURITY.md.

Büyük yanıtlar kırpılır. 100.000 karakteri aşan yanıtlar kesilir ve sayfalama önerilir.

Geliştirme

git clone https://github.com/ubaranzorlu/fonzip-mcp.git
cd fonzip-mcp
npm install
npm test        # 97 test
npm run build

Depoda .mcp.json var; npm run build sonrası Claude Code bu projede sunucuyu yerel dist/ üzerinden çalıştırır. Kabuğunuzda FONZIP_CLIENT_ID ve FONZIP_CLIENT_SECRET tanımlı olmalıdır.

Tool tanımları elle yazılmaz — scripts/generate.ts, openapi/fonzip-v2.yaml dosyasından src/generated/operations.ts üretir. Ayrıntılar ve sürüm çıkarma adımları için CONTRIBUTING.md.

Katkı

Katkılar memnuniyetle karşılanır. Başlamadan önce CONTRIBUTING.md ve CODE_OF_CONDUCT.md dosyalarına göz atın. Güvenlik açıkları için SECURITY.md.

Lisans

Bu depodaki kod MIT © Umut Baran Zorlu.

openapi/fonzip-v2.yaml Fonzip Yazılım A.Ş.'nin kendi API dokümanıdır ve MIT kapsamı dışındadır; depoda yalnızca tool tanımlarının üretilmesi için referans olarak bulunur. Aynı istisna, spec'ten türeyen src/generated/operations.ts ve yayınlanan dist/ içeriği için de geçerlidir. "Fonzip" adı yalnızca sunucunun hangi servise bağlandığını belirtmek için kullanılır. Ayrıntı: NOTICE.

API ile ilgili sorular için: help@fonzip.com

Available Tools

13 tools
fonzip_communication_permissionsA

Iletisim izinleri (e-posta/SMS/telefon): bir adres veya numaranin izin durumunu sorgulama, guncelleme ve degisenleri listeleme.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo[list_changed] Number of days before today.
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
detailsNo[update] additional details like channel, IP address etc.
how_manyNo[list_changed] How many records should be listed
permissionNo[update] Zorunlu: update. communication permitted or not
start_pageNo[list_changed] start page of records
update_dateNo[update] Zorunlu: update. value last update date
permission_typeNo[tum action'lar] Zorunlu: get, list_changed, update. Permission Types <br> - email <br> - sms <br> - phone
permission_valueNo[get, update] Zorunlu: get, update. email or phone number in E164 format

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is not read-only and not destructive. The description adds that it can update and list changes, but it does not disclose deeper behavioral traits such as side effects of updates, required permission context, or response behavior. It neither contradicts annotations nor adds substantial behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence that front-loads the resource and immediately names the three supported operations. There is no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with nine parameters, three distinct actions, and no output schema, the description is too high-level. It does not explain that the action parameter determines required fields, nor does it mention pagination, date-based change listing, or return behavior. The schema carries most of the needed context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents parameter meanings and action-specific requirements. The description adds only high-level mapping to operations and does not enrich understanding of the nine parameters beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (communication permissions for email/SMS/phone) and clearly lists three concrete operations: querying, updating, and listing changed permission statuses. This clearly distinguishes it from sibling tools such as fonzip_events or fonzip_donations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The resource domain is clear, so an agent can infer when this tool is relevant, but the description gives no explicit when-to-use guidance, no exclusions, and no comparison to alternatives. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_donationsC
Destructive

Bagislar: listeleme (tarih araligi zorunlu), detay, olusturma, silme, rapor; bagis kategorileri; mikro bagislar; bagis sayfalari ve formlari.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNo[create] city
listNo[list, list_micro] which values should be listed
nameNo[create_category, update_category] Donation/E-Card Category name
emailNo[create] email
phoneNo[create] phone number
queryNo[list, list_categories, list_donation_forms, list_donation_pages, list_micro] search parameter. start with - (minus) char to exclude searched text
tcknoNo[create] Users Identity Number
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
activeNo[update_category_status] Zorunlu: update_category_status. true for active, false for passive
amountNo[create, list, list_micro] donation amount
d_typeNo[create] Donation Type - 0: cash - 1: noncash / inkind
statusNo[list, list_micro] what kind of donations should be listedpaid
addressNo[create] address
amt_cndNo[list, list_micro] amount condition if amount filter is present - null: equals to amount - !=: not equals to amount - <: smaller than amount - <=: smaller and equal to amount - \>: bigger than amount - \>=: bigger and equal to amount
detailsNo[create] Donation details
sectionNo[create] donation section - page: ngo fundraising page - fundraising: fundraising campaign - form: donation form/module - other: other
birthdayNo[create] users birthday
currencyNo[create] Currency ISO Code
districtNo[create] district
ecard_idNo[create] ecard id
end_dateNo[list, list_micro, report] Zorunlu: list, list_micro, report. End date filtering for transaction__complete_date or complete_date fields. Must be after start_date.
how_manyNo[list, list_categories, list_donation_forms, list_donation_pages, list_micro] How many records should be listed
order_byNo[list, list_micro] ordering-transaction__complete_date
aggregateNo[report] aggregate results
last_fourNo[list, list_micro] card last four digits
last_nameNo[create] last name
member_idNo[create] User ID / if not available, a new user will be created
module_idNo[create] donation form/module id
post_codeNo[create] post/zip code
recurringNo[list, list_micro] filter recurring donations - 1: only recurring, - 0: exclude recurring, - -1: list all
referringNo[create] donation in honor of someone
bin_numberNo[list, list_micro] card BIN number
donor_typeNo[create, list, list_micro] Donor type - personal: donor is a person - corporate: donor is an organization
first_nameNo[create] first name
receipt_noNo[create] receipt no
start_dateNo[list, list_micro, report] Zorunlu: list, list_micro, report. Start date filtering for transaction__complete_date or complete_date fields. Must be before end_date.
start_pageNo[list, list_categories, list_donation_forms, list_donation_pages, list_micro] start page of records
utm_mediumNo[list] Filter donations by one or more `utm_medium` values (IN-list).
utm_sourceNo[list] Filter donations whose marketing channel `utm_source` matches one of the supplied values (IN-list). Repeat the parameter to supply multiple values, e.g. `?utm_source=google&utm_source=bing`.
category_idNo[create, delete_category, list, list_donation_forms, list_donation_pages, list_micro, update_category, update_category_status] Zorunlu: delete_category, update_category, update_category_status. donation category id
currency_idNo[report] currency id
donation_idNo[delete, get, get_micro] Zorunlu: delete, get, get_micro.
name_hiddenNo[create] name is hidden in fundraising campaign donor list
no_categoryNo[list, list_micro] when true, return only donations that have no donation category assigned. Ignored if category_id is also supplied.
report_typeNo[report] report type - 1: donation category - 2: fundraising page - 3: fundraising campaign - 4: added by user - 5: donation form - 6: monthly donation status - 7: association campaign target - 8: fundraising team - 9: fundraising team campaign - 10: face to face group - 11: face to face group member
utm_contentNo[list] Filter donations by one or more `utm_content` values (IN-list).
utm_campaignNo[list] Filter donations by one or more `utm_campaign` values (IN-list).
complete_dateNo[create] Donation Date
donation_pageNo[list, list_micro] donation page id
thanks_sms_idNo[create] sms template id
amount_visibleNo[create] amount is visible in fundraising campaign donor list
payment_methodNo[create, list, list_micro] payment type code - 0: Card - 1: Cash - 2: Wire Transfer - 3: POS - 4: SMS - 6: Postal Check - 7: Paypal - 8: BKM Express - 9: iDEAL - 10: Pay With Iyzico
referring_cityNo[create] honoree's city
referring_nameNo[create] honorees name
tax_departmentNo[create] Donor's tax office (vergi dairesi). Only meaningful when donor_type is "corporate"; ignored for personal donors.
thanks_mail_idNo[create] mail template id
transaction_idNo[create] bank transaction id
api_tracking_idNo[list, list_micro] API Tracking ID
bank_account_idNo[create, list, list_micro] Bank Account ID
referring_emailNo[create] honoree's email
referring_phoneNo[create] honoree's phone
send_thanks_smsNo[create] send thanks sms
send_thanks_mailNo[create] send mail to donor
referring_addressNo[create] honoree's address
referring_districtNo[create] honoree's district
referring_ecard_idNo[create] ecard id to send to honoree
fundraising_page_idNo[create] ngo fundraising page id
payment_settings_idNo[list, list_donation_forms, list_donation_pages, list_micro] payment settings id
fundraising_campaignNo[list, list_micro] fundraising campaign id
payment_method_selectNo[create] payment_method_select - card: card donation (!! Not available in API !!) - other: other (must set to other)
marketing_channel_nullNo[list] When true, return only donations with no marketing channel attached (organic / direct traffic). Mutually exclusive with the four UTM filters above — when set, those are ignored.
fundraising_campaign_idNo[create] fundraising campaign id
referring_thanks_mail_idNo[create] mail template id to send to honoree
association_campaign_targetNo[list, list_micro] fundraising event id

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false; the description's mention of silme and olusturma (delete/create) is consistent with those, so there is no contradiction. But the description adds no behavioral context beyond the annotations: no note on destructive scope, no side effects (e.g., creating a donation can auto-create a user via member_id), no auth requirements, and no mention of the payment_method_select 'card' API restriction hinted at in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single dense sentence with no wasted words; the resource name and its most important constraint (date range required for listing) come first, and the semicolon-separated catalog efficiently covers the full action surface. It is compact, though the packed Turkish list functions more as a tag summary than a structured explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 74 parameters, 14 actions, and no output schema, this is an extremely complex tool, yet the one-sentence description does not orient the agent to the dispatch pattern (action is required and determines which params apply), does not differentiate the list variants (list vs. list_micro vs. list_categories vs. list_donation_forms), and gives no sense of what report covers. The rich schema compensates heavily, but the description alone is not complete enough for safe selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — every one of the 74 parameters carries a description with per-action qualifiers in brackets (e.g., '[list, list_micro] ordering'). Per the rubric, this earns the baseline 3 even though the tool description itself adds zero parameter-level meaning. The schema fully compensates for the description's silence on parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The Turkish description identifies the resource (donations) and enumerates the operations: listing (with a mandatory date range), detail, create, delete, report, plus donation categories, micro donations, pages, and forms. This distinguishes it from sibling tools by domain. However, it reads as a capability catalog rather than a crisp purpose statement, and the full scope only emerges from the 14-value action enum.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage guidance is the embedded constraint that listing requires a date range. There is no statement of when to prefer this tool over siblings (e.g., fonzip_monthly_donations for recurring donations vs. the recurring filter here), no exclusions, and no alternatives named. The action enum provides structure, but the description itself offers no selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_ecardsB
Destructive

E-kartlar: kart ve kart kategorisi yonetimi, e-kart satis islemlerini listeleme, detay ve silme.

ParametersJSON Schema
NameRequiredDescriptionDefault
listNo[list_transactions] *(paid only)* Selects the optional fields returned for each transaction. Repeat the parameter to request several fields, e.g. `?list=ecard&list=amount&list=category`. Every response always contains this base set, whatever `list` holds: `id`, `user_id`, `first_name`, `last_name`, `email`, `phone`, `certificate_id`, `ce…
nameNo[create_category, update_category] Donation/E-Card Category name
queryNo[list, list_categories, list_transactions] search parameter. start with - (minus) char to exclude searched text
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
amountNo[list_transactions] payment/debt amount
statusNo[list_transactions] E-Card Transaction status. Defaults to `paid` when omitted. Any other value is rejected with HTTP 400. - paid: successful E-Card transactions - refund: refunded E-Card transactions - failed: failed E-Card transactionspaid
amt_cndNo[list_transactions] amount condition if amount filter is present - null: equals to amount - !=: not equals to amount - <: smaller than amount - <=: smaller and equal to amount - \>: bigger than amount - \>=: bigger and equal to amount
listingNo[list] E-Card available for sale in E-Card page - 0: private - 1: available - 2: available only via url
sale_idNo[delete_transaction, get_transaction] Zorunlu: delete_transaction, get_transaction.
ecard_idNo[get, list_transactions] Zorunlu: get.
end_dateNo[list_transactions] Zorunlu: list_transactions. End date filtering for transaction__complete_date or complete_date fields. Must be after start_date.
how_manyNo[list, list_categories, list_transactions] How many records should be listed
order_byNo[list_transactions] Ordering. Any field of the `CertificateSale` model (or a `transaction__` / `certificate__` related field) is accepted; an unknown field is rejected with HTTP 400. Rows are always tie-broken by `id`. The default depends on `status`: `-transaction__refund_date` for `refund`, `-transaction__complete_date` for `paid` and…-transaction__complete_date
bill_typeNo[list_transactions] *(paid only)* filter on the requested billing information type - 0: no bill - 1: personal - 2: corporate
card_typeNo[list_transactions] *(paid only)* filter card payments on card type. Any other value is rejected with HTTP 400. - 1: credit - 2: debit - 3: prepaid - 4: unknown (BIN not recognised)
last_fourNo[list_transactions] card last four digits
bin_numberNo[list_transactions] card BIN number
start_dateNo[list_transactions] Zorunlu: list_transactions. Start date filtering for transaction__complete_date or complete_date fields. Must be before end_date.
start_pageNo[list, list_categories, list_transactions] start page of records
utm_mediumNo[list_transactions] *(paid only)* Filter e-card transactions by one or more `utm_medium` values (IN-list).
utm_sourceNo[list_transactions] *(paid only)* Filter e-card transactions whose marketing channel `utm_source` matches one of the supplied values (IN-list). Repeat the parameter to supply multiple values, e.g. `?utm_source=google&utm_source=bing`.
category_idNo[delete_category, list, update_category] Zorunlu: delete_category, update_category.
currency_idNo[list_transactions] *(paid only)* filter transactions on currency id
utm_contentNo[list_transactions] *(paid only)* Filter e-card transactions by one or more `utm_content` values (IN-list).
card_countryNo[list_transactions] *(paid only)* filter card payments on the issuing bank's country, relative to the association's own country. Any other value is rejected with HTTP 400. - 1: local (issued in the association's country) - 2: abroad - 3: unknown (BIN not recognised)
cargo_statusNo[list_transactions] *(paid only)* filter based on cargo status - null: all - 0: will not be sent - 1: waiting to be prepared - 2: waiting for cargo info - 3: posted - 4: waiting to be prepared **or** waiting for cargo info (1 and 2 combined)
utm_campaignNo[list_transactions] *(paid only)* Filter e-card transactions by one or more `utm_campaign` values (IN-list).
delivery_dateNo[list_transactions] *(paid only)* Return only transactions scheduled for future delivery (`delivery_time_mode` 1 or 2) whose delivery date - either on the transaction itself or on one of its recipients - equals this date. Sent as a date-time; it is converted to the association timezone and compared as a date.
payment_methodNo[list_transactions] payment type code - null: All - 0: Card - 1: Cash - 2: Wire Transfer - 3: POS - 4: SMS - 6: Postal Check - 7: Paypal - 8: BKM Express - 9: iDEAL - 10: Pay With Iyzico
bank_account_idNo[list_transactions] *(paid only)* bank account id
payment_settings_idNo[list_transactions] *(paid only)* payment settings id
marketing_channel_nullNo[list_transactions] *(paid only)* When true, return only e-card transactions with no marketing channel attached (organic / direct traffic). Mutually exclusive with the four UTM filters above — when set, those are ignored.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, so the bar is lower. The description adds some context by stating that sales transactions can be deleted ('silme'), which tells the agent what kind of destructive action exists. However, it does not disclose anything beyond that—no permissions, reversibility, or side effects—so it only partially fulfills this dimension.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the resource and the three main operation types. Every word earns its place, with no repetition of schema details or annotations. This is appropriately concise for a tool with such a rich input schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input schema is exceptionally detailed—every parameter is documented with action tags, enums, defaults, and constraints—so the short description does not need to compensate for missing parameter context. The combination of description and schema gives an agent enough orientation to select the correct action and required fields. It is not a 5 because the description alone does not summarize all nine actions or warn about the destructive operations beyond a passing 'silme' mention.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter's meaning and usage per action. The description itself adds no parameter-level information, which is acceptable but not value-adding. Baseline 3 applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a clear resource domain ('E-kartlar') and enumerates the operation groups: card/category management and listing, detail, and deletion of e-card sales transactions. This maps well onto the action enum (create_category, update_category, delete_category, list, get, list_transactions, get_transaction, delete_transaction) and distinguishes the tool from fonzip_* siblings by its e-card focus. It loses one point because 'yonetimi' (management) is a broad verb and does not explicitly name create/update actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as fonzip_donations or fonzip_events, and no exclusions or preferred scenarios. The only implied distinction is the e-card resource in the name, which is not enough for an agent to know when to choose this over sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_eventsB
Destructive

Etkinlikler: etkinlik olusturma, guncelleme, durum degistirme, silme; bilet tanimlari; bilet satislari ve satis detaylari.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo[create, update] Event URL
nameNo[create, update] Event name
imageNo[create, update] Event image url
priceNo[create_ticket, update_ticket] Price
queryNo[list, list_ticket_sales] search parameter. start with - (minus) char to exclude searched text
titleNo[create_ticket, update_ticket] Zorunlu: create_ticket, update_ticket. Ticket name
venueNo[create, update] Event venue
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
activeNo[update_status] true if event is active, false if event is passive
amountNo[list_ticket_sales] payment/debt amount
statusNo[list_ticket_sales] what kind of ticket sales should be listedpaid
targetNo[list] filter based on past or upcoming events - a: all - p: past - u: upcominga
addressNo[create, update] Event address
all_dayNo[create, update] Event takes all day
amt_cndNo[list_ticket_sales] amount condition if amount filter is present - null: equals to amount - !=: not equals to amount - <: smaller than amount - <=: smaller and equal to amount - \>: bigger than amount - \>=: bigger and equal to amount
detailsNo[create, create_ticket, update, update_ticket] Event details
archivedNo[list] true for archived records, null for normal records
end_dateNo[create, list_ticket_sales, update] Zorunlu: list_ticket_sales. Event end date
event_idNo[delete, get, list_ticket_sales, update, update_status] Zorunlu: delete, get, update, update_status.
how_manyNo[list, list_ticket_sales] How many records should be listed
locationNo[create, update] Whether event is held online or at a venue <br> - 0: Venue <br> - 1: Online
order_byNo[list, list_ticket_sales] orderingstart_date
last_fourNo[list_ticket_sales] card last four digits
sales_endNo[create_ticket, update_ticket] Ticket sale end date
ticket_idNo[delete_ticket, get_ticket, update_ticket] Zorunlu: delete_ticket, get_ticket, update_ticket.
bin_numberNo[list_ticket_sales] card BIN number
paid_eventNo[create, update] Event has paid tickets
start_dateNo[create, list_ticket_sales, update] Zorunlu: list_ticket_sales. Event start date
start_pageNo[list, list_ticket_sales] start page of records
sales_startNo[create_ticket, update_ticket] Ticket sale start date
tag_controlNo[create_ticket, update_ticket] ticket can only be bought by users with selected tags - 0: No control - 1: Ok if user has any of the selected tags - 2: Ok if user has all of the selected tags
ticket_typeNo[create_ticket, update_ticket] Ticket type - paid: paid ticket - free: free ticket
ticket_typesNo[create, update]
send_reminderNo[create, update] should a reminder sent to the participants one day before the event
max_per_personNo[create_ticket, update_ticket] maximum number of tickets a user can buy
payment_methodNo[list_ticket_sales] payment type code - null: All - 0: Card - 1: Cash - 2: Wire Transfer - 3: POS - 4: SMS - 6: Postal Check - 7: Paypal - 8: BKM Express - 9: iDEAL - 10: Pay With Iyzico
ticket_sale_idNo[get_ticket_sale] Zorunlu: get_ticket_sale.
time_selectionNo[list_ticket_sales] date time range selection, 0 for date range selection (start_date & end_date must be present), 1 for all time (event_id must be present).
max_installmentNo[create, update] maximum number of installments for event
tags_to_controlNo[create_ticket, update_ticket] tag_id's for tag control
ask_billing_infoNo[create, update] additional billing info is required or not
installment_countNo[list_ticket_sales] installment count
post_sale_messageNo[create_ticket, update_ticket] message to be shown after the ticket is purchased
sales_end_on_dateNo[create_ticket, update_ticket] true if ticket sale must end on specific date
sender_account_idNo[create, update] Email sender account id for event
member_with_no_debtNo[create_ticket, update_ticket] true if ticket can only be bought by users with no debt
payment_settings_idNo[create, list_ticket_sales, update] Payment settings id
sales_start_on_dateNo[create_ticket, update_ticket] true if ticket sale must start on specific date
related_with_no_debtNo[create_ticket, update_ticket] true if ticket can only be bought if users related organization has no debt

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=false, idempotentHint=false, destructiveHint=true. The description adds that deletion targets events and that status changes are possible, giving a little more concreteness to the destructive/mutating nature. It does not, however, describe cascading effects, irreversibility, authorization needs, or side effects beyond what the annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the main capability domains and avoids filler. While it is terse for a 49-parameter/12-action tool, it is not padded and reads quickly. It loses a point because it is a fragment and does not structurally reflect the action-based routing nature.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description covers the main event lifecycle and ticket/sales domains, but it omits event querying/list/get operations even though the action enum includes list/get. With no output schema and only this high-level summary, an agent gets a partial map of the tool's surface; the schema fills in many gaps, so it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents every parameter, including which actions each field belongs to and required markers (e.g., 'Zorunlu: delete, get, update, update_status'). The tool description itself contributes no additional parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource domain ('Etkinlikler' – events) and enumerates concrete operations: create, update, status change, delete, plus ticket definitions and ticket sales/details. This is more specific than the tool name and helps distinguish it from siblings focused on other fonzip areas. It lacks a crisp 'performs X to achieve Y' statement and reads as a fragment, so not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit statement of when to choose fonzip_events over alternatives. The domain is inferred from the name and the list of operations, but there are no exclusions, prerequisite conditions, or references to sibling tools. This is effectively no guidance for selecting between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_formsB

Ozel formlar ve form cevaplari: form listesi, cevap listesi, cevap detayi ve bir cevaba yanit yazma.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo[list, list_answers] search parameter. start with - (minus) char to exclude searched text
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
answerNo[respond_to_answer] Zorunlu: respond_to_answer. approval/rejection details
statusNo[list_answers] answer status - answer: list answers - waiting_approval: list answers waiting approval - rejected: list rejected answers - refund: list refunds - failed: list failed answersanswer
form_idNo[get_answer, respond_to_answer] Zorunlu: get_answer, respond_to_answer.
archivedNo[list] true for archived records, null for normal records
end_dateNo[list_answers] Zorunlu: list_answers. End date filtering for transaction__complete_date or complete_date fields. Must be after start_date.
how_manyNo[list, list_answers] How many records should be listed
answer_idNo[get_answer, respond_to_answer] Zorunlu: get_answer, respond_to_answer.
start_dateNo[list_answers] Zorunlu: list_answers. Start date filtering for transaction__complete_date or complete_date fields. Must be before end_date.
start_pageNo[list, list_answers] start page of records
response_typeNo[respond_to_answer] Zorunlu: respond_to_answer. response type

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already state readOnlyHint=false and openWorldHint=true, and the description adds that one action writes a reply to an answer, which is the main mutation. However, it does not mention consequential side effects encoded in the schema (emails, refunds, membership number assignment, template overwrites), so transparency is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler; the colon list conveys scope and operations efficiently. It could arguably be more action-oriented, but it earns its place as a concise summary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, four-action tool with no output schema, the description is minimal, but the rich input schema supplies required-parameter and action mappings. Missing usage and side-effect context prevents a higher score, yet the schema makes the definition usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a description plus square-bracket action tags, so the schema carries the parameter meaning. The tool description adds no parameter detail, which is acceptable under the high-coverage baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('forms and form answers') and enumerates the four operations (list forms, list answers, answer detail, write a reply), which map directly to the action enum. It is clear enough to distinguish this forms domain from the fonzip_* siblings, though it is a noun-phrase summary rather than a single imperative verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use fonzip_forms instead of a sibling such as fonzip_templates or fonzip_donations, and no when/when-not conditions. The action enum and parameter tags imply operation selection, but the description itself gives no usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_fundraisingC
Destructive

Bagis toplama: kampanyalar (fundraising campaign), kampanya etkinlikleri (fundraising event) ve takimlar (fundraising team) ile takimlara bagli kampanyalar.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo[create, create_event, update_event] Fundraising campaign id
urlNo[create] campaign url
dataNo[update] key value pairs of fields and values (see example)
fieldNo[update] field to be updated. Gecerli degerler: title, image, bank_account_list, personal_message, has_target, hide_donor_list, hide_total_donation, has_special_date, phone_show, phone_required, birthday_show, birthday_required, address_show, address_required, tckno_show, tckno_required, message_show, has_target, has_special_date, target, event_date, sub_donation_type_id, payment_settings_id, thanks_mail_id, referral_thanks_mail_id, thanks_sms_id, certificate_id, referral_certificate_id, association_campaign_target_id
imageNo[create, create_team, update_team] campaign image url
queryNo[list, list_teams] search parameter. start with - (minus) char to exclude searched text
titleNo[create, create_event, create_team, create_team_campaign, update_event, update_team, update_team_campaign] Zorunlu: create_team, create_team_campaign, update_team, update_team_campaign. campaign title
valueNo[update]
actionYes[update_status] set status of fundraising campaign - reactivate: reactivate finalized campaign - finalize: finalize active campaign - featured: toggle the featured flag on the campaign (requires `featured` body field; up to 6 campaigns per association may be featured; only active campaigns are eligible)
statusNo[create, list, list_teams, update_team] campaign status <br> - 0: waiting approval <br> - 1: approved <br> - 2: rejected <br> - 3: finalized <br> - 4: deleted <br> - 5: waiting extra approval <br> - 7: archived
targetNo[create, create_event, create_team_campaign, update_event, update_team_campaign] campaign target
defaultNo[create_team_campaign, update_team_campaign] Fundraising team campaign is currently active & default
detailsNo[create_team, update_team] Zorunlu: create_team, update_team. Fundraising team description
team_idNo[create_team_campaign, delete_team, delete_team_campaign, get_team, list_team_campaigns, update_team, update_team_campaign] Zorunlu: create_team_campaign, delete_team, delete_team_campaign, get_team, list_team_campaigns, update_team, update_team_campaign.
user_idNo[create, create_team, update_team] Zorunlu: create_team, update_team. userid
campaignNo[create_team] Zorunlu: create_team.
event_idNo[delete_event, update_event] Zorunlu: delete_event, update_event.
featuredNo[update_status] Required when `action=featured`. Pass `true` to add the campaign to the Featured Campaigns block, `false` to remove it. Adding beyond the 6-campaign cap responds with HTTP 400.
how_manyNo[list, list_teams] How many records should be listed
multipleNo[update] true if updating multiple fields
order_byNo[list, list_teams] ordering
user_noteNo[create] users note
currenciesNo[create] valid currencies
event_dateNo[create] Event date
has_targetNo[create, create_team_campaign, update_team_campaign] campaign has target
phone_showNo[create] true if phone is asked
start_pageNo[list, list_teams] start page of records
tckno_showNo[create] true if tckno is asked
campaign_idNo[delete, delete_team_campaign, get, update, update_status, update_team_campaign] Zorunlu: delete, delete_team_campaign, get, update, update_status, update_team_campaign.
category_idNo[list] fundraising campaigns' donation category id
create_dateNo[list] create date filter
currency_idNo[create_team, update_team] Zorunlu: update_team. Fundraising team default Currency ID
address_showNo[create] true if address is asked
message_showNo[create] true if donors may leave a message. Ships enabled, unlike the other *_show flags
birthday_showNo[create] true if birthday is asked
campaign_listNo[update_team] Zorunlu: update_team.
thanks_sms_idNo[create] thanks sms id
certificate_idNo[create] certificate
phone_requiredNo[create] true if phone is required
tckno_requiredNo[create] true if tckno is required
thanks_mail_idNo[create] thanks mail id
create_date_cndNo[list] create date filter condition
hide_donor_listNo[create] donor list is hidden or not
address_requiredNo[create] true if address is required
has_special_dateNo[create] True if campaign has a event date like birthday, memorial day etc.
personal_messageNo[create] campaign message
team_campaign_idNo[list] fundraising campaign teams' campaign id
bank_account_listNo[create]
birthday_requiredNo[create] true if birthday is required
target_currency_idNo[create, create_team_campaign, update_team_campaign] fundraising campaign target currency id
hide_total_donationNo[create] total donations is hidden or not
payment_settings_idNo[create, list] payment system id
sub_donation_type_idNo[create] donation category id
referral_certificate_idNo[create] referral certificate id
referral_thanks_mail_idNo[create] referral thanks mail id
association_campaign_target_idNo[create, list] fundraising event id

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral information beyond annotations: it does not mention mutation, deletion, finalization, state changes, permissions, or side effects. Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description itself does not disclose any operation semantics. There is no contradiction with annotations, but there is also no added behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, but it is under-specified rather than appropriately concise for a 56-parameter, multi-action tool. It lacks any structure such as an action list, usage context, or key distinction hints. For this complexity level, the brevity is more a deficiency than a strength.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 56-parameter surface, no output schema, and multiple implied operations, the description only provides a high-level resource scope. It does not explain how actions route parameters, what operations are available, or what the tool returns. The schema carries nearly all the operational meaning, leaving the description incomplete as a standalone guide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all 56 parameters and their action-specific meanings. The tool description provides no parameter-level semantics and does not need to, given the complete schema. This matches the baseline 3 for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description lists the covered resources: fundraising campaigns, campaign events, fundraising teams, and team campaigns. It is not a tautology because it enumerates these subresources, but it contains no action verb and reads as a static domain label rather than a statement of what the tool does. It does somewhat distinguish the tool from siblings like fonzip_events or fonzip_donations by naming campaign-specific resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The resource list implies that this tool is for fundraising-related entities, which gives some context on when it applies. However, the description never explicitly says when to use it vs. alternatives such as fonzip_events or fonzip_donations, and it does not mention exclusions or alternative tools. Usage guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_membership_duesB
Destructive

Aidatlar ve borclar: aidat aboneliklerini listeleme/detay/silme, borc (debt) olusturma, guncelleme, durum degistirme ve silme.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo[list, list_debts] search parameter. start with - (minus) char to exclude searched text
actionYes[update_debt_status] Zorunlu: update_debt_status. action to apply to the debt - remove: removes the debt - activate: activates the debt
amountNo[create_debt, list, list_debts] debt amount ( also payment amount if custom amount is 'custom'.)
periodNo[create_debt, update_debt] Period Date
statusNo[list, list_debts] what kind of membership dues should be listed - paid: for payments - refund: for refunds - failed: for failed payment transactionspaid
tag_idNo[list, list_debts] Tag id of user
amt_cndNo[list, list_debts] amount condition if amount filter is present - null: equals to amount - !=: not equals to amount - <: smaller than amount - <=: smaller and equal to amount - \>: bigger than amount - \>=: bigger and equal to amount
bill_noNo[create_debt, update_debt] bill no
debt_idNo[delete_debt, get_debt, update_debt, update_debt_status] Zorunlu: delete_debt, get_debt, update_debt, update_debt_status.
detailsNo[create_debt, update_debt] debt description
user_idNo[create_debt] user id
due_dateNo[create_debt, update_debt] Debts Due Date
end_dateNo[list] Zorunlu: list. End date filtering for transaction__complete_date or complete_date fields. Must be after start_date.
how_manyNo[list, list_debts] How many records should be listed
order_byNo[list, list_debts] ordering-transaction__complete_date
last_fourNo[list] card last four digits
recurringNo[create_debt] if debt is recurring
send_mailNo[create_debt] send mail after adding the debt
bin_numberNo[list] card BIN number
start_dateNo[list] Zorunlu: list. Start date filtering for transaction__complete_date or complete_date fields. Must be before end_date.
start_pageNo[list, list_debts] start page of records
add_paymentNo[create_debt] add the payment after adding the debt
added_by_idNo[list, list_debts] User id who added the payment
create_dateNo[list, list_debts] Record creation date filter
period_yearNo[list, list_debts] Dues Period Year
remove_noteNo[update_debt] remove debt description for removed debt status
transactionNo[update_debt]
period_monthNo[list, list_debts] Dues Period Month
custom_amountNo[create_debt] amount for payment. total_debt for users total debt, custom for custom debt amount
membership_noNo[list, list_debts] Membership number of user
added_by__nameNo[list, list_debts] User name (case-insensitive, unaccented) who added the payment. Used when added_by_id is not known.
operation_dateNo[create_debt, list_debts, update_debt] Membership Due Operation Date
payment_methodNo[create_debt, list] payment type code - 0: Card - 1: Cash - 2: Wire Transfer - 3: POS - 4: SMS - 6: Postal Check - 7: Paypal - 8: BKM Express - 9: iDEAL - 10: Pay With Iyzico
thanks_mail_idNo[create_debt] mail template to be sent after adding the debt
create_date_cndNo[list, list_debts] Record creation date filter condition
subscription_idNo[delete, get] Zorunlu: delete, get.
recurring_periodNo[create_debt, update_debt] Recurring period in days
installment_countNo[list] installment count
possible_duplicateNo[list_debts] When true, returns only debts whose (user, period, amount) tuple appears more than once in the association's debts.
payment_method_selectNo[create_debt] payment type selection. must be other for APIother

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, and the description's 'silme' (delete) matches the destructive nature. The description adds an inventory of mutating operations but does not disclose side effects such as send_mail, add_payment, or the remove/activate action behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no fluff, and it front-loads the domain. However, it compresses many distinct operations into one comma-separated list without grouping by operation flow or naming the action selector, which weakens its structural usefulness for a 40-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-operation tool with 40 parameters and no output schema, the description is far too thin. It does not explain how to select or route between operations like list, create_debt, delete, or update_debt_status, nor what return values to expect. The rich schema partially compensates, but the high-level description leaves critical invocation context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already includes operation tags and enum explanations. The description itself adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('Aidatlar ve borclar') and enumerates concrete operations: listing/detailing/deleting subscriptions and creating/updating/status-changing/deleting debts. It distinguishes the tool's domain from siblings like fonzip_donations and fonzip_monthly_donations, though it is a packed summary rather than a structured operation list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear domain context with 'Aidatlar ve borclar', implying this tool is for membership dues and debt operations. However, it gives no explicit when-to-use guidance, exclusions, prerequisites, or comparison against sibling tools, leaving usage mostly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_monthly_donationsC

Duzenli (aylik) bagislar: tutar degisiklik talebi olusturma/yanitlama, kart guncelleme talebi gonderme, duzenli bagisi iptal etme.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo[change_values, send_card_update_request] Zorunlu: change_values. Change Monthly Donation Attribute - date: changes next withdrawal date - category: changes donation category - amount: changes monthly donation amount - retry: retries withdrawal of donation
typeNo[create_update_request] Request Type - cancel: send cancellation request - amount: send amount upgrade requests
titleNo[cancel] Template Title
valueNo[create_update_request] Reason if request type is 'cancel' New Amount if request type is 'amount'
actionYes[cancel] Zorunlu: cancel. must be "cancel"
amountNo[change_values] next withdrawal amount
reasonNo[cancel] Zorunlu: cancel. Cancellation reason
messageNo[cancel] Template content
subjectNo[cancel] Subject
user_idNo[create_update_request, send_card_update_request] Zorunlu: create_update_request, send_card_update_request.
approvalNo[respond_amount_change_request] Zorunlu: respond_amount_change_request. true if amount update request will be approved, false to reject
btn_textNo[cancel] button text
type_smsNo[cancel] True if template is for sms, False if template is for email
btn_colorNo[cancel] button color in HEX format, such as
body_colorNo[cancel] text color in HEX format, such as
has_buttonNo[cancel] whether a button is added or not
category_idNo[change_values] donation category id
donation_idNo[tum action'lar] Zorunlu: cancel, change_values, create_update_request, respond_amount_change_request, send_card_update_request.
template_idNo[cancel] Template ID to be sent
translationsNo[cancel] translations of template
btn_operationNo[cancel] button operation. 1 for URL, 2 for Fonzip Related operation
btn_text_colorNo[cancel] button text in HEX format, such as
background_colorNo[cancel] background color in HEX format, such as
save_as_templateNo[cancel] True if you want to save message as template
footer_icon_colorNo[cancel] footer icon color in HEX format, such as
footer_text_colorNo[cancel] footer text color in HEX format, such as
send_from_templateNo[cancel] True if you want to send email from template
btn_operation_detailNo[cancel] button action detail
has_association_logoNo[cancel] True if mail includes the logo of association
recurring_next_cycleNo[change_values] Next withdrawal date
send_cancellation_mailNo[cancel] True if you want to send email to donor after cancelling donation
monthly_donation_order_idNo[change_values] Zorunlu: change_values. recurring_order_id of donation

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false, idempotentHint=false, and destructiveHint=false, and the description merely lists mutation-like operations without adding side-effect context. It does not explain what cancellation triggers, whether approval flows are required, or what consequences follow a card update request or amount change.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with the resource scope front-loaded and a list of core operations. It is efficient, though for a 32-parameter multi-action tool it could be structured into clearer action groups.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (32 parameters, one required action, nested objects, no output schema), the description is too sparse. It does not explain how the required 'action' parameter routes to modes like change_values, cancel, create_update_request, respond_amount_change_request, or send_card_update_request, nor does it mention omitted operations such as date/category changes and retry.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter. The description adds no extra parameter meaning beyond naming some high-level operations, which keeps it at the baseline rather than adding value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('Duzenli (aylik) bagislar' / recurring monthly donations) and lists concrete operations: creating/responding to amount change requests, sending card update requests, and canceling recurring donations. However, it omits some distinct modes present in the schema, such as changing the next withdrawal date, category, retry withdrawal, and the broader action-dispatch model, so it is not fully precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus sibling tools like fonzip_donations or fonzip_membership_dues, and no when-not-to-use conditions. It implies the domain via the resource name but never states selection criteria or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_systemA
Read-onlyIdempotent

Hesap ve sistem bilgileri: baglantiyi dogrulayan kurum bilgisi (me), odeme sistemleri, banka hesaplari ve pazarlama kanallari. Kurulumu dogrulamak veya diger tool'larda kullanilacak ID'leri bulmak icin buradan baslayin.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
how_manyNo[list_bank_accounts, list_marketing_channels, list_payment_systems] How many records should be listed
start_pageNo[list_bank_accounts, list_marketing_channels, list_payment_systems] start page of records

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the tool exposes system configuration and connection data, but does not discuss authentication needs, rate limits, pagination behavior, or return format. This is acceptable given the annotations but not highly informative beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence states the tool's content scope, and the second immediately communicates the practical use case. Every phrase contributes to orientation and selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only discovery tool with a fully-described three-parameter schema, the description gives enough context to start using it correctly. It names the core resources and the start-here workflow. The absence of return-value details is mitigated by the read-only annotations and the enum-driven action schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters and action-specific usage. The description only refers the agent to the bracketed field descriptions without adding new meaning or examples. This meets the baseline for fully-covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a clear functional scope: account and system information (connection verification via 'me', payment systems, bank accounts, marketing channels). It also states the practical purpose of finding IDs for other tools. It is somewhat broad because it covers multiple sub-actions, but the action enum in the schema supplies the missing specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to start here when verifying setup or locating IDs used by other tools, which gives clear guidance on when this tool is appropriate. It does not name excluded alternatives, but the sibling tools are domain-specific and this is clearly positioned as the system-level discovery entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_tagsB
Destructive

Etiketler: kurum genelindeki etiketleri listeleme, olusturma, guncelleme ve silme.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo[create, update] Zorunlu: create, update. Tag Name
colorNo[create, update] Zorunlu: create, update. Tag color
queryNo[list] search parameter. start with - (minus) char to exclude searched text
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
tag_idNo[delete, update] Zorunlu: delete, update.
how_manyNo[list] How many records should be listed
start_pageNo[list] start page of records

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal that this tool is mutating and destructive, so the description does not need to repeat that. It adds the useful scope 'kurum genelindeki' and confirms the CRUD action set, but it does not disclose further behavioral context such as irreversibility of deletes, authentication requirements, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with the resource and all four operations front-loaded. There is no filler or redundant elaboration, though it is necessarily thin on behavioral guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-action CRUD tool with seven parameters and no output schema, the description plus schema and annotations are minimally sufficient. The schema handles parameter semantics and required fields, and annotations handle the destructive nature, but the description adds little beyond scope and operation names, leaving usage context and behavioral caveats thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with every parameter described and action-specific requirements marked in square brackets. The tool description itself adds no parameter detail, but the schema carries the full burden; a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (tags/etiketler) and enumerates the four operations: listeleme, olusturma, guncelleme, silme. It also adds the institution-wide scope with 'kurum genelindeki,' so it is not a bare tautology. It stops short of explicitly differentiating from sibling tools, but the tag resource is clearly distinct among the sibling modules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than explicitly stated: the tool is for institution-wide tag management, and the action enum clarifies which operation to perform. However, there is no guidance about when to prefer this tool over alternatives or when a particular action should not be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_templatesC
Destructive

E-posta/mesaj sablonlari: listeleme, detay, olusturma, guncelleme ve silme.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo[list] search parameter. start with - (minus) char to exclude searched text
titleNo[create, update] Template Title
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
messageNo[create, update] Template content
subjectNo[create, update] Subject
btn_textNo[create, update] button text
how_manyNo[list] How many records should be listed
order_byNo[list] order by
type_smsNo[create, update] True if template is for sms, False if template is for email
btn_colorNo[create, update] button color in HEX format, such as
body_colorNo[create, update] text color in HEX format, such as
has_buttonNo[create, update] whether a button is added or not
start_pageNo[list] start page of records
category_idNo[create, list, update] Template category id
template_idNo[delete, get, update] Zorunlu: delete, get, update.
translationsNo[create, update] translations of template
btn_operationNo[create, update] button operation. 1 for URL, 2 for Fonzip Related operation
template_typeNo[list] template type filter
btn_text_colorNo[create, update] button text in HEX format, such as
category__nameNo[create, update] Template category name
background_colorNo[create, update] background color in HEX format, such as
footer_icon_colorNo[create, update] footer icon color in HEX format, such as
footer_text_colorNo[create, update] footer text color in HEX format, such as
btn_operation_detailNo[create, update] button action detail
has_association_logoNo[create, update] True if mail includes the logo of association

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is destructive, read-write, and non-idempotent. The description merely restates that delete/update/create operations exist and adds no additional behavioral context such as effects on related data, authorization needs, or irreversible actions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler. It front-loads the resource and lists operations efficiently, though it is so terse that it misses opportunities to provide richer guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 25 parameters, nested objects, no output schema, and an action-driven design, a one-line description is insufficient. The schema helps, but the description does not clarify per-action invocation patterns, required fields beyond the bracketed notes, or expected return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema carries the parameter documentation burden. The tool description itself adds no parameter-level meaning beyond naming the operations, justifying the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as email/message templates and lists the five CRUD operations (list, detail, create, update, delete). It is specific enough to distinguish this tool from sibling fonzip_* tools that target different resources, though it does not name a sibling or highlight unique scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to use this tool versus alternatives, nor any exclusion criteria. An agent must infer usage solely from the resource name and the action enum in the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_usersB
Destructive

Uyeler/bagiscilar (kisiler): listeleme ve arama, detay, olusturma, guncelleme, silme; kisinin zaman tuneli, etiketleri, bagislari, aidatlari, biletleri ve form cevaplari.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo[update] Zorunlu: update.
tagsNo[create] tag id's to be added
typeNo[update] Zorunlu: update. Updating field type. - single: for single system defined field - multiple: for multiple fields - udv: for single user defined value field - membership_no: updating membership no
emailNo[create] email
phoneNo[create] phone
tcknoNo[create] Users Identity Number / Organization tax number
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
searchNo[list] Zorunlu: list.
tag_idNo[add_tag, remove_tag, timeline] Zorunlu: add_tag, remove_tag.
addressNo[create] Address
listingNo[list_membership_dues] Which operations should be fetched? <br> - a: all <br> - p: payments <br> - d: debts <br> - r: refunds
user_idNo[add_tag, delete, get, list_donations, list_ecard_transactions, list_form_answers, list_membership_dues, list_micro_donations, list_monthly_donations, list_tags, list_tickets, login_link, remove_tag, timeline, update] Zorunlu: add_tag, delete, get, list_donations, list_ecard_transactions, list_form_answers, list_membership_dues, list_micro_donations, list_monthly_donations, list_tags, list_tickets, login_link, remove_tag, timeline, update.
birthdayNo[create] Birthday
how_manyNo[list_donations, list_ecard_transactions, list_form_answers, list_membership_dues, list_micro_donations, list_tickets, timeline] How many records should be listed
city_textNo[create] City
join_dateNo[create] users join date
last_nameNo[create] last name
post_codeNo[create] Post code
apply_dateNo[create] users application date
first_nameNo[create] Zorunlu: create. first name
notes_onlyNo[timeline] list only notes
start_pageNo[list_donations, list_ecard_transactions, list_form_answers, list_membership_dues, list_micro_donations, list_tickets, timeline] start page of records
work_phoneNo[create] Work phone
values_listNo[list]
country_textNo[create] Country
email_secondNo[create] second email
work_addressNo[create] Work address
district_textNo[create] District
membership_noNo[create] users membership number
require_totalNo[timeline] return total number of timeline events
corporate_typeNo[create] true if user is set as corporate/organization
work_city_textNo[create] Work city
work_post_codeNo[create] Work post code
home_phone_firstNo[create] Home phone
nationality_textNo[create] nationality
redirection_typeNo[login_link] redirection for login link - 3: Dues payment page of user - 4: Donations of user - 5: Main Page (Default) - 10: Membership Card - 12: Membership Dues Card Update
work_country_textNo[create] Work country
allow_comm_via_smsNo[create] if user has communication permission via sms
work_district_textNo[create] Work district
user_defined_valuesNo[create] user defined values as key value pairs
allow_comm_via_emailNo[create] if user has communication permission via email
allow_comm_via_phoneNo[create] if user has communication permission via phone
membership_no_decisionNo[create] how to assign the new membership number - no: does not make any changes - auto: assigns the next available membership number incrementally - custom: sets your value
allow_comm_via_sms_dateNo[create] sms communication permission update date
allow_comm_via_email_dateNo[create] email communication permission update date
allow_comm_via_phone_dateNo[create] phone communication permission update date

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this tool as destructive and non-read-only, and the description confirms this by mentioning create, update, and delete operations. It adds some behavioral context by naming the person-centric subresources, but it does not disclose side effects, what deletion affects, authentication needs, or other consequences beyond what the annotations already imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence that front-loads the resource and core operations before enumerating related data areas. It is compact and free of filler, though the long semicolon-separated list makes it slightly less scannable than a structured summary would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a very complex tool with 46 parameters, 20+ actions, nested search/update structures, and no output schema, but the description only provides a high-level scope. It does not explain how to choose among actions, what actions are available beyond the enum, what return values look like, or how pagination and filtering work. The schema fills in parameter details, but an agent still lacks adequate contextual guidance for correct tool invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents every parameter in detail, including action-specific required fields. The description itself contributes no parameter semantics, which is acceptable given the strong schema coverage. The baseline of 3 applies because the schema, not the description, carries the semantic load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as members/donors (persons) and lists the main operations: listing/searching, detail, create, update, delete, plus related person data like timeline, tags, donations, dues, tickets, and form answers. This gives an agent a solid idea of the tool's scope, though it does not explicitly differentiate it from sibling tools like fonzip_donations or fonzip_tags, which cover overlapping subresources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus sibling tools. The description simply states the resource and operations, leaving the agent to infer that person-level operations belong here. No exclusions or alternative recommendations are provided, which is a significant gap for a large tool with many related sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fonzip_webhooksB
Destructive

Webhook'lar: kayitli webhook'lari listeleme, detay, olusturma, guncelleme, test bildirimi gonderme ve silme.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo[create, update] Webhook Id
urlNo[create, update] Zorunlu: create, update. Webhook URL
nameNo[create, update] Zorunlu: create, update. Webhook Name
actionYesYapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir.
eventsNo[create, update] Zorunlu: create, update.
auth_tokenNo[create, update] basic authentication header value
webhook_idNo[delete, get, send_test_notification, update] Zorunlu: delete, get, send_test_notification, update.
authenticationNo[create, update] True if authentication header is set

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive behavior and non-read-only semantics, and the description merely lists operations such as delete and send_test_notification without adding new context beyond the schema. It does not disclose side effects, irreversibility, authentication requirements, or rate-limit considerations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately identifies the resource and lists every available operation. There is no redundant phrasing or filler, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with eight parameters, an action discriminator, nested objects, and no output schema, the description provides a helpful operation overview but leaves per-action required fields and return behavior to the schema. It is minimally adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters and their action affinities. The description adds no parameter-level meaning, so it deserves the baseline score of 3 rather than higher.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a webhook manager and enumerates all supported operations: listing, detail, create, update, test notification, and delete. This is specific enough to distinguish it from sibling tools targeting other Fonzip resources, though it does not explicitly contrast itself with a sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, and does not explain how to choose among the action values. The action enum in the schema covers operation semantics, but the description itself leaves usage decisions entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 13 tool updatesv0.1.2
    • First observedfonzip_communication_permissions
    • First observedfonzip_donations
    • First observedfonzip_ecards
    • First observedfonzip_events
    • First observedfonzip_forms
    • First observedfonzip_fundraising
    • First observedfonzip_membership_dues
    • First observedfonzip_monthly_donations
    • First observedfonzip_system
    • First observedfonzip_tags
    • First observedfonzip_templates
    • First observedfonzip_users
    • First observedfonzip_webhooks

TDQS

B3.4/5.0

Scored across 13 tools

Disambiguation4/5

Each tool maps to a distinct resource area such as users, donations, forms, webhooks, or templates, making selection relatively straightforward. Some overlap exists between donation pages/forms and custom forms, and between general events and fundraising events, but the descriptions clarify the intended boundaries.

Naming Consistency5/5

All tools follow the same fonzip_<resource> snake_case naming convention, using plural nouns for resource domains. This creates a highly predictable and consistent pattern, even though the names are noun-based rather than verb_noun phrases.

Tool Count5/5

Thirteen tools is well within the ideal range for a donor-management and fundraising platform. Each tool represents a meaningful domain and contributes to the overall scope without feeling bloated or redundant.

Completeness4/5

The tool surface covers the major donor lifecycle: users, donations, recurring donations, dues, events, fundraising campaigns, forms, communication permissions, templates, webhooks, and system configuration. Minor gaps exist, such as no explicit listing operation for recurring donations and limited sales operations for tickets and e-cards, but most essential workflows are supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to look up IRS nonprofit data, verify tax-deductible charity status, and search for organizations by name or location using the CharityAPI database.
    4
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query the IRS 990 nonprofit database and OpenRegs federal regulations database via SQL, providing access to nonprofit filings, grants, lobbying, and congressional data.
    Creative Commons Zero v1.0 Universal
  • A
    license
    C
    quality
    D
    maintenance
    Enables AI agents to manage veterinary practice data through ezyVet API, including animals, contacts, appointments, consults, invoices, and products.
    8
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access and manage CiviCRM data, including contacts, activities, contributions, events, and memberships, with full custom field support.
    5
    MIT