Reference implementation for governing MCP connector calls with a verifiable delegation chain (PFC v0.13)
This is a PFC (Proof of Concept) reference implementation for delegation chain governance, not a production MCP server. The three tools (firecrawl_scrape, manage_crm_objects, create_draft) are stub connectors defined in src/connectors.ts and examples/external-consumer/consume.ts. Tool definitions are inferred from code comments and type hints rather than explicit MCP tool registration. Input schemas are partially visible but lack complete parameter descriptions. Descriptions are present but generic (10-50 chars). No output schemas documented. No error handling guidance. The codebase focuses on cryptographic chain verification and issuance, not on tool quality or LLM-optimized definitions.
Create an email draft in Gmail
Scrape web content using Firecrawl connector
Create or update CRM objects in HubSpot
Tool definitions are inferred from code comments, not explicitly registered via MCP protocol. No visible tool registration mechanism (e.g., server.setRequestHandler('tools/list', ...)) in provided source.
Descriptions are too short (10-50 chars) and lack context for LLM selection. 'Scrape web content using Firecrawl connector' does not explain WHEN to use it, what it returns, or prerequisites. Baseline: 194 chars average.
Output schemas are not documented. LLMs cannot plan downstream calls or extract required fields. No indication of what firecrawl_scrape returns (markdown? HTML? structured data?) or what manage_crm_objects returns on success.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
Parameter descriptions are minimal or missing. 'formats' in firecrawl_scrape lacks description of valid values (markdown, html, json?). 'properties' in manage_crm_objects is vague, what structure? What fields are required?
No error handling guidance. If firecrawl_scrape fails (invalid URL, timeout, rate limit), what should the LLM do? If manage_crm_objects fails (invalid object type, missing required field), how should the agent recover?