Skip to main content
Glama

create_note

Create notes in LunaTask with optional metadata for duplicate detection. Specify notebook, content, date, and source identifiers to organize information.

Instructions

Create a note in LunaTask. Accepts notebook_id, optional name/content, an ISO date_on, and optional source/source_id metadata for duplicate detection. Returns note_id or duplicate status.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
notebook_idNo
nameNo
contentNo
date_onNo
sourceNo
source_idNo

Implementation Reference

  • The 'create_note_tool' method within the 'NotesTools' class handles the logic for creating a note. It parses the date, constructs a 'NoteCreate' payload, calls the API client, and returns a structured response indicating success, failure, or duplicate detection.
    async def create_note_tool(  # noqa: PLR0913
        self,
        ctx: ServerContext,
        notebook_id: str | None = None,
        name: str | None = None,
        content: str | None = None,
        date_on: str | None = None,
        source: str | None = None,
        source_id: str | None = None,
    ) -> dict[str, Any]:
        """Create a note in LunaTask with optional duplicate detection."""
    
        await ctx.info("Creating new note")
    
        parsed_date: date_class | None = None
        if date_on is not None:
            try:
                parsed_date = date_class.fromisoformat(date_on)
            except ValueError as error:
                message = f"Invalid date_on format. Expected YYYY-MM-DD format: {error!s}"
                await ctx.error(message)
                logger.warning("Invalid date_on provided for create_note: %s", date_on)
                return {
                    "success": False,
                    "error": "validation_error",
                    "message": message,
                }
    
        note_payload = NoteCreate(
            notebook_id=notebook_id,
            name=name,
            content=content,
            date_on=parsed_date,
            source=source,
            source_id=source_id,
        )
    
        try:
            async with self.lunatask_client as client:
                note_response = await client.create_note(note_payload)
        except Exception as error:
            return await self._handle_lunatask_api_errors(ctx, error, "note creation")
    
        if note_response is None:
            duplicate_message = (
                "Note already exists for this source/source_id in the provided notebook"
            )
            await ctx.info("Note already exists; duplicate create skipped")
            logger.info("Duplicate note detected for notebook=%s", notebook_id)
            return {
                "success": True,
                "duplicate": True,
                "message": duplicate_message,
            }
    
        await ctx.info(f"Successfully created note {note_response.id}")
        logger.info("Successfully created note %s", note_response.id)
        return {
            "success": True,
            "note_id": note_response.id,
            "message": "Note created successfully",
        }
  • The 'create_note' MCP tool is registered in the '_register_tools' method of the 'NotesTools' class using the mcp.tool decorator.
    async def _create_note(  # noqa: PLR0913
        ctx: ServerContext,
        notebook_id: str | None = None,
        name: str | None = None,
        content: str | None = None,
        date_on: str | None = None,
        source: str | None = None,
        source_id: str | None = None,
    ) -> dict[str, Any]:
        return await self.create_note_tool(
            ctx,
            notebook_id,
            name,
            content,
            date_on,
            source,
            source_id,
        )
    
    self.mcp.tool(
        name="create_note",
        description=(
            "Create a note in LunaTask. Accepts notebook_id, optional name/content, "
            "an ISO date_on, and optional source/source_id metadata for duplicate "
            "detection. Returns note_id or duplicate status."
        ),
    )(_create_note)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tensorfreitas/lunatask-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server