agent builder
28 TopicsCopilot Studio + SharePoint: Markdown (.md) Files in Doc Libraries Supported as Knowledge Sources?
Hi all, We’ve been doing some deeper testing with Copilot Studio agents grounded in SharePoint knowledge sources, and I’m hoping to clarify whether what we’re seeing is a known limitation or an undocumented gap. Scenario A Copilot Studio agent uses SharePoint document libraries as a knowledge source The library contains Markdown (.md) files that are intentionally used as canonical design references The same .md files: ✅ Work well when uploaded directly to the agent ❌ Are not retrievable or citable when stored in a SharePoint library and added as a SharePoint knowledge source To help with grounding, we created modern SharePoint index pages that: Explain what the markdown collections are (Patterns, ADRs, Guardrails) Link directly to the canonical folders and files Explicitly state that the .md files are the source of truth The agent can: Discover and summarize the index pages correctly Understand that .md artifacts exist and where they live But it cannot: Read the content of the individual .md files Apply a specific pattern or ADR from those files in a design conversation Cite them as sources, even when permissions and search indexing are confirmed What We’ve Checked Permissions (agent user has access) Folder depth (kept shallow) Search results (markdown files appear in SharePoint search) SharePoint indexing status Work IQ enabled Same content works when attached directly to the agent This behavior also seems consistent with what others have reported here: Markdown works when uploaded directly Markdown retrieval degrades when hosted in SharePoint libraries Questions for the Product Team / Community Are Markdown (.md) files in SharePoint document libraries officially supported as Copilot Studio knowledge sources today? If yes, are there specific constraints (file size, rendering, parsing, indexing) that differ from Word/PDF? If no (or “not yet”), is this a known limitation on the roadmap? Is the recommended pattern to: Convert important markdown files into .aspx pages, or Use thin “index / summary” pages and keep markdown canonical until retrieval improves? We’re happy to adapt our information architecture — just trying to align with the intended platform direction rather than work against it. Thanks in advance for any guidance or clarification. This capability is extremely powerful, and clearer expectations here would help a lot of teams make the right design tradeoffs.2.9KViews14likes6CommentsWhat is the best file format for an AI agent knowledge base?
This is a best practice sharing the best format for an agent and show you why you should convert your PPT, PDF, WORD into a TXT markdown. I had an issue with my agent, time taken to answer was too long, and usually we spend a lot of time asking: What is the best prompt? Why is my agent slow? Why does retrieval sometimes work and sometimes fail? How can I improve answer quality? But I realised I was asking another question much less often: What is actually the best file format for the knowledge base? PDF? Raw text? Markdown? Pre-chunked text? Semantic sections? Context-enriched text? And more importantly: How much does the format alone affect agent performance? I tried to find a quantified benchmark answering this specific question, with the same agent, same source knowledge and same questions, but different knowledge representations. I couldn't find one that really answered what I wanted to measure. So I decided to run the experiment myself on a real case. My first exploratory tests were already surprising: depending on the representation, the agent could be significantly faster and more accurate, despite working from the exact same source information. So I decided to push the test further. My objective I want to identify, without assumptions and based on actual evaluation data, how a long document should be prepared for an LLM knowledge base so that the agent can retrieve, understand, ground and answer from it as reliably as possible. I focused on five dimensions: Answer quality Retrieval reliability Source grounding / citations Execution time Robustness across single-turn and multi-turn questions The broader question I'm trying to answer is: How should we structure knowledge so that an LLM can retrieve and use it as reliably as possible? The test case I deliberately chose a document that isn't particularly friendly for RAG: a 46-page European regulation, https://eur-lex.europa.eu/eli/reg/2011/1169/oj?locale=fr, on the provision of food information to consumers. The information is distributed across articles, definitions, exceptions, annexes, tables, numerical thresholds and cross-references. That makes it useful for testing retrieval: answering correctly often requires finding a very specific piece of information while preserving enough context to understand how it applies. I used the native PDF as the baseline and created 6 additional knowledge-base representations of the same document: Raw TXT Markdown Chunk-ready TXT RAG-oriented units Semantic TXT Contextual TXT One rule: same knowledge, same agent, same instructions, same questions. Only the knowledge representation changes. The benchmark I used two evaluation sets: 42 single-turn questions testing broad coverage of the document: direct facts, thresholds, exceptions, annexes, lists and cross-references. 5 multi-turn conversations containing 13 questions, to see what happens when a user asks a question and then follows up with things like: "And in this case?" "What are the exceptions?" "And for dietary fibre?" This gave me: 47 evaluated test cases / 55 actual questions per format Across all 7 formats: 329 evaluated conversations 385 user questions executed First results Metric Native PDF Best structured representation Overall pass rate 66.0% 85.1% - Contextual TXT Best single-turn score 69.0% 88.1% - Chunk-ready TXT Multi-turn benchmark 40% 80% - Contextual TXT Multi-turn execution time 14m24 5m54 Total benchmark time 44m31 24m49 The quality gap was already substantial: 66.0% → 85.1% That's +19.1 percentage points while keeping the underlying knowledge unchanged. I also saw a major difference in execution time. On the multi-turn test: 14m24 → 5m54 That's approximately 2.4× faster. Across the complete benchmark: 44m31 → 24m49 Around 44% less execution time. These timings represent the complete agent evaluation pipeline, so they shouldn't be interpreted as pure LLM inference latency. But the difference under identical test conditions is large enough that I want to understand it better. Findings There wasn't one format dominating every benchmark. Chunk-ready TXT scored highest on independent questions: 88.1%, while Contextual TXT performed better across multi-turn conversations and finished with the highest overall score. That may suggest that the way we optimise a document for isolated retrieval isn't exactly the same as the way we should prepare it for conversational retrieval. In the contextual version, I tried to make every section understandable when retrieved independently by keeping useful information around it: Source references Section context Retrieval cues Relevant cross-references For regulatory documents, this seems particularly important. A numerical value retrieved alone can be meaningless without knowing which rule it belongs to, under which conditions it applies, and whether another article contains an exception. Where I am now This remains an exploratory benchmark: One document One domain One agent setup One evaluation framework One run per configuration There are plenty of things I still want to test: repeated runs, retrieval-level evaluation, token consumption, larger knowledge bases, other document types, chunk sizes, overlap, contextual headers, and more. But these first results already convinced me that the preparation of the knowledge base deserves much more attention when evaluating an agent. We often spend hours refining instructions while the same information may behave very differently depending on how it reaches the retrieval layer. Next step I'll share the prompts, knowledge-base formats and evaluation methodology on GitHub so the experiment can be reproduced and challenged. I'll keep enriching the repository as I test new formats, improve the evaluation set and add new results. If people here have ideas, edge cases or formats worth testing, I'd genuinely like to include some of them in the next iteration. What would you test next?361Views2likes3CommentsHow to Integrate Copilot Studio Agent with a Website Using API?
Hello Team, I have created a Copilot Agent using Copilot Studio and published it on our public website using an iframe. Currently, the agent does not have any authentication configured because we want it to be publicly accessible. However, our website development team has raised a security concern with this approach, as embedding the Copilot Agent directly using an iframe may not be the most secure or recommended approach. We are looking for an alternative integration approach. For example: Is it possible to expose the Copilot Studio Agent through an API or another secure endpoint? Can our website development team call the agent through an API, receive the response, and build their own custom UI instead of embedding the agent using an iframe? Is there any recommended architecture or Microsoft-supported approach for securely integrating a Copilot Studio Agent with a public-facing website? If anyone has implemented a similar solution or has any recommendations, I would appreciate your suggestions.43Views0likes1CommentHow to preserve document format and structure with Copilot Agent
Hi everyone, I was building a copilot agent that should be able to accept a document and then make changes to it before returning the new version of that document, which has the same format and structure as the original. What is the best way to accomplish this in copilot studio? So far, I have tried using a power automate flow and external tools but it seems that there is no free included tool that can achieve this task. All the document writing tools seem to be paid services requiring API keys. Is there an alternate free way of achieving this task? Thank you113Views0likes1CommentCopilot Studio Agent Shows Usage Limit Error Despite Low Credit Usage
a { text-decoration: none; color: #464feb; } tr th, tr td { border: 1px solid #e6e6e6; } tr th { background-color: #f5f5f5; } Hi everyone, We are experiencing an issue with a Copilot Studio agent and would appreciate any guidance from the community. Scenario: The agent works correctly in the Copilot Studio test environment and responds as expected. However, after integrating the same agent into our web application, users receive the following error: "This agent is currently unavailable. It has reached its usage limit. Please try again later." Additional Information: In Copilot Studio Usage Monitoring, we can only see approximately 4 credits consumed. Based on the reported consumption, we would not expect a usage limit to have been reached. The issue occurs only when accessing the agent through the web application. The Copilot Studio test interface continues to work normally. Questions: Has anyone experienced a similar issue? Could this be related to licensing, capacity allocation, authentication, or channel configuration? Is there any difference in credit consumption or capacity enforcement between the Copilot Studio test environment and embedded web channels? Are there additional monitoring locations where we can verify the actual credit usage and capacity status? Any insights or recommendations would be greatly appreciated.83Views0likes1CommentCopilot Studio Agent Unable to Retrieve Usable DOCX/XLSX Content from OneDrive (and SharePoint)
Hi everyone, I'm building a Copilot Studio agent that needs to read and process Word (.docx) and Excel (.xlsx) files stored in OneDrive. The agent can successfully locate files and retrieve metadata, but it appears unable to retrieve Office files as usable binary content. I tested the behaviour using the OneDrive Get file content action: A text file (test.txt) was returned correctly and matched the original file contents exactly. A Word file (Test.docx) was returned beginning with the ZIP signature PK and contained recognisable DOCX entries such as [Content_Types].xml and _rels/.rels. However, the returned payload also contained large numbers of Unicode replacement characters (�). The returned content appears to be a text string rather than binary data or base64 content. Because Office files are ZIP-based binary formats, the returned payload cannot be reconstructed into a valid .docx or .xlsx file, preventing downstream libraries such as python-docx and openpyxl from opening the file. Is there any way to resolve this issue?193Views0likes4CommentsMinimum Environment Permissions (Security Roles) for Copilot Studio Agent in Teams?
Hi Copilot Studio Community! I’m facing a strange permissions (Security Roles) challenge when sharing an Agent with users on Teams, and I’m looking for the best practice to determine the minimum required privileges. The Scenario: I built an Agent grounded in a SharePoint Knowledge Base. The end-users currently have: - Read access to the SharePoint Document Libraries. - View-only access to the Agent when shared from Copilot Studio. - No permissions at the Environment level in Dataverse. The Issue: When I share the Agent link on Teams, users add it successfully. However, when they ask a question, the Agent immediately triggers the Fallback Topic (acting as if it has no information to pull from or can't access SharePoint). The Strange Behavior (Workaround): I discovered that if I temporarily grant the user the following high privileges: 1. Environment Maker role. 2. Bot roles (Bot Contributor, Bot Transcript Viewer, Bot Viewer). 3. Editor permission on the Agent. Then, if the user tests a question inside the Copilot Studio canvas, it answers correctly. After that, if they test it in Teams, it works perfectly there too! The weirdest part: if I immediately revoke all these high privileges (returning the user to a simple Viewer with no Environment Access), the Agent continues to work normally for them in Teams and fetches answers from SharePoint without any issues! My Question to the Experts: 1. Since I don't want (and for security reasons, shouldn't) grant end-users roles like Maker or Editor, what are the exact minimum basic permissions (Security Roles) at the Environment/Dataverse level (e.g., Basic User) that a user must have just to chat with the Agent in Teams successfully from the first try? 2. Is there a technical explanation for why the Agent keeps working in Teams after revoking the permissions? Is it just Token Caching, or is there something else at play? I would highly appreciate your insights!134Views0likes1CommentSnippet Files Truncating Data - Excel
Dear community, Background I am looking for feedback regarding a best practice for using Microsoft Excel files as a knowledge source. My data is structured in a tabular format, stored across 3-4 columns in Excel (~500 rows, one sheet). For context, it is a simple mapping file that can be used to query about team responsibilities and who to contact for a specific topic/region/etc. I use this file in parallel with Outlook and Teams tools to escalate topics directly to individuals. I have a skill already created (contacts-responsibilities) that very clearly details the file and how the Agent should behave. Issue In the "developer" preview, I can see the Agent is identifying the correct knowledge source, but the processing technique is resulting in truncated snippet files. After multiple fail-retry loops, the Agent concludes that the data is not present in the file (which it most certainly is). Here are some of the notes the Agent returns: "the snippet seems to be limited to a certain portion of the file" "the search result only returned partial data from the spreadsheet." Ask Any suggestions on what exactly to do here? I have read that issues should only occur when you hit 1500+ rows of data. I could split my data apart, but this would mean more maintenance on my side. Thank you! Any hint is appreciated.160Views0likes2CommentsSaving a Model Generated File in SharePoint - New Copilot Studio
Hi everyone, I have spent the last two days trying to solve a problem that to me should be a straightforward functionality. I have an agent I made which generates Word file reports. The agent is Cluade Opus 4.8 and it generates the file wonderfully as per my brand guidelines. The document in not a simple content file. Rather these documents can get complex based on the user requirement. Currently the document generates fine and the user gets a popup to download the file. I however need the file to be saved in our share SharePoint library. I created a workflow tool that accepts a file input and then saves it to SharePoint, however when I tried to configure this tool in the agent, the file input parameter was not showing. I then tried to set up a workflow which accepts a url, but the agent cannot seem to access any url or pass it to my workflow. Using a create file tool within the agent and having the agent fill in the file name and content parameters was slow, and the agent was actually attempting to rewrite the file byte-by-byte which lead to the file being re-created and is not scalable for large files. Based on the agent, this is how the file is currently saved: "The file is saved inside my sandboxed container at: /app/created/Sample_Report.docx /app/created/ is a special output directory: any file I place there is automatically packaged by the platform and returned to you as the chat attachment (the Sample_Report.docx chip you see). This is a private, ephemeral location inside my container — it is not a shared network path, and it is not the SharePoint library. Neither you nor the SharePoint tool can reach /app/created/ directly; the platform's attachment mechanism is the only bridge out of it, and as we established, that bridge delivers a direct download rather than a hosted HTTPS URL. So to be precise: the file exists only (a) here in my container at /app/created/Sample_Report.docx, and (b) as the downloadable attachment the platform generated from it. It has not been saved to SharePoint." I need this functionality working as I will have several automations flows around report generation so no human will be available to download the file from within Copilot. Note: I cannot use the old copilot studio as the file generation capabilities are not on par with the new copilot studio experience. The same agent model does not output files, and the create word file node does not output files at the depth and formatting complexity I require. Can anyone please help with a reliable way to get the file save in SharePoint from the New Copilot Studio experience? I'm at my wits end here.Solved283Views0likes1Comment