M365Con 2027 – free online conference · 11–22 Jan 2027 · 120 sessions→ m365con.net

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.

Create a token

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

FunctionWhat it doesAccess
list_translation_tasksList 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_entitiesSearch 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_entityGet one entity with all properties, relations and descriptions.public
list_my_speaker_requestsList 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_requestConfirm or decline a speaker invitation for a session (session id from list_my_speaker_requests). Confirming requires a public profile.token
update_my_sessionConfirmed 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_partnerManage 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_transfersAdmin 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_doneAdmin only. Mark transfers as done after the attendees were created in the external system; the stored email addresses are deleted.token
list_my_blog_postsList the signed-in member's own blog posts with status (draft, pending, live, rejected), title, language and upvotes.token
save_blog_postCreate 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_postDelete one of the member's own blog posts.token
list_libraryList 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_libraryList the signed-in member's own library entries with version and votes.token
list_my_feed_itemsList 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_textSave 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_itemCreate 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_listingsList 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_matchesList the signed-in member's guest-exchange listings and ranked matches of the opposite kind (shared entity topics, languages, formats).token
save_guest_listingCreate 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_todoAdmin 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_pitchesList 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_pitchUpvote 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_videosList 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_todoAdmin 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_pitchesList 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_pitchUpvote 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_episodesList 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_registrationsList 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_eventRegister 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_teamList the public team of an event with roles (organisator, co-organisator, programm-manager, sponsor-manager, kommunikation, helfer).public
set_event_roleAssign 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_eventsList the user's own events (owned, or managed via role/organisation) with sessions, plus the organisations the user may create events for.token
save_eventCreate 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_sessionCreate 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_eventDelete an event the user owns (irreversible).token
list_eventsList public community events (title, dates, mode, handle), soonest first. upcoming=true hides events that are already over.public
get_eventGet one event with sessions and confirmed speakers.public
search_membersSearch public member profiles by name or headline.public
get_my_profileRead the signed-in member's own profile.token
update_my_profileUpdate 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_expertiseAdd a topic (entity id) to the member's expertise with level 1=learning, 2=practitioner, 3=expert. Others can endorse it.token
add_certificationAdd 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_helpReturn 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_questionsList the community questions and answers for an entity (with vote counts).public
ask_questionAsk a question about an entity (10-200 chars). The best answer later appears in the entity's FAQ box.token
answer_questionAnswer a question (20-600 chars, own words, no links).token
create_entityCreate 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_editPropose 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_postsList published community blog posts (title, summary, lang, topics, upvotes). Optional handle = author profile handle.public
vote_blog_postUpvote a blog post by id (call again to remove the vote). Own posts cannot be voted.token
follow_blog_authorFollow or unfollow a blog author by profile handle (on=true follow, on=false unfollow).token
list_blog_followingList the blog authors the signed-in member follows.token
vote_library_itemUpvote a library entry by id (call again to remove the vote).token
delete_library_itemDelete one of the member's own library entries.token
delete_guest_listingDelete one of the member's own guest-exchange listings.token
delete_podcast_episodeDelete one of the member's own submitted community podcast episodes.token
delete_videoDelete one of the member's own submitted creator videos.token
list_wishesList feature wishes for the platform with votes and status (open, planned, done).public
save_wishSubmit a wish or improvement idea for the platform (title and body, own words).token
vote_wishUpvote a wish by id (call again to remove the vote).token
delete_wishDelete one of the member's own wishes.token
list_questionsExport all community questions and answers (entity Q&A) with votes.public
vote_answerUpvote an answer (kind=a, id=answer id) or a question; call again to remove.token
accept_answerAccept an answer as the best one (asker, owner or editors). id = answer id.token
delete_questionDelete an own question (kind=q) or answer (kind=a) by id.token
list_message_threadsList the member's message threads on the platform.token
start_messageSend a first message to a member (to = profile handle, body = text without links, optional event handle for context). Rate limits apply.token
get_my_pointsShow the member's points, history and rewards.token
redeem_pointsRedeem points for a reward (item id from get_my_points). Goes to the editors for approval.token
list_my_orgsList the organisations (companies) the member manages.token
search_orgsSearch organisations by name.public
list_org_offersList the offers of an organisation (handle = company handle).public
save_org_offerCreate or update an offer of an organisation the member manages (handle = company, kind, name, desc, web, lang).token
save_orgCreate 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_editPropose 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_entriesList 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_entryConfirm 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_entitiesList 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_seoOn-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_seoList 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_textOn-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_entitiesSuggest 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_requestsList invitations to co-author someone else's blog post (post_id, title, author) and the posts the member already co-authors.token
get_mail_settingsShow 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_addressSet 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_prefTurn 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_addressDelete the notification address and all unsent mails of the member.token
send_test_mailSend a test mail to the verified notification address (3 per hour).token
list_my_entity_invitesList 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_invitesInvite 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_inviteAccept an entity invitation with the token t from the invitation mail. Needs a public profile (error need_profile otherwise).token
list_show_reviewsRead 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_reviewWrite 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_helpfulToggle the 'helpful' vote on a published review (id from list_show_reviews). Own reviews cannot be voted.token
delete_show_reviewDelete 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_expertsFind 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_requestAccept 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_showsList 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_showsList the member's own shows with status (pending, live, rejected), number of episodes, transcripts and the last sync error.token
move_podcast_showStart 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_showRe-import the RSS feed of one of the member's own shows now (id from list_my_shows).token
delete_showDelete one of the member's own shows and its imported episodes (irreversible).token
set_item_guestsSet 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_creditsList 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_creditAccept 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_notesEditors/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_notesEditors/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_notesEditors/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_notesEditors/admins only. Delete the edited show notes of one episode so the Spreaker text is used again.token
list_event_sponsorsList organisations that sponsor events.public
list_events_for_sponsorsList events that look for sponsors, for an organisation the member manages (org = company handle).token
ask_event_sponsorOffer sponsorship of an event for a company the member manages (event, org, optional body without links).token
list_my_event_partnersList pending and confirmed sponsor/media-partner requests for the member's events and companies.token
endorse_expertiseEndorse a member's expertise topic (handle = profile handle, e = entity id).token
endorse_certificationEndorse a member's certification (handle = profile handle, e = entity id).token
recommend_memberWrite a recommendation for a member (handle, relation e.g. colleague, body in own words without links).token
list_my_recommendationsList recommendations received by the member (to approve or hide on the profile).token
list_pending_editsList open community edit proposals (entities, wiki) that can be voted on. Optional kind, key, lang.token
vote_editVote on a pending edit proposal (id, kind as returned by list_pending_edits, v = 1 approve or -1 reject).token
list_my_edit_inboxList edit proposals that concern the member's own topics.token
claim_entityClaim ownership of an entity (eid = entity id). Editors review the claim.token
list_my_entity_claimsList the member's entity ownership claims and their status.token
get_wiki_termRead a wiki/glossary term (term, lang).public
list_wiki_termsList all wiki/glossary terms of a language.public
list_platform_updatesList platform news and updates.public
list_feed_itemsList 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):

Connect in 3 steps

  1. 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.
  2. Add the server to your assistant
    Use this address as the MCP server URL: https://api-dub.m365.fm/mcp

    Claude 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.

  3. 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

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.

Download SKILL.md

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.