fonzip-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fonzip-mcpBu ayki bağışların toplamını göster"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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 dahilTü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.
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-mcpSadece 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_SECRETSunucu 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 |
| evet¹ | — | Fonzip API client id |
| evet¹ | — | Fonzip API client secret |
| hayır | — | Hazır token. Verilirse |
| hayır |
| API adresi |
| hayır |
|
|
| hayır |
| Token önbelleği yolu. |
| hayır |
| İstek zaman aşımı |
| hayır |
| 429 ve 5xx için yeniden deneme sayısı |
| hayır |
| Boş bırakmayın — neden |
¹ 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 |
| 5 | Kurum bilgisi ( |
| 18 | Üye/bağışçı kayıtları, zaman tüneli, etiketler, kişiye bağlı listeler |
| 14 | Bağışlar, bağış kategorileri, mikro bağışlar, bağış sayfaları ve formları |
| 5 | Düzenli bağış tutar/kart değişikliği ve iptal |
| 9 | Aidat abonelikleri ve borçlar |
| 12 | Etkinlikler, biletler, bilet satışları |
| 19 | Bağış kampanyaları, kampanya etkinlikleri, takımlar |
| 4 | Formlar ve form cevapları |
| 9 | E-kartlar, kategoriler, satış işlemleri |
| 4 | Etiket yönetimi |
| 5 | Mesaj şablonları |
| 6 | Webhook yönetimi ve test bildirimi |
| 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_donations → list, list_micro, report · fonzip_membership_dues → list · fonzip_events → list_ticket_sales · fonzip_forms → list_answers · fonzip_ecards → list_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 buildDepoda .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 toolsfonzip_communication_permissionsA
Iletisim izinleri (e-posta/SMS/telefon): bir adres veya numaranin izin durumunu sorgulama, guncelleme ve degisenleri listeleme.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | [list_changed] Number of days before today. | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| details | No | [update] additional details like channel, IP address etc. | |
| how_many | No | [list_changed] How many records should be listed | |
| permission | No | [update] Zorunlu: update. communication permitted or not | |
| start_page | No | [list_changed] start page of records | |
| update_date | No | [update] Zorunlu: update. value last update date | |
| permission_type | No | [tum action'lar] Zorunlu: get, list_changed, update. Permission Types <br> - email <br> - sms <br> - phone | |
| permission_value | No | [get, update] Zorunlu: get, update. email or phone number in E164 format |
TDQS
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.
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.
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.
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.
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.
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_donationsCDestructive
Bagislar: listeleme (tarih araligi zorunlu), detay, olusturma, silme, rapor; bagis kategorileri; mikro bagislar; bagis sayfalari ve formlari.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | [create] city | |
| list | No | [list, list_micro] which values should be listed | |
| name | No | [create_category, update_category] Donation/E-Card Category name | |
| No | [create] email | ||
| phone | No | [create] phone number | |
| query | No | [list, list_categories, list_donation_forms, list_donation_pages, list_micro] search parameter. start with - (minus) char to exclude searched text | |
| tckno | No | [create] Users Identity Number | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| active | No | [update_category_status] Zorunlu: update_category_status. true for active, false for passive | |
| amount | No | [create, list, list_micro] donation amount | |
| d_type | No | [create] Donation Type - 0: cash - 1: noncash / inkind | |
| status | No | [list, list_micro] what kind of donations should be listed | paid |
| address | No | [create] address | |
| amt_cnd | No | [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 | |
| details | No | [create] Donation details | |
| section | No | [create] donation section - page: ngo fundraising page - fundraising: fundraising campaign - form: donation form/module - other: other | |
| birthday | No | [create] users birthday | |
| currency | No | [create] Currency ISO Code | |
| district | No | [create] district | |
| ecard_id | No | [create] ecard id | |
| end_date | No | [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_many | No | [list, list_categories, list_donation_forms, list_donation_pages, list_micro] How many records should be listed | |
| order_by | No | [list, list_micro] ordering | -transaction__complete_date |
| aggregate | No | [report] aggregate results | |
| last_four | No | [list, list_micro] card last four digits | |
| last_name | No | [create] last name | |
| member_id | No | [create] User ID / if not available, a new user will be created | |
| module_id | No | [create] donation form/module id | |
| post_code | No | [create] post/zip code | |
| recurring | No | [list, list_micro] filter recurring donations - 1: only recurring, - 0: exclude recurring, - -1: list all | |
| referring | No | [create] donation in honor of someone | |
| bin_number | No | [list, list_micro] card BIN number | |
| donor_type | No | [create, list, list_micro] Donor type - personal: donor is a person - corporate: donor is an organization | |
| first_name | No | [create] first name | |
| receipt_no | No | [create] receipt no | |
| start_date | No | [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_page | No | [list, list_categories, list_donation_forms, list_donation_pages, list_micro] start page of records | |
| utm_medium | No | [list] Filter donations by one or more `utm_medium` values (IN-list). | |
| utm_source | No | [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_id | No | [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_id | No | [report] currency id | |
| donation_id | No | [delete, get, get_micro] Zorunlu: delete, get, get_micro. | |
| name_hidden | No | [create] name is hidden in fundraising campaign donor list | |
| no_category | No | [list, list_micro] when true, return only donations that have no donation category assigned. Ignored if category_id is also supplied. | |
| report_type | No | [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_content | No | [list] Filter donations by one or more `utm_content` values (IN-list). | |
| utm_campaign | No | [list] Filter donations by one or more `utm_campaign` values (IN-list). | |
| complete_date | No | [create] Donation Date | |
| donation_page | No | [list, list_micro] donation page id | |
| thanks_sms_id | No | [create] sms template id | |
| amount_visible | No | [create] amount is visible in fundraising campaign donor list | |
| payment_method | No | [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_city | No | [create] honoree's city | |
| referring_name | No | [create] honorees name | |
| tax_department | No | [create] Donor's tax office (vergi dairesi). Only meaningful when donor_type is "corporate"; ignored for personal donors. | |
| thanks_mail_id | No | [create] mail template id | |
| transaction_id | No | [create] bank transaction id | |
| api_tracking_id | No | [list, list_micro] API Tracking ID | |
| bank_account_id | No | [create, list, list_micro] Bank Account ID | |
| referring_email | No | [create] honoree's email | |
| referring_phone | No | [create] honoree's phone | |
| send_thanks_sms | No | [create] send thanks sms | |
| send_thanks_mail | No | [create] send mail to donor | |
| referring_address | No | [create] honoree's address | |
| referring_district | No | [create] honoree's district | |
| referring_ecard_id | No | [create] ecard id to send to honoree | |
| fundraising_page_id | No | [create] ngo fundraising page id | |
| payment_settings_id | No | [list, list_donation_forms, list_donation_pages, list_micro] payment settings id | |
| fundraising_campaign | No | [list, list_micro] fundraising campaign id | |
| payment_method_select | No | [create] payment_method_select - card: card donation (!! Not available in API !!) - other: other (must set to other) | |
| marketing_channel_null | No | [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_id | No | [create] fundraising campaign id | |
| referring_thanks_mail_id | No | [create] mail template id to send to honoree | |
| association_campaign_target | No | [list, list_micro] fundraising event id |
TDQS
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.
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.
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.
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.
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.
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_ecardsBDestructive
E-kartlar: kart ve kart kategorisi yonetimi, e-kart satis islemlerini listeleme, detay ve silme.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | [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… | |
| name | No | [create_category, update_category] Donation/E-Card Category name | |
| query | No | [list, list_categories, list_transactions] search parameter. start with - (minus) char to exclude searched text | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| amount | No | [list_transactions] payment/debt amount | |
| status | No | [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 transactions | paid |
| amt_cnd | No | [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 | |
| listing | No | [list] E-Card available for sale in E-Card page - 0: private - 1: available - 2: available only via url | |
| sale_id | No | [delete_transaction, get_transaction] Zorunlu: delete_transaction, get_transaction. | |
| ecard_id | No | [get, list_transactions] Zorunlu: get. | |
| end_date | No | [list_transactions] Zorunlu: list_transactions. End date filtering for transaction__complete_date or complete_date fields. Must be after start_date. | |
| how_many | No | [list, list_categories, list_transactions] How many records should be listed | |
| order_by | No | [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_type | No | [list_transactions] *(paid only)* filter on the requested billing information type - 0: no bill - 1: personal - 2: corporate | |
| card_type | No | [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_four | No | [list_transactions] card last four digits | |
| bin_number | No | [list_transactions] card BIN number | |
| start_date | No | [list_transactions] Zorunlu: list_transactions. Start date filtering for transaction__complete_date or complete_date fields. Must be before end_date. | |
| start_page | No | [list, list_categories, list_transactions] start page of records | |
| utm_medium | No | [list_transactions] *(paid only)* Filter e-card transactions by one or more `utm_medium` values (IN-list). | |
| utm_source | No | [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_id | No | [delete_category, list, update_category] Zorunlu: delete_category, update_category. | |
| currency_id | No | [list_transactions] *(paid only)* filter transactions on currency id | |
| utm_content | No | [list_transactions] *(paid only)* Filter e-card transactions by one or more `utm_content` values (IN-list). | |
| card_country | No | [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_status | No | [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_campaign | No | [list_transactions] *(paid only)* Filter e-card transactions by one or more `utm_campaign` values (IN-list). | |
| delivery_date | No | [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_method | No | [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_id | No | [list_transactions] *(paid only)* bank account id | |
| payment_settings_id | No | [list_transactions] *(paid only)* payment settings id | |
| marketing_channel_null | No | [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
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.
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.
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.
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.
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.
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_eventsBDestructive
Etkinlikler: etkinlik olusturma, guncelleme, durum degistirme, silme; bilet tanimlari; bilet satislari ve satis detaylari.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | [create, update] Event URL | |
| name | No | [create, update] Event name | |
| image | No | [create, update] Event image url | |
| price | No | [create_ticket, update_ticket] Price | |
| query | No | [list, list_ticket_sales] search parameter. start with - (minus) char to exclude searched text | |
| title | No | [create_ticket, update_ticket] Zorunlu: create_ticket, update_ticket. Ticket name | |
| venue | No | [create, update] Event venue | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| active | No | [update_status] true if event is active, false if event is passive | |
| amount | No | [list_ticket_sales] payment/debt amount | |
| status | No | [list_ticket_sales] what kind of ticket sales should be listed | paid |
| target | No | [list] filter based on past or upcoming events - a: all - p: past - u: upcoming | a |
| address | No | [create, update] Event address | |
| all_day | No | [create, update] Event takes all day | |
| amt_cnd | No | [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 | |
| details | No | [create, create_ticket, update, update_ticket] Event details | |
| archived | No | [list] true for archived records, null for normal records | |
| end_date | No | [create, list_ticket_sales, update] Zorunlu: list_ticket_sales. Event end date | |
| event_id | No | [delete, get, list_ticket_sales, update, update_status] Zorunlu: delete, get, update, update_status. | |
| how_many | No | [list, list_ticket_sales] How many records should be listed | |
| location | No | [create, update] Whether event is held online or at a venue <br> - 0: Venue <br> - 1: Online | |
| order_by | No | [list, list_ticket_sales] ordering | start_date |
| last_four | No | [list_ticket_sales] card last four digits | |
| sales_end | No | [create_ticket, update_ticket] Ticket sale end date | |
| ticket_id | No | [delete_ticket, get_ticket, update_ticket] Zorunlu: delete_ticket, get_ticket, update_ticket. | |
| bin_number | No | [list_ticket_sales] card BIN number | |
| paid_event | No | [create, update] Event has paid tickets | |
| start_date | No | [create, list_ticket_sales, update] Zorunlu: list_ticket_sales. Event start date | |
| start_page | No | [list, list_ticket_sales] start page of records | |
| sales_start | No | [create_ticket, update_ticket] Ticket sale start date | |
| tag_control | No | [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_type | No | [create_ticket, update_ticket] Ticket type - paid: paid ticket - free: free ticket | |
| ticket_types | No | [create, update] | |
| send_reminder | No | [create, update] should a reminder sent to the participants one day before the event | |
| max_per_person | No | [create_ticket, update_ticket] maximum number of tickets a user can buy | |
| payment_method | No | [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_id | No | [get_ticket_sale] Zorunlu: get_ticket_sale. | |
| time_selection | No | [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_installment | No | [create, update] maximum number of installments for event | |
| tags_to_control | No | [create_ticket, update_ticket] tag_id's for tag control | |
| ask_billing_info | No | [create, update] additional billing info is required or not | |
| installment_count | No | [list_ticket_sales] installment count | |
| post_sale_message | No | [create_ticket, update_ticket] message to be shown after the ticket is purchased | |
| sales_end_on_date | No | [create_ticket, update_ticket] true if ticket sale must end on specific date | |
| sender_account_id | No | [create, update] Email sender account id for event | |
| member_with_no_debt | No | [create_ticket, update_ticket] true if ticket can only be bought by users with no debt | |
| payment_settings_id | No | [create, list_ticket_sales, update] Payment settings id | |
| sales_start_on_date | No | [create_ticket, update_ticket] true if ticket sale must start on specific date | |
| related_with_no_debt | No | [create_ticket, update_ticket] true if ticket can only be bought if users related organization has no debt |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | [list, list_answers] search parameter. start with - (minus) char to exclude searched text | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| answer | No | [respond_to_answer] Zorunlu: respond_to_answer. approval/rejection details | |
| status | No | [list_answers] answer status - answer: list answers - waiting_approval: list answers waiting approval - rejected: list rejected answers - refund: list refunds - failed: list failed answers | answer |
| form_id | No | [get_answer, respond_to_answer] Zorunlu: get_answer, respond_to_answer. | |
| archived | No | [list] true for archived records, null for normal records | |
| end_date | No | [list_answers] Zorunlu: list_answers. End date filtering for transaction__complete_date or complete_date fields. Must be after start_date. | |
| how_many | No | [list, list_answers] How many records should be listed | |
| answer_id | No | [get_answer, respond_to_answer] Zorunlu: get_answer, respond_to_answer. | |
| start_date | No | [list_answers] Zorunlu: list_answers. Start date filtering for transaction__complete_date or complete_date fields. Must be before end_date. | |
| start_page | No | [list, list_answers] start page of records | |
| response_type | No | [respond_to_answer] Zorunlu: respond_to_answer. response type |
TDQS
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.
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.
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.
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.
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.
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_fundraisingCDestructive
Bagis toplama: kampanyalar (fundraising campaign), kampanya etkinlikleri (fundraising event) ve takimlar (fundraising team) ile takimlara bagli kampanyalar.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | [create, create_event, update_event] Fundraising campaign id | |
| url | No | [create] campaign url | |
| data | No | [update] key value pairs of fields and values (see example) | |
| field | No | [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 | |
| image | No | [create, create_team, update_team] campaign image url | |
| query | No | [list, list_teams] search parameter. start with - (minus) char to exclude searched text | |
| title | No | [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 | |
| value | No | [update] | |
| action | Yes | [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) | |
| status | No | [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 | |
| target | No | [create, create_event, create_team_campaign, update_event, update_team_campaign] campaign target | |
| default | No | [create_team_campaign, update_team_campaign] Fundraising team campaign is currently active & default | |
| details | No | [create_team, update_team] Zorunlu: create_team, update_team. Fundraising team description | |
| team_id | No | [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_id | No | [create, create_team, update_team] Zorunlu: create_team, update_team. userid | |
| campaign | No | [create_team] Zorunlu: create_team. | |
| event_id | No | [delete_event, update_event] Zorunlu: delete_event, update_event. | |
| featured | No | [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_many | No | [list, list_teams] How many records should be listed | |
| multiple | No | [update] true if updating multiple fields | |
| order_by | No | [list, list_teams] ordering | |
| user_note | No | [create] users note | |
| currencies | No | [create] valid currencies | |
| event_date | No | [create] Event date | |
| has_target | No | [create, create_team_campaign, update_team_campaign] campaign has target | |
| phone_show | No | [create] true if phone is asked | |
| start_page | No | [list, list_teams] start page of records | |
| tckno_show | No | [create] true if tckno is asked | |
| campaign_id | No | [delete, delete_team_campaign, get, update, update_status, update_team_campaign] Zorunlu: delete, delete_team_campaign, get, update, update_status, update_team_campaign. | |
| category_id | No | [list] fundraising campaigns' donation category id | |
| create_date | No | [list] create date filter | |
| currency_id | No | [create_team, update_team] Zorunlu: update_team. Fundraising team default Currency ID | |
| address_show | No | [create] true if address is asked | |
| message_show | No | [create] true if donors may leave a message. Ships enabled, unlike the other *_show flags | |
| birthday_show | No | [create] true if birthday is asked | |
| campaign_list | No | [update_team] Zorunlu: update_team. | |
| thanks_sms_id | No | [create] thanks sms id | |
| certificate_id | No | [create] certificate | |
| phone_required | No | [create] true if phone is required | |
| tckno_required | No | [create] true if tckno is required | |
| thanks_mail_id | No | [create] thanks mail id | |
| create_date_cnd | No | [list] create date filter condition | |
| hide_donor_list | No | [create] donor list is hidden or not | |
| address_required | No | [create] true if address is required | |
| has_special_date | No | [create] True if campaign has a event date like birthday, memorial day etc. | |
| personal_message | No | [create] campaign message | |
| team_campaign_id | No | [list] fundraising campaign teams' campaign id | |
| bank_account_list | No | [create] | |
| birthday_required | No | [create] true if birthday is required | |
| target_currency_id | No | [create, create_team_campaign, update_team_campaign] fundraising campaign target currency id | |
| hide_total_donation | No | [create] total donations is hidden or not | |
| payment_settings_id | No | [create, list] payment system id | |
| sub_donation_type_id | No | [create] donation category id | |
| referral_certificate_id | No | [create] referral certificate id | |
| referral_thanks_mail_id | No | [create] referral thanks mail id | |
| association_campaign_target_id | No | [create, list] fundraising event id |
TDQS
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.
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.
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.
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.
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.
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_duesBDestructive
Aidatlar ve borclar: aidat aboneliklerini listeleme/detay/silme, borc (debt) olusturma, guncelleme, durum degistirme ve silme.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | [list, list_debts] search parameter. start with - (minus) char to exclude searched text | |
| action | Yes | [update_debt_status] Zorunlu: update_debt_status. action to apply to the debt - remove: removes the debt - activate: activates the debt | |
| amount | No | [create_debt, list, list_debts] debt amount ( also payment amount if custom amount is 'custom'.) | |
| period | No | [create_debt, update_debt] Period Date | |
| status | No | [list, list_debts] what kind of membership dues should be listed - paid: for payments - refund: for refunds - failed: for failed payment transactions | paid |
| tag_id | No | [list, list_debts] Tag id of user | |
| amt_cnd | No | [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_no | No | [create_debt, update_debt] bill no | |
| debt_id | No | [delete_debt, get_debt, update_debt, update_debt_status] Zorunlu: delete_debt, get_debt, update_debt, update_debt_status. | |
| details | No | [create_debt, update_debt] debt description | |
| user_id | No | [create_debt] user id | |
| due_date | No | [create_debt, update_debt] Debts Due Date | |
| end_date | No | [list] Zorunlu: list. End date filtering for transaction__complete_date or complete_date fields. Must be after start_date. | |
| how_many | No | [list, list_debts] How many records should be listed | |
| order_by | No | [list, list_debts] ordering | -transaction__complete_date |
| last_four | No | [list] card last four digits | |
| recurring | No | [create_debt] if debt is recurring | |
| send_mail | No | [create_debt] send mail after adding the debt | |
| bin_number | No | [list] card BIN number | |
| start_date | No | [list] Zorunlu: list. Start date filtering for transaction__complete_date or complete_date fields. Must be before end_date. | |
| start_page | No | [list, list_debts] start page of records | |
| add_payment | No | [create_debt] add the payment after adding the debt | |
| added_by_id | No | [list, list_debts] User id who added the payment | |
| create_date | No | [list, list_debts] Record creation date filter | |
| period_year | No | [list, list_debts] Dues Period Year | |
| remove_note | No | [update_debt] remove debt description for removed debt status | |
| transaction | No | [update_debt] | |
| period_month | No | [list, list_debts] Dues Period Month | |
| custom_amount | No | [create_debt] amount for payment. total_debt for users total debt, custom for custom debt amount | |
| membership_no | No | [list, list_debts] Membership number of user | |
| added_by__name | No | [list, list_debts] User name (case-insensitive, unaccented) who added the payment. Used when added_by_id is not known. | |
| operation_date | No | [create_debt, list_debts, update_debt] Membership Due Operation Date | |
| payment_method | No | [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_id | No | [create_debt] mail template to be sent after adding the debt | |
| create_date_cnd | No | [list, list_debts] Record creation date filter condition | |
| subscription_id | No | [delete, get] Zorunlu: delete, get. | |
| recurring_period | No | [create_debt, update_debt] Recurring period in days | |
| installment_count | No | [list] installment count | |
| possible_duplicate | No | [list_debts] When true, returns only debts whose (user, period, amount) tuple appears more than once in the association's debts. | |
| payment_method_select | No | [create_debt] payment type selection. must be other for API | other |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | [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 | |
| type | No | [create_update_request] Request Type - cancel: send cancellation request - amount: send amount upgrade requests | |
| title | No | [cancel] Template Title | |
| value | No | [create_update_request] Reason if request type is 'cancel' New Amount if request type is 'amount' | |
| action | Yes | [cancel] Zorunlu: cancel. must be "cancel" | |
| amount | No | [change_values] next withdrawal amount | |
| reason | No | [cancel] Zorunlu: cancel. Cancellation reason | |
| message | No | [cancel] Template content | |
| subject | No | [cancel] Subject | |
| user_id | No | [create_update_request, send_card_update_request] Zorunlu: create_update_request, send_card_update_request. | |
| approval | No | [respond_amount_change_request] Zorunlu: respond_amount_change_request. true if amount update request will be approved, false to reject | |
| btn_text | No | [cancel] button text | |
| type_sms | No | [cancel] True if template is for sms, False if template is for email | |
| btn_color | No | [cancel] button color in HEX format, such as | |
| body_color | No | [cancel] text color in HEX format, such as | |
| has_button | No | [cancel] whether a button is added or not | |
| category_id | No | [change_values] donation category id | |
| donation_id | No | [tum action'lar] Zorunlu: cancel, change_values, create_update_request, respond_amount_change_request, send_card_update_request. | |
| template_id | No | [cancel] Template ID to be sent | |
| translations | No | [cancel] translations of template | |
| btn_operation | No | [cancel] button operation. 1 for URL, 2 for Fonzip Related operation | |
| btn_text_color | No | [cancel] button text in HEX format, such as | |
| background_color | No | [cancel] background color in HEX format, such as | |
| save_as_template | No | [cancel] True if you want to save message as template | |
| footer_icon_color | No | [cancel] footer icon color in HEX format, such as | |
| footer_text_color | No | [cancel] footer text color in HEX format, such as | |
| send_from_template | No | [cancel] True if you want to send email from template | |
| btn_operation_detail | No | [cancel] button action detail | |
| has_association_logo | No | [cancel] True if mail includes the logo of association | |
| recurring_next_cycle | No | [change_values] Next withdrawal date | |
| send_cancellation_mail | No | [cancel] True if you want to send email to donor after cancelling donation | |
| monthly_donation_order_id | No | [change_values] Zorunlu: change_values. recurring_order_id of donation |
TDQS
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.
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.
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.
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.
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.
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_systemARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| how_many | No | [list_bank_accounts, list_marketing_channels, list_payment_systems] How many records should be listed | |
| start_page | No | [list_bank_accounts, list_marketing_channels, list_payment_systems] start page of records |
TDQS
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.
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.
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.
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.
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.
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_tagsBDestructive
Etiketler: kurum genelindeki etiketleri listeleme, olusturma, guncelleme ve silme.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | [create, update] Zorunlu: create, update. Tag Name | |
| color | No | [create, update] Zorunlu: create, update. Tag color | |
| query | No | [list] search parameter. start with - (minus) char to exclude searched text | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| tag_id | No | [delete, update] Zorunlu: delete, update. | |
| how_many | No | [list] How many records should be listed | |
| start_page | No | [list] start page of records |
TDQS
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.
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.
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.
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.
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.
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_templatesCDestructive
E-posta/mesaj sablonlari: listeleme, detay, olusturma, guncelleme ve silme.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | [list] search parameter. start with - (minus) char to exclude searched text | |
| title | No | [create, update] Template Title | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| message | No | [create, update] Template content | |
| subject | No | [create, update] Subject | |
| btn_text | No | [create, update] button text | |
| how_many | No | [list] How many records should be listed | |
| order_by | No | [list] order by | |
| type_sms | No | [create, update] True if template is for sms, False if template is for email | |
| btn_color | No | [create, update] button color in HEX format, such as | |
| body_color | No | [create, update] text color in HEX format, such as | |
| has_button | No | [create, update] whether a button is added or not | |
| start_page | No | [list] start page of records | |
| category_id | No | [create, list, update] Template category id | |
| template_id | No | [delete, get, update] Zorunlu: delete, get, update. | |
| translations | No | [create, update] translations of template | |
| btn_operation | No | [create, update] button operation. 1 for URL, 2 for Fonzip Related operation | |
| template_type | No | [list] template type filter | |
| btn_text_color | No | [create, update] button text in HEX format, such as | |
| category__name | No | [create, update] Template category name | |
| background_color | No | [create, update] background color in HEX format, such as | |
| footer_icon_color | No | [create, update] footer icon color in HEX format, such as | |
| footer_text_color | No | [create, update] footer text color in HEX format, such as | |
| btn_operation_detail | No | [create, update] button action detail | |
| has_association_logo | No | [create, update] True if mail includes the logo of association |
TDQS
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.
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.
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.
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.
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.
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_usersBDestructive
Uyeler/bagiscilar (kisiler): listeleme ve arama, detay, olusturma, guncelleme, silme; kisinin zaman tuneli, etiketleri, bagislari, aidatlari, biletleri ve form cevaplari.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | [update] Zorunlu: update. | |
| tags | No | [create] tag id's to be added | |
| type | No | [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 | |
| No | [create] email | ||
| phone | No | [create] phone | |
| tckno | No | [create] Users Identity Number / Organization tax number | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| search | No | [list] Zorunlu: list. | |
| tag_id | No | [add_tag, remove_tag, timeline] Zorunlu: add_tag, remove_tag. | |
| address | No | [create] Address | |
| listing | No | [list_membership_dues] Which operations should be fetched? <br> - a: all <br> - p: payments <br> - d: debts <br> - r: refunds | |
| user_id | No | [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. | |
| birthday | No | [create] Birthday | |
| how_many | No | [list_donations, list_ecard_transactions, list_form_answers, list_membership_dues, list_micro_donations, list_tickets, timeline] How many records should be listed | |
| city_text | No | [create] City | |
| join_date | No | [create] users join date | |
| last_name | No | [create] last name | |
| post_code | No | [create] Post code | |
| apply_date | No | [create] users application date | |
| first_name | No | [create] Zorunlu: create. first name | |
| notes_only | No | [timeline] list only notes | |
| start_page | No | [list_donations, list_ecard_transactions, list_form_answers, list_membership_dues, list_micro_donations, list_tickets, timeline] start page of records | |
| work_phone | No | [create] Work phone | |
| values_list | No | [list] | |
| country_text | No | [create] Country | |
| email_second | No | [create] second email | |
| work_address | No | [create] Work address | |
| district_text | No | [create] District | |
| membership_no | No | [create] users membership number | |
| require_total | No | [timeline] return total number of timeline events | |
| corporate_type | No | [create] true if user is set as corporate/organization | |
| work_city_text | No | [create] Work city | |
| work_post_code | No | [create] Work post code | |
| home_phone_first | No | [create] Home phone | |
| nationality_text | No | [create] nationality | |
| redirection_type | No | [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_text | No | [create] Work country | |
| allow_comm_via_sms | No | [create] if user has communication permission via sms | |
| work_district_text | No | [create] Work district | |
| user_defined_values | No | [create] user defined values as key value pairs | |
| allow_comm_via_email | No | [create] if user has communication permission via email | |
| allow_comm_via_phone | No | [create] if user has communication permission via phone | |
| membership_no_decision | No | [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_date | No | [create] sms communication permission update date | |
| allow_comm_via_email_date | No | [create] email communication permission update date | |
| allow_comm_via_phone_date | No | [create] phone communication permission update date |
TDQS
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.
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.
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.
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.
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.
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_webhooksBDestructive
Webhook'lar: kayitli webhook'lari listeleme, detay, olusturma, guncelleme, test bildirimi gonderme ve silme.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | [create, update] Webhook Id | |
| url | No | [create, update] Zorunlu: create, update. Webhook URL | |
| name | No | [create, update] Zorunlu: create, update. Webhook Name | |
| action | Yes | Yapilacak islem. Her action'in kendi zorunlu alanlari vardir; asagidaki aciklamalarda hangi alanin hangi action'a ait oldugu koseli parantez icinde belirtilir. | |
| events | No | [create, update] Zorunlu: create, update. | |
| auth_token | No | [create, update] basic authentication header value | |
| webhook_id | No | [delete, get, send_test_notification, update] Zorunlu: delete, get, send_test_notification, update. | |
| authentication | No | [create, update] True if authentication header is set |
TDQS
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.
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.
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.
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.
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.
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.
13 tool updates
v0.1.2- First observed
fonzip_communication_permissions - First observed
fonzip_donations - First observed
fonzip_ecards - First observed
fonzip_events - First observed
fonzip_forms - First observed
fonzip_fundraising - First observed
fonzip_membership_dues - First observed
fonzip_monthly_donations - First observed
fonzip_system - First observed
fonzip_tags - First observed
fonzip_templates - First observed
fonzip_users - First observed
fonzip_webhooks
TDQS
Scored across 13 tools
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.
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.
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.
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
Related MCP Connectors
Verified, pay-per-use API tools for AI agents through one authenticated connection.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
- BankSyncOAuthio.banksync
Connect AI agents to bank accounts, transactions, balances, and investments.
- ZapierOAuthcom.zapier.mcp
Zapier MCP connects AI tools like Claude, ChatGPT, and Cursor to over 8,000 apps and 30,000+ actions, enabling AI to perform real-world tasks such as sending messages, searching data, scheduling events, and updating records. It acts as a translator between AI tools and apps, handling authentication, rate limits, and retries automatically, transforming AI from a conversational tool into a functional extension of your business stack.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables 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.43-

DataDawn MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables 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- AlicenseCqualityDmaintenanceEnables AI agents to manage veterinary practice data through ezyVet API, including animals, contacts, appointments, consults, invoices, and products.8MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access and manage CiviCRM data, including contacts, activities, contributions, events, and memberships, with full custom field support.5MIT