Repository navigation
Semantic Kernel MCP: checking receipt and invoice fixtures through Kernel.invoke #14439
ashevilleislove
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
I'm sharing this on behalf of Ardaro, which operates the linked MCP service. This example was prepared with AI assistance and checked against a live run.
I tested two receipt/invoice fixtures through Semantic Kernel's
MCPStreamableHttpPluginandKernel.invoke, before connecting a model or an accounting action.One useful integration detail: in this Python client run,
FunctionResult.valueheld a list containing oneTextContentblock with the fixture JSON. The example below parses that block and checks the explicit review state. That gives application code a concrete result to validate before deciding what can happen next.Tested with Python 3.11.0, Semantic Kernel 1.44.1 and MCP 1.30.0:
The September 13, 2026 check registered 18 functions and invoked exactly the two named examples once with empty arguments. Both returned
review_required. A separate validation of the parsed result reproduced both deterministic result identities. The receipt fixture totals107.00; the invoice fixture compares two supplied invoice units with five ordered units. The three units uninvoiced by that invoice establish no delivery status and check no prior invoices.These fixtures are fixed synthetic examples and require no API key or wallet. The code has no model service or payment handler. Loading the other catalog functions does not authorize their execution; caller-document analysis and paid tools have separate contracts. The example covers these JSON text responses, not every MCP result type or a model-driven workflow. Human review still governs accounting actions.
Published fixtures and framework evidence · Service contracts · Microsoft's MCP plugin documentation
For Semantic Kernel developers: where do you keep versioned result checks like these—at the plugin boundary or in the workflow step that consumes
FunctionResult?All reactions