Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/trsdn/mcp-server-ppt/ppt-com-interopgit clone --depth 1 https://github.com/trsdn/mcp-server-pptWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/trsdn/mcp-server-ppt/ppt-com-interop)<a href="https://agentmods.dev/instructions/trsdn/mcp-server-ppt/ppt-com-interop"><img src="https://agentmods.dev/badge/instructions/trsdn/mcp-server-ppt/ppt-com-interop.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.02610 | $0.02610 |
| Opus 5 | $0.01305 | $0.01305 |
| Sonnet 5 | $0.00522 | $0.00522 |
| Haiku 4.5 | $0.00261 | $0.00261 |
Grade A, and why
mcp-server-ppt ppt-com-interop.instructions.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 298 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PowerPoint COM Interop Patterns
Essential patterns for PowerPoint COM automation
Core Principles
- Use Late Binding -
dynamictypes withType.GetTypeFromProgID() - 1-Based Indexing - PowerPoint collections start at 1, not 0
- Exception Propagation - Never wrap in try-catch, let batch.Execute() handle exceptions (see Exception Propagation section)
Reference Resources
NetOffice Library - THE BEST source for ALL PowerPoint COM Interop patterns:
- GitHub: https://github.com/NetOfficeFw/NetOffice
- Use for ALL COM Interop work - slides, shapes, presentations, charts, tables, VBA, everything
- NetOffice wraps Office COM APIs in strongly-typed C# - study their patterns for dynamic interop conversion
- Search NetOffice repository BEFORE implementing any PowerPoint COM automation
- Particularly valuable for: Shapes, Slide layouts, Masters, Animations, complex COM scenarios
Exception Propagation Pattern (CRITICAL)
Core Commands: NEVER wrap operations in try-catch blocks that return error results. Let exceptions propagate naturally.
// ❌ WRONG: Catching and wrapping exceptions
public async Task<OperationResult> CreateAsync(IPptBatch batch, string name)
{
try
{
return await batch.Execute((ctx, ct) => {
var item = ctx.Create(name);
return ValueTask.FromResult(new OperationResult { Success = true });
});
}
catch (Exception ex)
{
// ❌ WRONG: Double-wrapping suppresses the exception
return new OperationResult { Success = false, ErrorMessage = ex.Message };
}
}
// ✅ CORRECT: Let batch.Execute() handle exceptions via TaskCompletionSource
public async Task<OperationResult> CreateAsync(IPptBatch batch, string name)
{
return await batch.Execute((ctx, ct) => {
var item = ctx.Create(name);
return ValueTask.FromResult(new OperationResult { Success = true });
});
// Exception flows to batch.Execute() → caught via TaskCompletionSource
// → Returns OperationResult { Success = false, ErrorMessage }
}
// ✅ CORRECT: Finally blocks are the right place for COM resource cleanup
public async Task<OperationResult> ComplexAsync(IPptBatch batch, string name)
{
dynamic? temp = null;
try
{
return await batch.Execute((ctx, ct) => {
temp = ctx.CreateTemp(name);
// ... operation ...
return ValueTask.FromResult(new OperationResult { Success = true });
});
}
finally
{
// ✅ Finally for resource cleanup, NOT catch for error handling
if (temp != null)
{
ComUtilities.Release(ref temp!);
}
}
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 298 lines · 2,610 tokens per session scan A 37a61afe6e6e
mcp-server-ppt ppt-com-interop.instructions.md is an instructions file published in the GitHub repository trsdn/mcp-server-ppt (36 stars, last pushed today), licensed MIT. It adds 2,610 tokens to every session, about $0.0130 per session on Opus 5. A static security scan graded it A with 0 findings. It comes from a forked repository.
Other instructions, from other repositories
mcp-server-powerpoint copilot-instructions.md
Copilot instructions for sbroenne/mcp-server-powerpoint, covering project instructions — powerpointmcp, critical files (read these first), sister projects, what is powerpointmcp? and session model (mcp server).
mcp-server-powerpoint architecture-patterns.instructions.md
Instructions for sbroenne/mcp-server-powerpoint, covering architecture patterns, .net class design (mandatory), layered architecture (critical), command pattern and structure (per domain).
mcp-server-powerpoint critical-rules.instructions.md
Instructions for sbroenne/mcp-server-powerpoint, covering critical rules - must follow, rule 1: success/errormessage invariant, rule 1b: no exception suppression in core, rule 30: real-com integration tests only, strict tdd and rule: 1-based indexing everywhere.
mcp-server-powerpoint mcp-server-guide.instructions.md
Instructions for sbroenne/mcp-server-powerpoint, covering mcp server development guide, llm-facing content rules, two kinds of tools: hand-written vs. generated, implementation pattern: single hand-written dispatch tool and error handling (mandatory).
mcp-server-powerpoint testing-strategy.instructions.md
Instructions for sbroenne/mcp-server-powerpoint, covering testing strategy, strict tdd (red → green), test project layout, serialization is mandatory and trait tagging (required for surgical filtering).
mcp-server-powerpoint code-review.instructions.md
Instructions for sbroenne/mcp-server-powerpoint, covering copilot code review, interop and resource safety, contract and path completeness and protocol, tests, and user-facing surfaces.