Connect your AI (MCP)
www.m365.fm has an MCP server. With it, Claude, ChatGPT or any MCP-capable assistant can look things up on the platform and – with your personal token – fill in your profile and suggest improvements for you.
How it works
MCP (Model Context Protocol) is an open standard that lets an AI assistant call tools on a website. Our server lives at the address below and offers the functions listed above. Read functions need no login. Write functions need your personal access token, so your AI acts only as you and only with what you are allowed to do.
https://api-dub.m365.fm/mcp
Available functions
| Function | What it does | Access |
|---|---|---|
list_translation_tasks | List entities whose short or long description exists in only one of English/German, with the source text. Translate the text yourself and submit it with propose_entity_edit (description_en/description_de, long_en/long_de). This is community work that costs the platform nothing. Never translate names: session titles, event names, product and feature names, person and company names, abbreviations and exam codes stay exactly as they are. | public |
search_entities | Search the M365.FM entity database (products, platforms, concepts, certifications, organizations, people, events) by name, alias or keyword (English and German descriptions). Best matches first; total tells how many matched. | public |
get_entity | Get one entity with all properties, relations and descriptions. | public |
list_my_speaker_requests | List the signed-in member's sessions as a speaker: pending invitations (status invited) and confirmed sessions, with event handle and session id. | token |
respond_speaker_request | Confirm or decline a speaker invitation for a session (session id from list_my_speaker_requests). Confirming requires a public profile. | token |
update_my_session | Confirmed speakers can update the abstract (no links, max 1500 chars) and the recording URL of their own session. Title, time and other speakers are managed by the organiser team. Never translate the session title. | token |
manage_event_partner | Manage sponsors and media partners of an event. action=propose: the event team (organiser, co-organiser, sponsor manager) proposes a company, or a company admin offers to sponsor; the other side then confirms with accept (or decline). remove deletes a partner. kind: sponsor or media. level is an optional label (e.g. Gold). Confirmed partners appear on the public event page. | token |
list_event_transfers | Admin only. List registrations with consent that still have to be copied to the external event system (target e.g. heysummit:229506 = M365 Con 27). Create each attendee there (name, email), then call mark_event_transfers_done so the email addresses are deleted here. | token |
mark_event_transfers_done | Admin only. Mark transfers as done after the attendees were created in the external system; the stored email addresses are deleted. | token |
list_my_blog_posts | List the signed-in member's own blog posts with status (draft, pending, live, rejected), title, language and upvotes. | token |
save_blog_post | Create or update an own blog post. Body uses wiki markup (## headings, **bold**, *italic*, - lists, [[entity-id|text]] links, sources only as {{ref|Title|https://url|Publisher|Date}}, images as {{img|https://host/pic.jpg|Alt text}} (https, jpg/png/webp/gif/avif, alt text of 5+ characters is required, max 10; plain links are removed). With submit=true the post is published at once for trusted members, otherwise it goes to editorial review; submit needs a public profile and at least 300 characters. Key points and FAQ are SEPARATE fields (keypoints[], faq[{q,a}]), not part of body: they render as a summary box and an FAQ section with FAQPage schema. Co-authors (like guests on a podcast or video): coauthors = profile handles, each must confirm with respond_coauthor_request before appearing on the post. Omit id to create, pass id to update. Always set topics (entity ids from search_entities) instead of free categories: the topics link the post to the entities and appear in the author's profile as expertise (shown by own posts). | token |
delete_blog_post | Delete one of the member's own blog posts. | token |
list_library | List public library entries (prompts, agent instructions, KQL, DAX, PowerShell, flows, Adaptive Cards ...), most upvoted first. Optional filters: kind, topic (entity id), q (text in title/summary). | public |
list_my_library | List the signed-in member's own library entries with version and votes. | token |
list_my_feed_items | List content pulled from the user's own channels (YouTube videos, blog posts ...): id, title, original url, pulled description, thumbnail, has_text (own SEO text present), topics. Each item has its own page on the platform. | token |
save_feed_item_text | Save own SEO text for a pulled item. body uses wiki markup (## headings, **bold**, - lists, [[entity-id|text]] links, sources only as {{ref|Title|https://url|Publisher|Date}}), at least 300 characters, in the creator's own words. Optional summary (max 300 chars) and topics (entity ids from search_entities, max 10). Sending an empty body removes the text. Always set topics (entity ids from search_entities) instead of free categories: the topics link the post to the entities and appear in the author's profile as expertise (shown by own posts). | token |
save_library_item | Create or update a library entry. kind: prompt, instructions, agent, skill, plugin, manifest, copilotstudio, flow, powerapp, kql, dax, excel, graph, powershell, adaptivecard, other. title (min 5 chars), summary (short), body = the actual text or code (20-20000 chars), lang (en, de, ...), topics: up to 10 entity ids (search_entities). Needs a public profile. Pass id to update (the version number rises when the body changes). Always set topics (entity ids from search_entities) instead of free categories: the topics link the post to the entities and appear in the author's profile as expertise (shown by own posts). | token |
list_guest_listings | List public guest-exchange listings: kind=speaker (members available as guest or speaker) or kind=host (podcasts, YouTube channels, events looking for guests). Optional topic = entity id. Contact people through the platform messages. | public |
list_my_guest_matches | List the signed-in member's guest-exchange listings and ranked matches of the opposite kind (shared entity topics, languages, formats). | token |
save_guest_listing | Create or update a guest-exchange listing. kind=speaker: I am available as a guest/speaker (max. 1). kind=host: my show/channel/event looks for guests (max. 5; title = name of the show, optional https link). formats: podcast, youtube, event, webinar, article. langs: en, de, ...; topics: 1-10 entity ids (search_entities); they appear in the profile as expertise. Needs a public profile. Pass id to update, active=false to pause. | token |
list_video_todo | Admin only. List community creator videos that reached the vote threshold (status review): each needs a check by the editor and approval (set public) in YouTube Studio; also lists open pitches with vote counts. | token |
list_video_pitches | List community creator videos for the m365 Show YouTube channel: pitches that can be upvoted (private on YouTube until approved) and published videos, with votes and topics. | public |
vote_video_pitch | Upvote a community creator video pitch by id (call again to remove the vote). Own pitches and accounts younger than 24 hours cannot vote. | token |
list_my_videos | List the signed-in member's own submitted creator videos with status (submitted, review, published, rejected, expired) and votes. Uploading the video file is only possible on the website. | token |
list_podcast_todo | Admin only. List community podcast pitches that reached the vote threshold (status review): for each one a stick-man video has to be made and the Spreaker draft approved by the editor. Also lists open pitches with their vote count. | token |
list_podcast_pitches | List community podcast episodes: pitches that can be upvoted (status submitted or review; at the threshold the editor reviews the Spreaker draft) and published episodes, with votes and topics. | public |
vote_podcast_pitch | Upvote a community podcast pitch by id (call again to remove the vote). Own pitches and accounts younger than 24 hours cannot vote. | token |
list_my_podcast_episodes | List the signed-in member's own submitted podcast episodes with status (submitted, review, published, rejected, expired) and votes. Uploading audio is only possible on the website. | token |
list_my_registrations | List the signed-in member's event registrations with status (going or waitlist) and whether the profile is shown in the public participant list. Change or cancel with register_for_event. | token |
register_for_event | Register the signed-in member for an event (a waiting list is used when the event is full) or cancel the registration. visible=true shows the member's public profile in the public participant list, default is hidden. Requires a public profile only for visible=true. | token |
get_event_team | List the public team of an event with roles (organisator, co-organisator, programm-manager, sponsor-manager, kommunikation, helfer). | public |
set_event_role | Assign or remove an event role for a member with a public profile. Needs the right to manage roles (organiser, co-organiser, owner or an admin of the organising company). Roles: organisator (everything), co-organisator (edit, programme, sponsoring, roles), programm-manager (sessions), sponsor-manager (sponsor requests), kommunikation (event texts and links), helfer (no editing rights, listed in the team). Only organisators can assign or remove organisators. | token |
list_my_events | List the user's own events (owned, or managed via role/organisation) with sessions, plus the organisations the user may create events for. | token |
save_event | Create or update an event. handle (a-z, 0-9, -; 3-40 chars, unique), title, start (YYYY-MM-DD or YYYY-MM-DDTHH:MM), optional end, mode (online | inperson | hybrid), location, country, url (https), tickets_url (https), free (boolean), lang, summary (max 200), about (max 3000), topics (entity ids), seeking_sponsor, org (organisation handle if created for a company). Passing an existing own handle updates it. | token |
save_event_session | Create or update a session of an event the user manages. event_handle, title, abstract (max 1500), start/end (YYYY-MM-DDTHH:MM), room, track, level, lang, topics (entity ids), speakers (array of profile handles or names; matched public profiles get an invitation), recording_url (https), id to update. | token |
delete_event | Delete an event the user owns (irreversible). | token |
list_events | List public community events (title, dates, mode, handle), soonest first. upcoming=true hides events that are already over. | public |
get_event | Get one event with sessions and confirmed speakers. | public |
search_members | Search public member profiles by name or headline. | public |
get_my_profile | Read the signed-in member's own profile. | token |
update_my_profile | Update the signed-in member's profile text fields. Use plain text without links. To fill every language, translate headline and about yourself and pass them as translations (the base text stays as the original). Setting 'handle' (3-30 chars a-z, 0-9, -) creates the profile; 'public' makes it visible in the directory. | token |
add_expertise | Add a topic (entity id) to the member's expertise with level 1=learning, 2=practitioner, 3=expert. Others can endorse it. | token |
add_certification | Add a certification (entity of type cert) to the member's profile with year and optional proof URL (Credly or Microsoft Learn). Verified automatically or by the editorial team; verified certificates allow editing linked topics. | token |
get_help | Return step-by-step guides for what can be created or changed on the platform (profile, expertise, certifications, topics, events) and which tools to call. Call this first when unsure. | public |
get_entity_questions | List the community questions and answers for an entity (with vote counts). | public |
ask_question | Ask a question about an entity (10-200 chars). The best answer later appears in the entity's FAQ box. | token |
answer_question | Answer a question (20-600 chars, own words, no links). | token |
create_entity | Create a new entity when search_entities finds nothing (types: product, platform, concept, cert, category). A short description of 20-300 chars in your own words is required. It is published directly for trusted members, otherwise it goes to the community vote. | token |
propose_entity_edit | Propose a change to an entity's name or short description. It goes to the community vote (or is applied directly for trusted members). A short description in at least one language (20-300 chars) is required; please fill description_en and description_de (translate yourself) so the topic works in both languages. | token |
list_blog_posts | List published community blog posts (title, summary, lang, topics, upvotes). Optional handle = author profile handle. | public |
vote_blog_post | Upvote a blog post by id (call again to remove the vote). Own posts cannot be voted. | token |
follow_blog_author | Follow or unfollow a blog author by profile handle (on=true follow, on=false unfollow). | token |
list_blog_following | List the blog authors the signed-in member follows. | token |
vote_library_item | Upvote a library entry by id (call again to remove the vote). | token |
delete_library_item | Delete one of the member's own library entries. | token |
delete_guest_listing | Delete one of the member's own guest-exchange listings. | token |
delete_podcast_episode | Delete one of the member's own submitted community podcast episodes. | token |
delete_video | Delete one of the member's own submitted creator videos. | token |
list_wishes | List feature wishes for the platform with votes and status (open, planned, done). | public |
save_wish | Submit a wish or improvement idea for the platform (title and body, own words). | token |
vote_wish | Upvote a wish by id (call again to remove the vote). | token |
delete_wish | Delete one of the member's own wishes. | token |
list_questions | Export all community questions and answers (entity Q&A) with votes. | public |
vote_answer | Upvote an answer (kind=a, id=answer id) or a question; call again to remove. | token |
accept_answer | Accept an answer as the best one (asker, owner or editors). id = answer id. | token |
delete_question | Delete an own question (kind=q) or answer (kind=a) by id. | token |
list_message_threads | List the member's message threads on the platform. | token |
start_message | Send a first message to a member (to = profile handle, body = text without links, optional event handle for context). Rate limits apply. | token |
get_my_points | Show the member's points, history and rewards. | token |
redeem_points | Redeem points for a reward (item id from get_my_points). Goes to the editors for approval. | token |
list_my_orgs | List the organisations (companies) the member manages. | token |
search_orgs | Search organisations by name. | public |
list_org_offers | List the offers of an organisation (handle = company handle). | public |
save_org_offer | Create or update an offer of an organisation the member manages (handle = company, kind, name, desc, web, lang). | token |
save_org | Create or update an organisation (company) profile the member manages: handle (a-z, 0-9, -), name, website (https), size, channels, expertise, programs. Short plain texts, no links except website. | token |
propose_wiki_edit | Propose a new or changed wiki/glossary term: term, lang, body (plain text, own words), summary (why). Goes through review like on the website. | token |
suggest_my_speaker_entries | List unlinked speaker entries in event programmes with a similar name to the member's public profile. Confirm one with claim_speaker_entry. | token |
claim_speaker_entry | Confirm that a suggested speaker entry is the member (name exactly as returned by suggest_my_speaker_entries). The sessions are linked to the profile as speaker requests that the member confirms with respond_speaker_request. | token |
suggest_my_entities | List person and company entities with a similar name to the member or the companies the member manages that have no owner yet. Claim one with claim_entity. | token |
check_seo | On-page SEO check of one of the member's own items (kind blog, feed, podcast or video + id): score 0-100 and per check ok/warn/fail for title, meta description, header graphic, images with alt text, text length, structure, search intent, entities (topics + links), sources, FAQ and author box (E-E-A-T). Includes entity suggestions (topics to add, mentions to link as [[id|text]], terms without an entity) and a ready-made ai_prompt. If something is missing, ASK the user whether they want to improve it themselves or whether you should fix it with save_blog_post / save_feed_item_text / update_my_profile (show every text first). | token |
list_my_seo | List all of the member's own items (blog posts, feed texts, podcast episodes, videos) with their SEO score, lowest first, plus the average. Use check_seo for details. | token |
check_seo_text | On-page SEO check for a draft that is not saved yet: kind, title, summary (meta description), body (wiki markup), topics (entity ids), lang. Returns the same report as check_seo. | token |
suggest_entities | Suggest entities for a text: topics to add (ranked by mentions, title and intro), mentions to link with the ready markup [[id|text]], and frequent terms that have no entity yet (create_entity after search_entities). Input: title, body (wiki markup or plain text), optional topics already set. | token |
list_my_coauthor_requests | List invitations to co-author someone else's blog post (post_id, title, author) and the posts the member already co-authors. | token |
get_mail_settings | Show the member's notification e-mail (verified or not) and which notification kinds are on (reply, wish, show, event). Whether the server can send mail at all is in configured. | token |
set_mail_address | Set the notification e-mail address; a confirmation mail is sent and the address only counts after the member clicked the link. Rate limited (4 per hour). | token |
set_mail_pref | Turn one notification kind on or off: reply (answers to my comments), wish (status of my wishes), show (approval of my podcast shows), event (invitations to events and sessions). | token |
remove_mail_address | Delete the notification address and all unsent mails of the member. | token |
send_test_mail | Send a test mail to the verified notification address (3 per hour). | token |
list_my_entity_invites | List the invitations the member sent to the owners of entity pages (eid, name, status sent/claimed/declined, created). Editors and admins see all invitations including addresses. | token |
send_entity_invites | Invite the owner of an entity page by e-mail to claim it. Members: only entities they edited themselves, max 3 per call. Pass items [{eid, name, email}] or the same fields directly. Results per entry: ok or error (not_yours, blocked, claimed, already). | token |
accept_entity_invite | Accept an entity invitation with the token t from the invitation mail. Needs a public profile (error need_profile otherwise). | token |
list_show_reviews | Read the public reviews of a podcast show (show = language code, default en): count, sum, distribution of 1-5 stars and the review items with helpful votes. When logged in, own review and own votes are included. | public |
write_show_review | Write or update the member's review of a show: rating 1-5, optional title (80 chars) and text (10-2000 chars, no links). One review per show and member, limited to 10 per day; hidden reviews cannot be rewritten. | token |
mark_review_helpful | Toggle the 'helpful' vote on a published review (id from list_show_reviews). Own reviews cannot be voted. | token |
delete_show_review | Delete the member's own review (id from list_show_reviews). Editors and admins hide a review instead, which also blocks the author from rewriting it. | token |
find_experts | Find public member profiles with expertise in an entity (e = entity id from search_entities), including experts on related entities up to 2 hops away in the entity graph. Each hit has handle, name, headline, score, level, verified and via (the entity the expertise is on and how many steps away it is). Use hops=0 for direct experts only. | token |
respond_coauthor_request | Accept or decline an invitation to co-author a blog post (id = post_id from list_my_coauthor_requests). Accepting needs a public profile; the post then shows the member as co-author and the topics count towards the member's expertise. | token |
list_shows | List live podcast shows that members moved to the platform (title, description, language, owner handle) with their 20 newest episodes (eps_total = all). | public |
list_my_shows | List the member's own shows with status (pending, live, rejected), number of episodes, transcripts and the last sync error. | token |
move_podcast_show | Start moving a podcast to the platform: feed = RSS URL (https), lang = show language (one of the platform languages), agree=true ONLY if the user explicitly consents that the show is distributed through the network and that ads/sponsoring may appear on the show pages. All episodes (text, audio, duration, transcript) are imported and synced daily; the show appears after editor approval. Needs a public profile. | token |
sync_show | Re-import the RSS feed of one of the member's own shows now (id from list_my_shows). | token |
delete_show | Delete one of the member's own shows and its imported episodes (irreversible). | token |
set_item_guests | Set the guests of one of the member's own community podcast episodes or videos (kind podcast|video, id, guests = up to 5 profile handles). Replaces the list; each guest gets an invitation and confirms with respond_guest_credit before appearing on the page and in the schema. Guests with a public profile only. | token |
list_my_guest_credits | List invitations to appear as a guest on someone's podcast episode or video (kind, id, title, host) and the appearances the member already confirmed. | token |
respond_guest_credit | Accept or decline an invitation as guest (kind podcast|video, id from list_my_guest_credits). Accepting needs a public profile; the page then names the member as guest and the topics count towards the member's expertise. | token |
list_show_notes | Editors/admins only. List the episodes of a Spreaker show (lang = show language, default en) with title, date, word count, number of key points and FAQ entries and whether the show notes were edited here. q filters by title. The show notes are pulled from Spreaker daily. | token |
get_show_notes | Editors/admins only. Read the show notes of one episode (lang, id from list_show_notes): body in wiki markup (## headings, lists, **bold**, {{link|https://url|text}}), keypoints[], faq[{q,a}], persons (guests from the feed) and whether an edited version exists. `spreaker` holds the original. | token |
save_show_notes | Editors/admins only. Save edited show notes for one episode: body (wiki markup, up to 12000 characters, no minimum; links as {{link|https://url|text}}, images as {{img|https://url|alt}}), keypoints (up to 8 strings of 10-200 characters) and faq (up to 10 {q,a}: q 10-200, a 20-600 characters) as SEPARATE fields. Replaces the stored edit; Spreaker itself is not changed. Show the user every text before saving. reset_show_notes restores the Spreaker text. | token |
reset_show_notes | Editors/admins only. Delete the edited show notes of one episode so the Spreaker text is used again. | token |
list_event_sponsors | List organisations that sponsor events. | public |
list_events_for_sponsors | List events that look for sponsors, for an organisation the member manages (org = company handle). | token |
ask_event_sponsor | Offer sponsorship of an event for a company the member manages (event, org, optional body without links). | token |
list_my_event_partners | List pending and confirmed sponsor/media-partner requests for the member's events and companies. | token |
endorse_expertise | Endorse a member's expertise topic (handle = profile handle, e = entity id). | token |
endorse_certification | Endorse a member's certification (handle = profile handle, e = entity id). | token |
recommend_member | Write a recommendation for a member (handle, relation e.g. colleague, body in own words without links). | token |
list_my_recommendations | List recommendations received by the member (to approve or hide on the profile). | token |
list_pending_edits | List open community edit proposals (entities, wiki) that can be voted on. Optional kind, key, lang. | token |
vote_edit | Vote on a pending edit proposal (id, kind as returned by list_pending_edits, v = 1 approve or -1 reject). | token |
list_my_edit_inbox | List edit proposals that concern the member's own topics. | token |
claim_entity | Claim ownership of an entity (eid = entity id). Editors review the claim. | token |
list_my_entity_claims | List the member's entity ownership claims and their status. | token |
get_wiki_term | Read a wiki/glossary term (term, lang). | public |
list_wiki_terms | List all wiki/glossary terms of a language. | public |
list_platform_updates | List platform news and updates. | public |
list_feed_items | List pulled content (videos, posts) of all members, optional sort. | public |
New functions appear in this table automatically as soon as they are added to the server – the page is generated from the server code.
What do you want to create?
Tell your AI the goal – it follows these guides (it can also call get_help itself):
- Fill in or improve your profile: read it with get_my_profile, show the user a draft (headline max 100 chars, bio max 1500 chars, no links), then save with update_my_profile. A public profile needs a handle (a-z, 0-9, -). (
get_my_profile,update_my_profile) - Make your profile available in every language: read it with get_my_profile, translate the headline and bio into the languages you want (at least en and de), show the user the translations and then call update_my_profile with translations {lang: {headline, about}}. The original text stays the base; pages show the matching language and fall back to the original. (
get_my_profile,update_my_profile) - Help translate: call list_translation_tasks to see entities that miss an English or German text, translate them yourself (never translate names: session titles, event, product, person and company names, abbreviations, codes stay as they are) and submit with propose_entity_edit (description_en/description_de, long_en/long_de). For your own profile use update_my_profile with translations. Missing translations are filled by the community first; the platform only runs a batch translation for what is left. (
list_translation_tasks,propose_entity_edit) - Add expertise: find topics with search_entities, then add_expertise with level 1 (learning), 2 (practitioner) or 3 (expert). Other members can confirm them; topics of sessions you speak at (confirmed) and of your verified certifications are added automatically as confirmed expertise. (
search_entities,add_expertise) - Add a certification: find it with search_entities (type cert), then add_certification with the year and a proof URL (Credly badge or Microsoft Learn credential). It is verified automatically or by the editors; verified certificates allow editing linked topics. (
search_entities,add_certification) - Create a missing topic: search first with search_entities; if nothing fits, call create_entity (name, type product/platform/concept/cert/category, short description 20-300 chars in your own words, optional relations). Always provide the short description in both English and German (translate it yourself). Then use the new id for expertise or certifications. Check the result: published directly for trusted members, otherwise it goes to the vote. (
search_entities,create_entity) - Improve a topic: get_entity to read it, then propose_entity_edit with a better name, short description (20-300 characters, own words, no links), aliases, official web/docs/Wikipedia link or additional relations (add_relations); also logo, version, released, license (products) and level, exam, valid_months (certifications). It goes to the community vote unless you are trusted. (
get_entity,propose_entity_edit) - Ask or answer questions about a topic: list existing ones with get_entity_questions, ask a new one with ask_question (10-200 chars) or answer with answer_question (20-600 chars, own words, no links). The best answer (accepted by the owner/editors or with enough member votes) appears in the topic's FAQ box. (
get_entity_questions,ask_question,answer_question) - Create and manage events: list_my_events, save_event (handle, title, start ...), save_event_session (event_handle, title, abstract, speakers ...), delete_event. Look up events and their programme: list_events, then get_event with the handle (sessions and confirmed speakers). As speaker: suggest_my_speaker_entries and claim_speaker_entry link program entries with your name to your profile; list_my_speaker_requests, respond_speaker_request, update_my_session (abstract/recording of your own session). Sponsors/media partners: manage_event_partner (one side proposes, the other confirms). Register: register_for_event (you decide whether your profile shows in the participant list). Team: get_event_team; assign roles with set_event_role (organisator, co-organisator, programm-manager, sponsor-manager, kommunikation, helfer). (
suggest_my_speaker_entries,claim_speaker_entry,list_my_events,save_event,save_event_session,delete_event,list_events,get_event,get_event_team,set_event_role,register_for_event,list_my_registrations,list_my_speaker_requests,respond_speaker_request,update_my_session,manage_event_partner) - Write a blog post (topics are entities, not categories; they show up in your profile): save_blog_post with title, body (wiki markup, sources as {{ref|Title|https://url|Publisher|Date}}, images as {{img|https://host/pic.jpg|Alt text}} – the SEO check wants at least 3 images with alt text), lang and topics (up to 10 entity ids from search_entities). Use submit=false for a draft; submit=true publishes (trusted members) or sends it to review (needs a public profile). Co-authoring (the blog counterpart of guests): coauthors = up to 3 profile handles; they accept with respond_coauthor_request (list_my_coauthor_requests shows invitations). list_my_blog_posts shows status; delete_blog_post removes one. (
save_blog_post,list_my_blog_posts,delete_blog_post,list_my_coauthor_requests,respond_coauthor_request,search_entities) - Community podcast: list_podcast_pitches shows pitches and published episodes; vote_podcast_pitch upvotes one (25 votes send it to the editor, who reviews and publishes the Spreaker draft). list_my_podcast_episodes shows your own episodes. Uploading the audio file works on the website only. (
list_podcast_pitches,vote_podcast_pitch,list_my_podcast_episodes) - SEO text for pulled content: list_my_feed_items shows videos/posts pulled from your channels (title, pulled description, link). Each gets its own page on the platform; write your own text with save_feed_item_text (id, body in wiki markup, optional summary, topics). Template for body (min. 300 characters): '## What it is about' (2-3 sentences, answer first), '## Key points' (3-6 bullet points, concrete facts), '## Context' (link products with [[entity-id|name]], use search_entities), '## Sources' (only {{ref|Title|https://url|Publisher|Date}}). Write in your own words, no copied transcript, no plain links. Items with your text become indexable by Google. (
list_my_feed_items,save_feed_item_text,search_entities) - Library (topics are entities, not categories; they show up in your profile): shared prompts, agent instructions, KQL, DAX, PowerShell, flows, Adaptive Cards and more. list_library browses (filter by kind or topic), save_library_item creates or updates your entry (kind, title, body = the actual text or code, topics = up to 10 entity ids from search_entities), list_my_library shows your entries. Entries are visible at once; Google indexes them from 10 upvotes. (
list_library,save_library_item,list_my_library,search_entities) - Guest exchange: hosts (podcasts, YouTube, events) and speakers find each other through shared topics. list_guest_listings browses; save_guest_listing creates your listing (kind speaker = I am available as a guest, kind host = my show looks for guests; topics = up to 10 entity ids from search_entities); list_my_guest_matches shows ranked matches. Contact via the platform messages. (
list_guest_listings,save_guest_listing,list_my_guest_matches,search_entities) - Creator videos for the m365 Show YouTube channel: list_video_pitches shows pitches (private on YouTube) and published videos; vote_video_pitch upvotes one (25 votes send it to the editor, who checks it and sets it public in YouTube Studio). list_my_videos shows your own submissions. Uploading the file works on the website only. (
list_video_pitches,vote_video_pitch,list_my_videos) - Take part in the community: vote on and follow content (vote_blog_post, follow_blog_author, list_blog_following, vote_library_item, vote_answer, accept_answer, vote_edit with list_pending_edits and list_my_edit_inbox), endorse others (endorse_expertise, endorse_certification), write a recommendation (recommend_member; list_my_recommendations for received ones), claim a topic you own (suggest_my_entities, claim_entity, list_my_entity_claims). Delete your own content with delete_library_item, delete_guest_listing, delete_podcast_episode, delete_video, delete_question. Wiki: propose_wiki_edit. Read-only: list_blog_posts, list_questions, list_feed_items, list_platform_updates, list_wiki_terms, get_wiki_term. (
vote_blog_post,follow_blog_author,list_blog_following,vote_library_item,vote_answer,accept_answer,list_pending_edits,vote_edit,list_my_edit_inbox,endorse_expertise,endorse_certification,recommend_member,list_my_recommendations,claim_entity,list_my_entity_claims,suggest_my_entities,delete_library_item,delete_guest_listing,delete_podcast_episode,delete_video,delete_question,list_blog_posts,list_questions,list_feed_items,list_platform_updates,list_wiki_terms,get_wiki_term,propose_wiki_edit) - Wishlist for the platform: list_wishes shows ideas with votes; save_wish submits your own (title, body); vote_wish upvotes; delete_wish removes your own. (
list_wishes,save_wish,vote_wish,delete_wish) - Mail notifications: get_mail_settings shows address and which kinds are on; set_mail_address sends a confirmation mail (click the link to verify); set_mail_pref turns reply/wish/show/event on or off; send_test_mail checks delivery; remove_mail_address deletes everything. Inviting entity owners: send_entity_invites mails the owner of an entity page an invitation to claim it (members: only entities they edited, max 3 per call), list_my_entity_invites shows the status, accept_entity_invite takes a token from an invitation mail (needs a public profile). (
get_mail_settings,set_mail_address,set_mail_pref,send_test_mail,remove_mail_address,send_entity_invites,list_my_entity_invites,accept_entity_invite) - Show reviews: list_show_reviews reads the stars, distribution and texts of a show (public); write_show_review adds or updates the member's own review (1-5 stars, text without links, one per show); mark_review_helpful toggles a helpful vote; delete_show_review removes the own review. (
list_show_reviews,write_show_review,mark_review_helpful,delete_show_review) - Messages and points: list_message_threads reads your conversations, start_message writes to a member (no links, rate limits apply); get_my_points shows points and rewards, redeem_points redeems one. (
list_message_threads,start_message,get_my_points,redeem_points) - Companies and sponsoring: save_org creates or updates a company, search_orgs finds companies, list_my_orgs shows the ones you manage, list_org_offers / save_org_offer read and maintain their offers. Sponsoring: list_event_sponsors, list_events_for_sponsors (events that seek sponsors), ask_event_sponsor (offer sponsorship), list_my_event_partners (requests and confirmed partners; confirm with manage_event_partner). (
save_org,search_orgs,list_my_orgs,list_org_offers,save_org_offer,list_event_sponsors,list_events_for_sponsors,ask_event_sponsor,list_my_event_partners,manage_event_partner) - On-page SEO for blog posts, videos and podcasts: list_my_seo shows the score of all your items (lowest first); check_seo (kind blog|feed|podcast|video + id) lists what passes and what is missing (title, meta description, header graphic, at least 3 images with alt text, text length, structure, search intent, entities, sources, FAQ, author box) and suggests entities; check_seo_text checks a draft before saving; suggest_entities proposes topics, [[id|text]] links and missing entities. When something is missing ASK the user whether they want to improve it themselves or let you fix it, then save with save_blog_post / save_feed_item_text (topics = entity ids) and re-run check_seo. Missing author data: update_my_profile, add_expertise, add_certification. (
list_my_seo,check_seo,check_seo_text,suggest_entities,save_blog_post,save_feed_item_text,update_my_profile) - Move a podcast: list_my_shows shows your shows; move_podcast_show (feed = RSS URL, lang, agree) imports all episodes with text, audio, duration and transcript and syncs them daily; the show goes live after editor approval. sync_show refreshes now, delete_show removes a show. list_shows browses live shows. Ask the user explicitly before setting agree=true (distribution through the network, ads/sponsoring on the show pages). (
list_shows,list_my_shows,move_podcast_show,sync_show,delete_show) - Guests on your own podcast episode or video (the counterpart of co-authors in the blog): set_item_guests (kind podcast|video, id, guests = up to 5 profile handles); every guest confirms with respond_guest_credit (list_my_guest_credits shows invitations and confirmed appearances). Confirmed guests appear on the page and in the schema and their topics count towards their expertise. To find guests use the guest exchange (list_guest_listings). (
set_item_guests,list_my_guest_credits,respond_guest_credit,list_guest_listings) - Show notes of the Spreaker episodes (editors/admins): they are pulled from Spreaker daily (text, key points, FAQ, guests). list_show_notes (lang, q) lists episodes, get_show_notes (lang, id) reads the text, save_show_notes (lang, id, body, keypoints, faq) saves an edited version - body up to 12000 characters with no minimum, key points and FAQ as separate fields; reset_show_notes restores the Spreaker text. Always show the user the text first. The pages use the edited version and show key points and FAQ as separate boxes (FAQPage schema). (
list_show_notes,get_show_notes,save_show_notes,reset_show_notes) - Find people: search_members by name or headline. Find experts on a topic: find_experts with an entity id from search_entities; it also returns experts on related entities (up to 2 steps in the entity graph) and says via which entity each one qualifies. (
search_members,find_experts)
Connect in 3 steps
- Create a token
Sign in on the community page and open the tab Account → “AI access (MCP)”. Create a token and copy it – it is shown only once. Treat it like a password and revoke it there at any time. - Add the server to your assistant
Use this address as the MCP server URL:https://api-dub.m365.fm/mcpClaude Code (command line):
claude mcp add --transport http m365-dub https://api-dub.m365.fm/mcp --header "Authorization: Bearer <TOKEN>"
Other MCP clients (JSON configuration):
{ "mcpServers": { "m365-dub": { "type": "http", "url": "https://api-dub.m365.fm/mcp", "headers": { "Authorization": "Bearer <TOKEN>" } } } }Read-only without token: in Claude or ChatGPT you can add the address as a custom connector without sign-in – you then get the public search and read functions. Signing in with your member account directly in Claude.ai and ChatGPT (OAuth) is planned.
- Tell your AI what to do
Examples you can paste:- Look up my profile on www.m365.fm and suggest a better headline and bio for a Microsoft 365 consultant. Show me the text first, then save it.
- Here is my CV: … Fill in my profile on www.m365.fm with a short bio and add my expertise topics with the right levels.
- Find entities on Copilot governance and propose a clearer short description for the ones that are too vague.
- Which events on www.m365.fm deal with Power Platform and when do they start?
Safety and control
- Everything your AI writes follows the same rules as on the website: short descriptions are mandatory, entity changes go to the community vote, rate limits apply.
- Ask your AI to show you every text before it saves it. You can always correct things in your profile.
- Texts from profiles and pages are user-generated. A good assistant treats them as data, not as instructions.
- Revoke a token under Account → AI access. Deleting your account removes all tokens.
Which assistants work?
Claude Code, Claude Desktop (custom MCP), Cursor, VS Code and other clients that support remote MCP servers with an Authorization header work with write access today. For read-only use, any client with custom connectors works (Claude.ai, ChatGPT in developer mode).
Download as a skill
Download this guide as a ready-made skill file (SKILL.md). Add it to Claude (Skills) or paste it into the instructions of your assistant, so it always knows how to create things here – it updates with every new function.
Microsoft Copilot
Copilot Studio and Microsoft 365 Copilot agents can use remote MCP servers: add a new MCP tool/connection in your agent, enter the server URL and, for write access, the header Authorization: Bearer <token>. Public read functions work without a header.
ChatGPT
In ChatGPT (developer mode → connectors) add a custom MCP server with the URL above. Without sign-in you get the public read functions; write access via OAuth is planned.