NestDaddy

DelegAIze

io.github.toasternet/delegaize · v1.0.2

AI agents for CRM, mail, calendar, ERP and accounting - you approve. EU-hosted, OAuth.

Connect Remote server

Terminal
claude mcp add --transport http delegaize https://callpilotai.cf-innov-ai-tive.de/api/sb/functions/v1/mcp-server
~/.cursor/mcp.json
{
  "mcpServers": {
    "delegaize": {
      "url": "https://callpilotai.cf-innov-ai-tive.de/api/sb/functions/v1/mcp-server"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "delegaize": {
      "type": "http",
      "url": "https://callpilotai.cf-innov-ai-tive.de/api/sb/functions/v1/mcp-server"
    }
  }
}
Claude Desktop
Settings > Connectors > Add custom connector
URL: https://callpilotai.cf-innov-ai-tive.de/api/sb/functions/v1/mcp-server

Tools 80 found in our last check

  • ingest_message

    Ingest one incoming message from an external channel (Beeper network, desktop mail, …) forwarded by the local comms-forward bridge. Idempotent on (channel, external_id). Stores the message and, unless auto_draft is false, generates an AI reply DRAFT (never auto-sends) — EXCEPT w…

  • list_inbound_messages

    Read the messages that arrived through the channel ingest (ingest_message — Beeper networks such as WhatsApp/Signal/LinkedIn, desktop mail — plus Mattermost and WhatsApp ad leads), newest first. This is the inbox for those channels; list_whatsapp_messages only covers Twilio. Rea…

  • classify_message

    Classify one incoming item — an e-mail (kind 'email', id from list_emails) or a messenger message (kind 'inbound_message', id from list_inbound_messages): category, priority, responsible agent and a short note. category must be one of the tenant's classification classes (without…

  • suggest_agents

    Suggest 3-6 agents for this tenant from what actually arrives: reads the latest N incoming e-mails and messenger messages (default 200), groups them into topics with the tenant's language model and proposes one agent per topic: name, responsibility, reasoning with its share ('23…

  • list_leads

    List leads for the current tenant. Filters: search (title/email/phone/best_phone — a search term that looks like a NUMBER is additionally matched against the last nine digits of phone, best_phone and fax, so '017612345678' finds a lead stored as '0176 12345678'. To identify a CA…

  • count_leads

    Return { count } — the TOTAL number of leads matching a filter, without fetching any rows. Accepts the exact same filters as list_leads (search, category, status, campaign_id, no_campaign, owner_id, min_score, stale_days). Use this to size a segment before listing/exporting (e.g…

  • export_leads_file

    Export EVERY lead matching a filter to a downloadable file and return { url, filename, format, count, bytes, truncated }. `url` is a signed link (valid 7 days) to a private file. Unlike export_leads (which pages 100 at a time), this pulls the whole filtered set server-side into…

  • get_lead

    Get one lead with its account, recent calls, and upcoming meetings.

  • export_leads

    Full-fidelity export of leads for offline analysis / backup. Returns { leads, count, limit, offset }. Each lead has ALL its columns, ai_memory[] (every AI-memory item attached to the lead — all categories, full untruncated content, newest first), and (unless disabled) nested con…

  • list_accounts

    List accounts (companies). Optional search on name, label (name or id: only accounts with this label), stale_days (last activity older than N days), order_by: last_activity|name|created (default last_activity). Returns last_activity_at and labels[].

  • get_account

    Get one account with its contacts (all people linked to it, each with function and whether it is their main organisation), leads, labels and custom_fields.

  • list_contacts

    List contacts. Optional search (first/last name, email), account_id (main organisation), category (category name, case-insensitive) or category_id, label (name or id), stale_days (last activity older than N days), order_by: last_activity|name|created (default last_activity). Ret…

  • get_contact

    Get one contact with its labels, custom_fields, additional contact points (private/work e-mails, phones, addresses) and all organisations (with function; account_id is the main one).

  • list_campaigns

    List campaigns for the current tenant.

  • get_campaign

    Get one campaign with its pipeline stages and target counts by state.

  • list_calls

    List call history for the current tenant, optionally filtered by lead_id. Newest first.

  • list_meetings

    List meetings for the current tenant, optionally filtered by lead_id or status. Soonest first.

  • list_email_history

    List sent/draft emails (email_drafts) for a lead (lead_id), a person (contact_id) or an organisation (account_id) — or with unassigned=true the SENT mails that belong to no record at all (e.g. sent with send_email before the contact existed); assign them with assign_email (draft…

  • delete_draft

    Delete an UNSENT email draft (email_drafts) you no longer need. Only rows with status 'draft' can be removed — a sent email is a record and is refused. Any temporary download links belonging to the draft go with it. Use this after abandoning a draft, so it does not linger on the…

  • list_drafts

    List UNSENT email drafts (email_drafts, status 'draft') for the tenant, newest first. Optionally narrowed to one lead. For sent mail use list_email_history.

  • list_letter_history

    List physical letters ('Briefe', letter_briefs) sent for a lead.

  • add_lead_message

    Record a channel message on a lead's communications timeline (LinkedIn/WhatsApp/Signal/email/note…). Required: lead_id, channel, body. Optional: direction ('inbound'|'outbound', default inbound), sent_at (ISO), sender, contact_id, external_chat_id, external_message_id, inbound_m…

  • list_lead_messages

    List a lead's channel messages (newest first). Optional channel filter.

  • list_ai_memory_items

    List AI memory items. Scope a note with entity ('lead'|'contact'|'account'|'campaign') + entity_id (the record id). With entity_id: that record's notes PLUS tenant-wide notes. Without: tenant-wide only. category is now a free topical label (e.g. 'positioning-usp') you can filter…

  • get_tenant_rules

    Read the tenant rule book — the rules that apply to ALL agents of this tenant (every agent gets them at start in get_agent_bootstrap). Returns the text and the app link where an admin views and edits it.

  • add_tenant_rule

    Append ONE rule to the tenant rule book, which every agent reads at start. Use it when a human says a rule applies to all bots ("jeder Bot soll …", "Polizei: ab jetzt immer …") — instead of copying it into each agent's memory. Required: rule (one sentence or short paragraph), re…

  • create_ai_memory_item

    Save an AI memory item. Required: name, content. Scope it with entity ('lead'|'contact'|'account'|'campaign') + entity_id (a CRM record) AND/OR brain_id + agent_id (agent 'brain' memory). category is a free topical label (default 'general'). importance 1-5 (default 3) for rankin…

  • update_ai_memory_item

    Update an AI memory item (partial). Stamps updated_at. Set entity + entity_id to re-attach a note to a record (e.g. entity='lead', entity_id=<lead id>); pass entity_id null to make it tenant-wide. category is a free topical label. occurred_at (ISO) = the fact's original date in…

  • delete_ai_memory_item

    Delete an AI memory item.

  • list_documents

    List documents. Documents are typed info (doc_type: email|offer|invoice|order|note|file|other) with a title + description the AI can analyze — e.g. sevDesk offers/invoices imported per lead. Scope with entity ('lead'|'contact'|'account'|'campaign') + entity_id. Pass unfiled:true…

  • add_document

    Attach a document (typed info) to a record BY REFERENCE — no file bytes, url just points at something hosted elsewhere. Required: entity ('lead'|'contact'|'account'|'campaign'), entity_id, title. Optional: doc_type (default 'note'), description (the analyzable text), source, url…

  • upload_document

    Attach an actual FILE to a record (lead/contact/account/campaign) — stored in private Supabase Storage, not just a URL reference. Required: entity, entity_id, and EITHER source_url OR content_base64 (not both). IF YOU HAVE SHELL/CODE-EXECUTION ACCESS (Bash, a script runner, etc.…

  • create_document_upload_url

    Step 1 of the recommended flow for a LOCAL file when you (the calling agent) have shell/code-execution access (Bash, a script, curl, etc.): reserves a document record + a one-time signed upload URL, so the actual file bytes travel via a plain HTTP PUT from your shell — never thr…

  • finalize_document_upload

    Step 2 of the create_document_upload_url flow: call this AFTER your shell has PUT the file to the upload_url. Confirms the object actually landed in storage, backfills its real file_size/mime_type, and (unless analyze:false) runs AI analysis the same way upload_document does. Re…

  • analyze_document

    Re-run AI analysis on an already-uploaded document: extracts the text from the stored file, stores it (get_document_text reads it back), replaces its search sections (search_knowledge finds them, source = document_id + sheet/rows) and writes/refreshes the AI-summary section of d…

  • list_integration_catalog

    List supported tenant integrations and the credentials/capabilities available for each. This catalog never returns saved credential values.

  • set_integration_credentials

    Store credentials for a third-party service in the tenant's vault. Secret fields (password, api_token, token, access_token, api_key, client_secret, secret, …) go into Supabase Vault and are addressed by id — they are NEVER written to a plain column and NEVER returned by any tool…

  • transcribe_audio

    Turn an audio recording into text via Whisper. Give it EITHER 'url' (fetched server-side — a pre-signed link works, no auth is sent) OR 'base64'. Use it for voicemail from the phone system, call recordings and voice notes: those arrive as sound, and guessing what was said is not…

  • update_document

    Update a document (partial). Stamps updated_at. Also files a document against a record after the fact: pass entity + entity_id together (both, never one) to attach a previously unfiled upload once you know where it belongs, or both as null to detach it again. The target record i…

  • delete_document

    Delete a document by id (also removes its uploaded file from storage, if any).

  • research_lead

    Research a lead (person/company) online via web search and save findings as ai_memory_items. Optional focus to steer the research.

  • draft_message

    Draft an email or letter for a lead from its memory + recent activity. Returns {subject, body, attachments: []}; does not send, attaches nothing. channel must be 'email' or 'letter'. To ask for approval, pass it as delegate_to_user questions[].email {to, subject, body, attachmen…

  • merge_records

    Merge duplicate records. Keeps keep_id, folds each drop_ids record's relations (calls/emails/campaigns/meetings/memory/channels/…) into it, then DELETES the duplicates. Fields: primary wins, its empty fields are filled from the duplicate, and field_overrides forces final values…

  • list_merge_log

    List past merges (audit trail) for this tenant — who merged what into what, when, with a full snapshot of the deleted record (for manual recovery). Optional keep_id to see merges into one specific record.

  • get_ingest_instructions

    Returns everything a local messaging orchestrator (e.g. a Beeper MCP client) needs to sync conversations into this CRM: the current sync watermark, the tracking blacklist, the mapping/memory rules, tenant/owner context, and available_agents — the tenant's active specialized agen…

  • update_sync_state

    Advance the messaging ingest watermark after a sync run. Pass last_sync as an ISO timestamp; the next get_ingest_instructions returns it.

  • set_ingest_instructions

    Update this tenant's messaging-ingest instructions. `custom_instructions` = freeform natural-language guidance (e.g. per-network campaign routing). `overrides` = partial object shallow-merged over the default rules. `default_campaign_id` = campaign new Beeper leads are added to.…

  • find_lead_by_channel

    Match a messaging conversation back to a lead/contact. Provide external_chat_id (Beeper chatID, primary key) and/or handle (+optional channel). A phone number as handle is also matched like find_by_phone (incl. contact mobiles) - only a UNIQUE lead or contact is returned. Return…

  • find_by_phone

    Wer gehoert zu dieser Rufnummer? Der Alltagsfall ist nicht 'durchsuche Leads', sondern 'es hat jemand angerufen, wer war das'. Sucht ueber leads.phone/best_phone/fax, contacts, accounts und die Anrufhistorie — FORMAT-UNABHAENGIG: verglichen werden die letzten neun Ziffern, wesha…

  • link_channel

    Upsert a messaging-channel identity onto a lead/contact/account so future conversations match and provenance is recorded. Required: channel, external_chat_id, lead_id. Pass contact_id + account_id too when known.

  • list_blacklist

    List tracking-blacklist entries (persons/chats excluded from ingest) for the tenant.

  • blacklist_add

    Exclude a person/chat from messaging ingest. Provide external_chat_id (most precise) and/or handle (+optional channel), plus optional reason. Match precedence on ingest: external_chat_id → handle(+channel).

  • blacklist_remove

    Remove a tracking-blacklist entry by id.

  • create_lead

    Create a lead. Checks for an existing person FIRST (name, email, phone, social_url) and REFUSES with the candidates if one is found — pass on_duplicate="force" only once you have looked and they really are someone else. A social_url passed here is stored on the lead so the next…

  • update_lead

    Update a lead (partial — only provided fields change; empty values are NOT cleared). To blank a column, list it in clear_fields.

  • add_lead_social_url

    Add or update a lead's social/profile link for a platform — upserts by platform, so re-adding the same platform (e.g. 'linkedin') overwrites its url/label instead of duplicating; this is also how you EDIT an existing entry. Stored in leads.social_urls, a jsonb array of {platform…

  • remove_lead_social_url

    Remove a lead's social/profile link for a given platform (leads.social_urls). Required: lead_id, platform. Returns the full updated social_urls array.

  • create_contact

    Create a contact. 'first_name' and 'last_name' required. Optional: email, phone, position, department, salutation, academic_title, account_id (main organisation), notes, gender (m|w|d|x = no answer), birth_date (YYYY-MM-DD) or birth_year. More organisations: set_contact_accounts…

  • update_contact

    Update a contact (partial; empty values are NOT cleared). To blank a column, list it in clear_fields.

  • create_account

    Create an account (company). 'name' required. Optional: industry, website, phone, email, address, city, postal_code, country, notes.

  • update_account

    Update an account (partial; empty values are NOT cleared). To blank a column, list it in clear_fields.

  • create_campaign

    Create a campaign for the caller's tenant (tenant_id, owner_id and created_by are set from the authenticated user). 'name' required. Optional: description, status (draft|active|paused|completed — default 'active'), start_date/end_date (YYYY-MM-DD), daily_call_target (int, defaul…

  • update_campaign

    Update a campaign (partial; empty values are NOT cleared — list a column in clear_fields to blank it). status: draft|active|paused|completed.

  • delete_campaign

    Delete a campaign. IRREVERSIBLE — cascades to its pipeline stages, target/lead memberships, documents, scripts and other campaign-scoped rows (leads/contacts/accounts themselves are NOT deleted). Refuses if the campaign still has target members unless force=true. Reassign the in…

  • log_call

    Log a call record. Optional: outcome, notes, call_status_code, success (1/0), duration_sec, to_number, next_call_at (ISO). For an INCOMING call pass direction:'inbound' and from_number — and lead_id only if you know who it was. An unidentified incoming call is worth recording WI…

  • schedule_callback

    Schedule a follow-up for a lead: sets next_action_at (and optional next_action text) on the lead, and optionally no_call_until.

  • add_lead_to_campaign

    Add a lead to a campaign (creates a campaign_targets row). No-op if already present.

  • create_meeting

    Create a meeting. Required: title, start_at (ISO), end_at (ISO). Optional: lead_id, contact_id, campaign_id, status (pending|confirmed|cancelled), notes (INTERN — wird dem Gast NIE gezeigt), invitation_text (was der eingeladene Gast in der Einladung liest; leer = neutraler Text…

  • update_meeting

    Update a meeting (partial) — reschedule (start_at/end_at) or cancel (status='cancelled'). Get the meeting_id from find_calendar_event; an id belonging to a calendar event is not accepted here, use update_calendar_event for those. Times without a UTC offset are read as wall-clock…

  • add_meeting_video_link

    Attach (or refresh, e.g. after rescheduling) a Google Meet or Microsoft Teams video link on an existing meeting, via the tenant's connected integration (Integrations page). Required: meeting_id, provider ('google_meet'|'teams'). Re-calling with the same provider updates the SAME…

  • create_presentation

    Create a presentation (a talk/deck) tied to a campaign or event. Slides live once; each variant (language, partner logo) picks order and speaker notes. Required: title. Optional: campaign_id, event_name, event_date (ISO), location, target_duration_sec, template (corporate-design…

  • get_presentation

    Get one presentation with its variants, slides (in base order) and per-variant note counts. Required: presentation_id.

  • list_presentations

    List presentations of the tenant, newest first. Optional: campaign_id, status, limit (default 50).

  • update_presentation

    Update a presentation (partial). Required: presentation_id. Optional: title, campaign_id, event_name, event_date, location, target_duration_sec, template, status.

  • create_presentation_variant

    Add a variant (language + optional partner logo) to a presentation. Required: presentation_id, language (e.g. 'de','en'). Optional: partner_logo, label, slide_order (array of slide ids = talk order; default = slide positions). Returns { variant_id }.

  • list_presentation_variants

    List the variants of a presentation. Required: presentation_id.

  • upsert_slide

    Create or update a slide of a presentation. Slides are shared across all variants. Required: presentation_id. Pass slide_id to update an existing slide, omit to create. Optional: slide_type (title|content|video|solution|questions), position, title, content (structured object; co…

  • reorder_slides

    Set slide order. Required: presentation_id, slide_ids (array in the wanted order). Without variant_id it sets the base order (slides.position). With variant_id it sets only that variant's talk order (which may differ from the slide numbers, e.g. appendix). Returns { ok, count }.

  • set_slide_notes

    Set the per-variant speaker notes for a slide. Required: slide_id, variant_id. Optional: speaker_text, seconds (planned duration), bullets (array of cue points), direction (Regie), demo_points (array), insert_clip, bullets_confirmed. Writing notes clears the slide's stale flag f…

  • get_schedule

    Compute the running order and timing of a presentation variant: each slide's start time and duration in TALK order (variant slide_order if set, else slide positions), the total, and a warning if the total exceeds target_duration_sec. Duration per slide comes from the note's seco…

Details

Endpointhttps://callpilotai.cf-innov-ai-tive.de/api/sb/functions/v1/mcp-server (Streamable HTTP)
First published12 Nov 2026
Last updated12 Nov 2026
Registry nameio.github.toasternet/delegaize

More ai and media servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.