It's a syntax error.
def find(key: String, value: String): Future[SimpleResult] = {
val cursor: Cursor[JsObject] = coll.
find(Json.obj(key -> value)).
cursor[JsObject]
val futureList: Future[List[JsObject]] = cursor.collect[List]()
futureList.map { item => Ok(Json.toJson(item)) }
}
Note the ":" and "=" symbols in the first line. Without the colon, you're actually just calling Future.apply[SimpleResult] which takes a single parameter: a function which should return a SimpleResult. That's why you get a type mismatch: you're returning a Future within the body of a Future.