| name | flutter-mcp-toolkit-intentcall-migration |
| description | Migrate Flutter app code from removed MCPCallEntry to AgentCallEntry after the hard cut. Use when upgrading mcp_toolkit, fixing compile errors after a major bump, or running flutter-mcp-toolkit migrate agent-entries. |
IntentCall migration — MCPCallEntry → AgentCallEntry
MCPCallEntry is removed from mcp_toolkit. App code must use
AgentCallEntry (from intentcall_core, re-exported by mcp_toolkit).
Canonical migration doc: migration_mcp_call_entry_to_agent_call_entry.md
When to use this skill
dart analyze reports undefined MCPCallEntry after upgrading mcp_toolkit
- User asks to migrate custom tools/resources to the new API
- Before shipping a major
mcp_toolkit bump to consumers
CLI (preferred)
flutter-mcp-toolkit migrate agent-entries --check lib/
flutter-mcp-toolkit migrate agent-entries --write lib/
flutter-mcp-toolkit migrate agent-entries --write --namespace my_app lib/main.dart
Alias: migrate mcp-call-entry (same behavior).
After migration — registration
MCPToolkitBinding.addEntries(entries: Set<AgentCallEntry>)
bootstrapFlutter(additionalEntries: { ... })
addMcpTool(AgentCallEntry) — still a shortcut for a single entry
Handlers should return AgentResult (AgentResult.success / AgentResult.failure).
For legacy MCPCallResult + MCPToolDefinition handlers, use mcpToolkitTool /
mcpToolkitResource (see flutter-mcp-toolkit-custom-tools).
Legacy pattern (before — do not ship new code)
// BEFORE (removed in Phase 6b)
final tool = MCPCallEntry.tool(
handler: (request) async => MCPCallResult(
message: 'ok',
parameters: {'n': request['n']},
),
definition: MCPToolDefinition(
name: 'my_tool',
description: 'Example',
inputSchema: {'type': 'object', 'properties': {}},
),
);
Target pattern (after)
import 'package:mcp_toolkit/mcp_toolkit.dart';
final tool = AgentCallEntry.tool(
namespace: 'app',
name: 'my_tool',
description: 'Example',
inputSchema: const {
'type': 'object',
'additionalProperties': false,
'properties': {'n': {'type': 'string'}},
'required': ['n'],
},
handler: (final args) async {
final n = args['n']?.toString() ?? '';
return AgentResult.success(
message: 'ok',
data: {'n': n},
);
},
);
await MCPToolkitBinding.instance.addEntries(entries: {tool});
Platform sync (optional)
After tool surfaces compile:
flutter-mcp-toolkit codegen sync --platform web
flutter-mcp-toolkit codegen sync --platform android,ios,macos --check
See docs/platform-notes/android-oem.md for Xiaomi/Huawei (same shortcuts XML as AOSP).
MCP migrate tool
fmt_migrate_agent_entries is shipped (report-only by default; apply: true to
rewrite). CLI equivalent: flutter-mcp-toolkit migrate agent-entries.
Maintainer checklist (in-repo product gate)
flutter-mcp-toolkit migrate agent-entries --check on flutter_test_app/lib
make sync-skills after any plugin/skills/ edit
cd mcp_server_dart && dart test test/contract/
- Grep: no
MCPCallEntry in skills except this file's BEFORE examples
Hosted IntentCall packages
IntentCall now lives outside this repository. Normal consumer state uses hosted intentcall_* packages.
- Use hosted
intentcall_*: ^0.6.0 dependencies for committed consumer state.
- Use local path overrides only for deliberate cross-repo development against a local IntentCall checkout.
- Run
flutter pub get and migrate agent-entries --check again after dependency changes.
- CI: use
make check-intentcall-hosted-consumer for hosted mcp_flutter proof; use make check-intentcall-sibling-matrix only for deliberate local IntentCall checkout matrix proof. The historical make check-intentcall-integration target is a compatibility alias for the sibling-matrix lane, not a fresh-adopter hosted gate.
Related skills
flutter-mcp-toolkit-custom-tools — authoring AgentCallEntry surfaces
flutter-mcp-toolkit-repo-maintainer — CHANGELOG, version pins, sync-skills