ensureAbility($request, 'read', $this->name)) { return $error; } $teamId = $this->resolveTeamId($request); if (is_null($teamId)) { return $this->mcpError($request, 'Invalid token.'); } $args = $this->paginationArgs($request); $projects = Project::where('team_id', $teamId)->get(); $databases = collect(); foreach ($projects as $project) { $databases = $databases->merge($project->databases()); } $total = $databases->count(); $summaries = $databases ->sortBy('name') ->slice($args['offset'], $args['per_page']) ->map(fn ($db) => [ 'uuid' => $db->uuid, 'name' => $db->name, 'status' => $db->status ?? null, 'type' => method_exists($db, 'type') ? $db->type() : class_basename($db), ]) ->values() ->all(); return $this->mcpSuccess($request, $this->respond( $summaries, [], $this->paginationMeta('list_databases', $args, $total), )); } public function schema(JsonSchema $schema): array { return [ 'page' => $schema->integer()->description('Page number (default 1).'), 'per_page' => $schema->integer()->description('Items per page (default 50, max 100).'), ]; } }