{"_id":"@ag-ui/mcp-apps-middleware","_rev":"5-fca69843dfd10bd15fc647c57966e9be","name":"@ag-ui/mcp-apps-middleware","dist-tags":{"latest":"0.1.1"},"versions":{"0.0.1":{"name":"@ag-ui/mcp-apps-middleware","version":"0.0.1","author":{"name":"Markus Ecker"},"_id":"@ag-ui/mcp-apps-middleware@0.0.1","maintainers":[{"name":"_mme","email":"markus.ecker@gmail.com"},{"name":"copilotkit","email":"devops@copilotkit.ai"}],"dist":{"shasum":"f80f240549ac5d31a8f19d1df5d0a1db647265c6","tarball":"https://registry.npmjs.org/@ag-ui/mcp-apps-middleware/-/mcp-apps-middleware-0.0.1.tgz","fileCount":9,"integrity":"sha512-GndsrxBr12Ji/Ioa4zYALbmEGD7cglExIwL7wlco3/PVyqk1WsjybxRNyDj+p9NQh2HJ3s/ctEJWGxwVUyC+fw==","signatures":[{"sig":"MEYCIQD5gXECBL0ZesJjYL1J3+0kvxRbGuhvlJpKrgUhvoRhFwIhANcRH4wH3ZI7aeVTUpVJ69RX9LKJTq12ajZ6Tj0UUYcY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78709},"main":"./dist/index.js","_from":"file:ag-ui-mcp-apps-middleware-0.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},"_npmUser":{"name":"_mme","email":"markus.ecker@gmail.com"},"_resolved":"/private/var/folders/0t/pq2_7rn97834lcsvc_qy4t8r0000gn/T/3743d3d08919a71ca21c2ac6cb20bd50/ag-ui-mcp-apps-middleware-0.0.1.tgz","_integrity":"sha512-GndsrxBr12Ji/Ioa4zYALbmEGD7cglExIwL7wlco3/PVyqk1WsjybxRNyDj+p9NQh2HJ3s/ctEJWGxwVUyC+fw==","_npmVersion":"10.9.3","description":"MCP Apps middleware for AG-UI that enables UI-enabled tools from MCP (Model Context Protocol) servers.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.1","tsup":"^8.0.2","vitest":"^2.0.0","typescript":"^5.3.3","@types/node":"^20.11.19","@ag-ui/client":"0.0.42-alpha.3"},"peerDependencies":{"rxjs":"7.8.1","@ag-ui/client":">=0.0.40"},"_npmOperationalInternal":{"tmp":"tmp/mcp-apps-middleware_0.0.1_1764938388444_0.8436880567405862","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@ag-ui/mcp-apps-middleware","version":"0.0.2","author":{"name":"Markus Ecker"},"_id":"@ag-ui/mcp-apps-middleware@0.0.2","maintainers":[{"name":"_mme","email":"markus.ecker@gmail.com"},{"name":"copilotkit","email":"devops@copilotkit.ai"}],"dist":{"shasum":"656847e8b8dee89a2bb4aa3ed28498433d9fe6b4","tarball":"https://registry.npmjs.org/@ag-ui/mcp-apps-middleware/-/mcp-apps-middleware-0.0.2.tgz","fileCount":9,"integrity":"sha512-EMHm65hs3aNfoCpxZ1RYDLvZejmit0yipvzg39jwKrGTzqvB3CZuZUenDS9o2eWu2PZIvcFuvU15nEwH7SZb8A==","signatures":[{"sig":"MEUCIQDE5tPjrR5xT6tH25WvkCXNml9iaSD2uXavdh9BXEYS6AIgULuwyTFEInsXZ7mxcc5eeuh7sRPurX4OVJ5GypbAMoA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78122},"main":"./dist/index.js","_from":"file:ag-ui-mcp-apps-middleware-0.0.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},"_npmUser":{"name":"_mme","email":"markus.ecker@gmail.com"},"_resolved":"/private/var/folders/0t/pq2_7rn97834lcsvc_qy4t8r0000gn/T/e30a517851d414915b500930e7aa9962/ag-ui-mcp-apps-middleware-0.0.2.tgz","_integrity":"sha512-EMHm65hs3aNfoCpxZ1RYDLvZejmit0yipvzg39jwKrGTzqvB3CZuZUenDS9o2eWu2PZIvcFuvU15nEwH7SZb8A==","_npmVersion":"10.9.3","description":"MCP Apps middleware for AG-UI that enables UI-enabled tools from MCP (Model Context Protocol) servers.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.1","tsup":"^8.0.2","vitest":"^2.0.0","typescript":"^5.3.3","@types/node":"^20.11.19","@ag-ui/client":"0.0.42"},"peerDependencies":{"rxjs":"7.8.1","@ag-ui/client":">=0.0.40"},"_npmOperationalInternal":{"tmp":"tmp/mcp-apps-middleware_0.0.2_1768305462382_0.06318223350785312","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@ag-ui/mcp-apps-middleware","version":"0.0.3","author":{"name":"Markus Ecker"},"_id":"@ag-ui/mcp-apps-middleware@0.0.3","maintainers":[{"name":"_mme","email":"markus.ecker@gmail.com"},{"name":"copilotkit","email":"devops@copilotkit.ai"}],"dist":{"shasum":"27a1c2976a3b48ae58ef1707251a1792d8725a28","tarball":"https://registry.npmjs.org/@ag-ui/mcp-apps-middleware/-/mcp-apps-middleware-0.0.3.tgz","fileCount":9,"integrity":"sha512-Z+NZQXj4J+Y/2PLNsiyhNzRWFtTT2sAoC5dztoAlIsdfzvLvYEa52YGdHesNTN85JJqaIrYxQ8e31IBpKjrnoA==","signatures":[{"sig":"MEUCID33+0CFlJqcZAGfpgigDn9bnnbiC8ctEuF38R1ByO2fAiEAnbEuc3mTFgHrKZOckiCkjHTVVBeUsHETJRG4cGjOjD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78122},"main":"./dist/index.js","_from":"file:ag-ui-mcp-apps-middleware-0.0.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest","link:global":"pnpm link --global","unlink:global":"pnpm unlink --global"},"_npmUser":{"name":"_mme","email":"markus.ecker@gmail.com"},"_resolved":"/private/var/folders/0t/pq2_7rn97834lcsvc_qy4t8r0000gn/T/1a698e4249bcf7358c58f0c86badbe6f/ag-ui-mcp-apps-middleware-0.0.3.tgz","_integrity":"sha512-Z+NZQXj4J+Y/2PLNsiyhNzRWFtTT2sAoC5dztoAlIsdfzvLvYEa52YGdHesNTN85JJqaIrYxQ8e31IBpKjrnoA==","_npmVersion":"10.9.3","description":"MCP Apps middleware for AG-UI that enables UI-enabled tools from MCP (Model Context Protocol) servers.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"rxjs":"7.8.1","@modelcontextprotocol/sdk":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.1","tsup":"^8.0.2","vitest":"^2.0.0","typescript":"^5.3.3","@types/node":"^20.11.19","@ag-ui/client":"0.0.43"},"peerDependencies":{"@ag-ui/client":">=0.0.40"},"_npmOperationalInternal":{"tmp":"tmp/mcp-apps-middleware_0.0.3_1768491893035_0.6495460920799365","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@ag-ui/mcp-apps-middleware","version":"0.1.0","author":{"name":"Markus Ecker"},"license":"MIT","_id":"@ag-ui/mcp-apps-middleware@0.1.0","maintainers":[{"name":"_mme","email":"markus.ecker@gmail.com"},{"name":"copilotkit","email":"devops@copilotkit.ai"}],"homepage":"https://github.com/ag-ui-protocol/ag-ui#readme","bugs":{"url":"https://github.com/ag-ui-protocol/ag-ui/issues"},"dist":{"shasum":"1b72ecb92cb8b938a7b1b54200a1d1f70843d835","tarball":"https://registry.npmjs.org/@ag-ui/mcp-apps-middleware/-/mcp-apps-middleware-0.1.0.tgz","fileCount":11,"integrity":"sha512-q5t5aEwa0lbkOAeRnZ0Mzg4AgQx+vUPBf6+wo+cVT5Cyx1QZfAlZ6ikwW5kcwazQ4it2dlHFkfyXbXb2XtXBMQ==","signatures":[{"sig":"MEUCIERTxs9ovji7wJ51C1gfjWQDT15WwyvgrVwkbk5IH/4QAiEAgXP+AfVRGj6/YZCFpqZs/d/1gPVoMqFs1UNdhwmxTqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB5/TG9tu6uo5vY0aegfhieXrCRix9TRbVQhKIg6bthQAiAuQbd7n7T3zOB08HcdLmFoijdNAn2mlBsmk8Fwkx/jzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ag-ui%2fmcp-apps-middleware@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96534},"main":"./dist/index.js","_from":"file:ag-ui-mcp-apps-middleware-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"dev":"tsdown --watch","test":"vitest run","build":"tsdown","clean":"git clean -fdX --exclude=\"!.env\"","typecheck":"tsc --noEmit","test:watch":"vitest","link:global":"pnpm link --global","test:exports":"publint --strict && attw --pack","test:coverage":"vitest run --coverage","unlink:global":"pnpm unlink --global"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:928efd20-d9d2-41db-a36a-be3b5e64fd26"}},"_resolved":"/home/runner/work/ag-ui/ag-ui/middlewares/mcp-apps-middleware/ag-ui-mcp-apps-middleware-0.1.0.tgz","_integrity":"sha512-q5t5aEwa0lbkOAeRnZ0Mzg4AgQx+vUPBf6+wo+cVT5Cyx1QZfAlZ6ikwW5kcwazQ4it2dlHFkfyXbXb2XtXBMQ==","repository":{"url":"git+https://github.com/ag-ui-protocol/ag-ui.git","type":"git"},"_npmVersion":"11.15.0","description":"MCP Apps middleware for AG-UI that enables UI-enabled tools from MCP (Model Context Protocol) servers.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.15.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.1","tsdown":"^0.20.1","vitest":"^4.0.18","publint":"^0.3.12","typescript":"^5.3.3","@types/node":"^20.11.19","@ag-ui/client":"0.0.59","@arethetypeswrong/cli":"^0.17.4","@vitest/coverage-istanbul":"^4.0.18"},"peerDependencies":{"rxjs":"7.8.1","@ag-ui/client":">=0.0.40"},"_npmOperationalInternal":{"tmp":"tmp/mcp-apps-middleware_0.1.0_1789073608244_0.24821929622087002","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"_id":"@ag-ui/mcp-apps-middleware@0.1.1","bugs":{"url":"https://github.com/ag-ui-protocol/ag-ui/issues"},"dist":{"shasum":"40b7f5e22a9f22cc04c8d635a49752e128cf9988","tarball":"https://registry.npmjs.org/@ag-ui/mcp-apps-middleware/-/mcp-apps-middleware-0.1.1.tgz","fileCount":11,"integrity":"sha512-bX02Hly+9oKTsBT+4RG7ntY9HSF1O+ysRHgXbkKY+ZNVYTCrtpiwgzUfQ1MqMPhBLbZUaVBh9uNfLVxU0maaNQ==","signatures":[{"sig":"MEYCIQCKTll9S9gW7lwbyLBSwmg37L7dCNprH1QZZqi0LzGyKgIhAPBfkowkP/bAyl/CJuBMkQ4yzj+Feak9/CIIrP3l4I6e","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCagPkisHwUE2By4hTiPbZhXZunGE4TnzGxNciLQwmHEwIhAJbQH7N/+lrX2LmqVodbwyyhvTykfpeguzk+QybV+PGV"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ag-ui%2fmcp-apps-middleware@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":96678},"main":"./dist/index.js","name":"@ag-ui/mcp-apps-middleware","_from":"file:ag-ui-mcp-apps-middleware-0.1.1.tgz","types":"./dist/index.d.ts","author":{"name":"Markus Ecker"},"module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"dev":"tsdown --watch","test":"vitest run","build":"tsdown","clean":"git clean -fdX --exclude=\"!.env\"","typecheck":"tsc --noEmit","test:watch":"vitest","link:global":"pnpm link --global","test:exports":"publint --strict && attw --pack","test:coverage":"vitest run --coverage","unlink:global":"pnpm unlink --global"},"version":"0.1.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:928efd20-d9d2-41db-a36a-be3b5e64fd26"}},"homepage":"https://github.com/ag-ui-protocol/ag-ui#readme","_resolved":"/home/runner/work/ag-ui/ag-ui/middlewares/mcp-apps-middleware/ag-ui-mcp-apps-middleware-0.1.1.tgz","_integrity":"sha512-bX02Hly+9oKTsBT+4RG7ntY9HSF1O+ysRHgXbkKY+ZNVYTCrtpiwgzUfQ1MqMPhBLbZUaVBh9uNfLVxU0maaNQ==","repository":{"url":"git+https://github.com/ag-ui-protocol/ag-ui.git","type":"git"},"_npmVersion":"11.15.0","description":"MCP Apps middleware for AG-UI that enables UI-enabled tools from MCP (Model Context Protocol) servers.","directories":{},"maintainers":[{"name":"_mme","email":"markus.ecker@gmail.com"},{"name":"copilotkit","email":"devops@copilotkit.ai"}],"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@modelcontextprotocol/sdk":"^1.15.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"rxjs":"7.8.1","tsdown":"^0.20.1","vitest":"^4.0.18","publint":"^0.3.12","typescript":"^5.3.3","@types/node":"^20.11.19","@ag-ui/client":"0.0.59","@arethetypeswrong/cli":"^0.17.4","@vitest/coverage-istanbul":"^4.0.18"},"peerDependencies":{"rxjs":"7.8.1","@ag-ui/client":">=0.0.40"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-apps-middleware_0.1.1_1789150767306_0.12586029858918613"}}},"time":{"created":"2025-12-05T12:39:48.381Z","modified":"2026-09-11T18:19:27.812Z","0.0.1":"2025-12-05T12:39:48.591Z","0.0.2":"2026-01-13T11:57:42.527Z","0.0.3":"2026-01-15T15:44:53.182Z","0.1.0":"2026-09-10T20:53:28.348Z","0.1.1":"2026-09-11T18:19:27.449Z"},"bugs":{"url":"https://github.com/ag-ui-protocol/ag-ui/issues"},"author":{"name":"Markus Ecker"},"license":"MIT","homepage":"https://github.com/ag-ui-protocol/ag-ui#readme","repository":{"url":"git+https://github.com/ag-ui-protocol/ag-ui.git","type":"git"},"description":"MCP Apps middleware for AG-UI that enables UI-enabled tools from MCP (Model Context Protocol) servers.","maintainers":[{"name":"_mme","email":"markus.ecker@gmail.com"},{"name":"copilotkit","email":"devops@copilotkit.ai"}],"readme":"# @ag-ui/mcp-apps-middleware\n\nMCP Apps middleware for AG-UI that enables UI-enabled tools from MCP (Model Context Protocol) servers.\n\n## Installation\n\n```bash\nnpm install @ag-ui/mcp-apps-middleware\n# or\npnpm add @ag-ui/mcp-apps-middleware\n```\n\n## Usage\n\n```typescript\nimport { MCPAppsMiddleware } from \"@ag-ui/mcp-apps-middleware\";\n\nconst agent = new YourAgent().use(\n  new MCPAppsMiddleware({\n    mcpServers: [\n      {\n        type: \"http\",\n        url: \"http://localhost:3001/mcp\",\n        serverId: \"weather-server\",\n      },\n    ],\n  }),\n);\n```\n\n## Features\n\n- Discovers UI-enabled tools from MCP servers\n- Injects tools into the agent's tool list\n- Executes tool calls and emits activity snapshots with resource URIs\n- Supports proxied MCP requests for frontend resource fetching\n\n## Configuration\n\n```typescript\ninterface MCPAppsMiddlewareConfig {\n  mcpServers?: MCPClientConfig[];\n  discoveryFailureMode?: \"continue\" | \"throw\"; // Default: \"continue\"\n}\n\ntype MCPClientConfig =\n  | {\n      type: \"http\";\n      url: string;\n      headers?: Record<string, string>;\n      serverId?: string;\n    }\n  | {\n      type: \"sse\";\n      url: string;\n      headers?: Record<string, string>;\n      serverId?: string;\n    };\n```\n\n### Server ID\n\nThe optional `serverId` field provides a stable identifier for the server. This is useful when:\n\n- Server URLs may change (e.g., different environments)\n- You want human-readable server identification\n- Frontend code needs to reference servers by name\n\nIf `serverId` is not provided, the server is identified by an MD5 hash of its transport `type` and `url` only.\n\n## Activity Snapshot\n\nThe middleware emits activity snapshots with the following structure:\n\n```typescript\n{\n  type: \"ACTIVITY_SNAPSHOT\",\n  activityType: \"mcp-apps\",\n  content: {\n    result: MCPToolCallResult,     // Result from the tool execution\n    resourceUri: string,           // URI of the UI resource to fetch\n    serverHash: string,            // MD5 hash of transport type and URL only\n    serverId?: string,           // Server ID (if configured)\n    toolInput: Record<string, unknown>  // Arguments passed to the tool\n  },\n  replace: true\n}\n```\n\nThe frontend should fetch the resource content via proxied MCP request using `resourceUri` and either `serverHash` or `serverId`.\n\n## Proxied MCP Requests\n\nThe middleware supports proxied MCP requests from the frontend. Pass a `ProxiedMCPRequest` in `forwardedProps.__proxiedMCPRequest`:\n\n```typescript\ninterface ProxiedMCPRequest {\n  serverHash: string; // MD5 hash of transport type and URL only\n  serverId?: string; // Optional server ID for lookup\n  method: string; // MCP method (e.g., \"resources/read\", \"tools/call\")\n  params?: Record<string, unknown>;\n}\n```\n\nServer lookup prefers `serverId` if provided, falling back to `serverHash`.\n\n## Exported Utilities\n\n```typescript\nimport {\n  MCPAppsActivityType, // \"mcp-apps\" constant\n  getServerHash, // Hash transport type and URL; excludes headers\n} from \"@ag-ui/mcp-apps-middleware\";\n```\n\n## Proxy connections\n\nRequires `@modelcontextprotocol/sdk >=1.15.0`. Version 1.15.0 is the first release\nwith custom `fetch` support in both HTTP and SSE client transports, and it includes\nHTTP `terminateSession()`. These APIs enforce the origin guard and session cleanup.\nThe lockfile pins this package's SDK to 1.15.0 so CI tests the minimum supported version.\n\nThe middleware accepts only `tools/call`, `resources/read`, `notifications/message`, and `ping` from an iframe proxy request.\nIt rejects other methods before it connects to the MCP server.\nHTTP discovery, tool calls, and proxy requests delete their MCP sessions before closing the client.\nSession deletion uses its own three-second abort signal so cleanup can run after a failed handshake aborts the SDK signal.\nIf a server rejects session deletion or does not respond within three seconds, the client still closes and preserves the original operation result.\n\nServer hashes exclude headers so browser-visible references do not contain a checksum of credentials.\nThis changes hashes for servers configured with headers. Recreate activity messages after upgrading;\nuse stable `serverId` values for references that must survive configuration changes.\nIf multiple configurations share a transport type and URL, each must have a distinct `serverId`.\nHash-only requests for that endpoint are rejected because they cannot identify the intended credential scope.\n\nMCP connections do not follow redirects, and transport requests must stay on the configured origin.\nURLs must use HTTP(S) and must not contain embedded user credentials.\n\nDiscovery continues past unavailable servers by default. Set `discoveryFailureMode: \"throw\"`\nto stop before invoking the agent if any configured server cannot provide its tools.\nProxy responses and thrown discovery errors omit raw upstream response bodies.\nServer-side diagnostics include `serverId`, the credential-free server hash, and the\noriginal error in both discovery modes and on proxy failures. Treat these logs as\noperator-only data: upstream errors can include private response bodies.\n\n## Tool visibility\n\nDiscovery reads `_meta.ui.resourceUri`, with `_meta[\"ui/resourceUri\"]` as a legacy fallback.\nWhen `_meta.ui.visibility` is omitted, tools remain visible to the model by default.\nAn explicit visibility list must include `\"model\"` for model-facing discovery.\nTools marked `[\"app\"]` stay hidden from the model and remain callable through the iframe proxy.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}