_ registry / mcp streamable-http · checked 1h ago

aiponge

https://mcp.aiponge.com

Registry code: a3b8a06ecdc9f443

api record

aiponge is a musical memory system. People keep their thoughts, feelings, and life moments as songs they can revisit for years. Use get_profile only when account preferences are relevant and not already known. Users may ask for journaling, introspection, awareness, patterns, or help to understand themselves. For "what has aiponge noticed?" use get_insights. For past evidence or specific themes, use search_entries. To save a reflection with review, use compose_entry. In clients without panels, show the draft and wait for explicit confirmation before save_entry with a stable operationId. Use…

endpoint
https://mcp.aiponge.com/mcp
protocol
streamable-http ·2025-06-18
authentication
bearer
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is aiponge live?
Yes — it answered the hub's last check (checked 1h ago). It answered 99% of checks over the last 30 days.
Is aiponge free to use?
Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
What tools does aiponge have?
23 tools: get_track, get_insights, search_entries, get_capabilities, list_audio_preference_profiles, get_entry, update_audio_preferences, list_books, ….
Is aiponge safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
98.9%

90 days 98.8%· all time 98.8%

latency
205ms

last good check

priced tools
0

of 23 tools

_ answered our checks, 90 days 584 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • save a journal entry
  • generate a song from a reflection
  • search past journal entries
  • get insights about the user's patterns
  • play an audiobook
takes → gives
text → audio, text, data
tools
12 reads3 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 23 tools
23 auth-required 23 of 23 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_track auth-required 15h ago

    Read the lyrics, source entry ID and context of a saved song. Use a real trackId from list_tracks or generation. Does not start playback.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "trackId"
      ],
      "properties": {
        "trackId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      }
    }
    arguments 14 lines
  • get_insights reads auth-required 3h ago

    Surface what aiponge has NOTICED about the user: the observations, recurring patterns, and wellness signal drawn from their self-model, inferred from their reflections. Read-only. Use it when the user asks "what has aiponge learned about me?", "what patterns do you see in me?", "what are my themes?", "how am I doing?", or to understand the user before suggesting actions. This is the INFERRED picture, not a diagnosis; for the user's explicitly-set settings (audio preferences, language, account) use get_profile instead. Returns empty sections for a new user with little history.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • search_entries reads auth-required 13h ago

    Search the user-owned journal by words in any supported language, tag, personal date, or import source. Returns matching entry IDs and short excerpts. Use get_entry for full text. Follow nextCursor with identical filters until hasMore is false before claiming there are no older matches. total counts only this response. Journal resolution errors do not broaden the search to other books.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "maxItems": 50
        },
        "limit": {
          "type": "integer",
          "maximum": 100,
          "exclusiveMinimum": 0
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "cursor": {
          "type": "string",
          "maxLength": 300,
          "description": "Continuation from a previous search; keep the same filters."
        },
        "offset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0
        },
        "toDate": {
          "type": "string"
        },
        "fromDate": {
          "type": "string"
        },
        "location": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1
        },
        "sourceType": {
          "type": "string",
          "maxLength": 50,
          "minLength": 1
        },
        "sensitivity": {
          "type": "string",
          "maxLength": 30,
          "minLength": 1
        },
        "sourceMemoryId": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1
        },
        "includeAllBooks": {
          "type": "boolean",
          "description": "Default false: return only the user's own journal entries (their personal Journal book). Set true to return entries from ALL their books, including book-derived content (insights, excerpts, exercises generated from books in their library)."
        }
      }
    }
    arguments 65 lines
  • get_capabilities reads auth-required 10h ago

    Return the canonical aiponge MCP tool map, workflow order, account/role requirements, and UI panel capabilities. Use only to choose tools for supported reflection, journal, music, or book requests. Do not call this or any aiponge tool for account deletion, unrelated local search such as restaurants, or invitations and group membership. For account deletion, direct the user to aiponge account settings or support. For invitations or group membership, direct the user to the aiponge App. Handle unrelated requests without aiponge. These exclusions are already known; do not look them up.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_audio_preference_profiles reads auth-required 20h ago

    List the user's saved song sound profiles, including each profile ID and label. Use this before generate_track when the user asks to create a song with a named saved sound. Read-only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_entry auth-required 15h ago

    Open / read the full text of ONE specific journal entry by its id. Resolve the id via list_entries or search_entries first; never invent an entry id.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "entryId"
      ],
      "properties": {
        "entryId": {
          "type": "string",
          "minLength": 1,
          "description": "The id of the journal entry to fetch (from list_entries)."
        }
      }
    }
    arguments 14 lines
  • update_audio_preferences changes data auth-required never probed

    Change / set / update the user's saved AUDIO (music) preferences — the defaults generate_track applies automatically to every new song (genre, vocal gender, language, instruments, default audio content type). Supplied fields replace their saved defaults without an undo history; omitted fields are preserved. Use this when the user wants to change their music style GOING FORWARD (e.g. "from now on make my songs jazz with female vocals", "always use Spanish for my songs"), NOT for a one-off — for a single song, pass the style to generate_track instead.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "genre": {
          "type": "string",
          "maxLength": 50,
          "minLength": 1,
          "description": "Music genre, e.g. pop, rock, jazz, electronic, hiphop, rnb, country, classical."
        },
        "language": {
          "type": "string",
          "maxLength": 10,
          "minLength": 2,
          "description": "Preferred song language as an ISO 639-1 code, e.g. 'en', 'fr', 'es'."
        },
        "instruments": {
          "type": "array",
          "items": {
            "enum": [
              "piano",
              "guitar",
              "drums",
              "violin",
              "saxophone",
              "flute",
              "bass",
              "synthesizer",
              "accordion"
            ],
            "type": "string"
          },
          "maxItems": 8,
          "minItems": 1,
          "description": "Preferred instruments."
        },
        "vocalGender": {
          "enum": [
            "f",
            "m"
          ],
          "type": "string",
          "description": "Preferred vocal gender for generated songs: 'f' or 'm'."
        },
        "additionalGenres": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 100,
            "minLength": 1
          },
          "maxItems": 20,
          "description": "Additional canonical genres you enjoy, e.g. [\"lofi_hiphop\", \"ambient\"]."
        },
        "audioContentType": {
          "enum": [
            "song",
            "guided",
            "atmosphere"
          ],
          "type": "string",
          "description": "Saved default audio preference. MCP generation currently supports song and atmosphere. Guided content is available only through its separate app workflow."
        },
        "styleDescription": {
          "type": "string",
          "maxLength": 500,
          "description": "A rich free-text description of the music style you like, e.g. \"warm intimate acoustic, like Bon Iver\"."
        }
      }
    }
    arguments 70 lines
  • list_books reads auth-required never probed

    Show / list the user's OWN books — "what books do I have?", "my library", "my books". Returns only the books they own or created, NOT the shared aiponge catalog. To discover or search the wider aiponge book catalog, use browse_books instead.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "cursor": {
          "type": "string",
          "maxLength": 1000
        },
        "offset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0
        }
      }
    }
    arguments 20 lines
  • browse_books reads auth-required never probed

    Browse / search / discover / find books in the shared aiponge library catalog (not just the user's own — for those use list_books). "Find me a book about gratitude", "what books are there on sleep?", "browse the library". Optionally filter by `search` text or `typeId`. Searches all languages by default. Returns matching books with their ids — then use read_book to read one, or play_audiobook to listen.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 50,
          "exclusiveMinimum": 0
        },
        "cursor": {
          "type": "string",
          "maxLength": 1000
        },
        "offset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0
        },
        "search": {
          "type": "string",
          "description": "Free-text search across the catalog (title/description)."
        },
        "typeId": {
          "type": "string",
          "description": "Optional book type to filter by, e.g. 'wisdom', 'guide', 'journal'."
        },
        "language": {
          "type": "string",
          "description": "ISO language code to scope results to, e.g. 'en'. Omit to search ALL languages (default)."
        }
      }
    }
    arguments 32 lines
  • read_book reads auth-required never probed

    Read / open a book's text content — its chapters and the prose of each — so you can summarize, quote, or discuss it. "Read me that book", "what does the book say?", "summarize this book". Resolve the bookId via browse_books or list_books first. Set chapterOffset and chapterLimit for a bounded chapter read. To LISTEN to it as narrated audio instead, use play_audiobook.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "bookId"
      ],
      "properties": {
        "bookId": {
          "type": "string",
          "minLength": 1,
          "description": "The id of the book to read (from browse_books or list_books)."
        },
        "chapterLimit": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "Bound the chapters returned. Omit with chapterOffset for the full interactive book."
        },
        "chapterOffset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Zero-based first chapter to read."
        }
      }
    }
    arguments 26 lines
  • play_audiobook reads auth-required never probed

    Play / listen to a book as an audiobook — its chapters narrated as TTS audio, in order, with clickable stream links. "Read this book aloud", "play the audiobook", "I want to listen to a book". Resolve the bookId via browse_books or list_books first. Many catalog books are narrated; if a book isn't, this says so (read its text with read_book instead).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "bookId"
      ],
      "properties": {
        "bookId": {
          "type": "string",
          "minLength": 1,
          "description": "The id of the book to read (from browse_books or list_books)."
        },
        "chapterLimit": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1,
          "description": "Bound the chapters returned. Omit with chapterOffset for the full interactive book."
        },
        "chapterOffset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Zero-based first chapter to read."
        }
      }
    }
    arguments 26 lines
  • generate_track changes data auth-required never probed

    Create / make / write / generate a SONG, a TRACK, or a piece of MUSIC for the user from a topic (e.g. "a calm morning walk", "write me a song about my mom", "make me some music about the sea"). This is THE tool for any "create/make/write a song|track|music" request. Provide EITHER a `topic` OR an `entryId` — do NOT ask the user for, or invent, a genre / mood / vocal style / language. The user's saved audio preferences are applied automatically, so the optional style fields are advanced overrides best left unset. For an explicit song request, set `audioContentType:"song"` so a saved spoken-audio default does not change the requested format. • FROM A JOURNAL ENTRY: to "turn my last entry into a song" / "make a track for this entry", pass `entryId` (from create_entry's result, or resolved via list_entries / search_entries). This links the track to that entry and uses its content for the lyrics — `topic` is then optional. • CONTENT FORMAT: use "song" for music with lyrics and affirmations, or "atmosphere" for an instrumental / ambient / focus / sleep soundscape with no lyrics. Spoken reflection and guided narration are unavailable through the current music provider. Explain that limitation instead of starting a reflection or guided request. • PROGRESS: takes ~1–3 minutes. By DEFAULT it returns immediately and a live progress panel shows the track filling in, then turns into the player — so leave `wait` unset and just tell the user it is composing (no need to poll; the panel does it). If the user asks later, get_generation_status checks progress and play_track plays a finished track. Only pass `wait:true` for scripted/non-interactive callers that must block ~1–3 minutes and get the finished play link back in one call.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "mood": {
          "type": "string",
          "description": "Optional style override. Usually omit — defaults come from the user's saved preferences."
        },
        "wait": {
          "type": "boolean",
          "default": false,
          "description": "Leave this UNSET (default false): the tool returns immediately and a live progress panel shows the track filling in, then becomes the player — the best in-chat experience. Set true ONLY for scripted / non-interactive callers that need to block ~1–3 min and get the finished play link back in one call (no progress is shown while blocking)."
        },
        "genre": {
          "type": "string",
          "description": "Optional style override. Usually omit — the user's saved audio preferences supply this."
        },
        "topic": {
          "type": "string",
          "maxLength": 10000,
          "minLength": 1,
          "description": "What the song / track should be about. Optional ONLY when you pass `entryId` (the entry supplies the content); otherwise this is required."
        },
        "entryId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Generate the track FROM an existing journal entry: links the new track to that entry and uses the entry's content for the lyrics. Pass the entry's UUID — from create_entry's result, or resolved via list_entries / search_entries. When set, `topic` is optional."
        },
        "language": {
          "type": "string",
          "description": "Optional ISO 639-1 override. Usually omit — defaults to the user's saved language."
        },
        "songMode": {
          "enum": [
            "mirror",
            "coach",
            "poet",
            "storyteller",
            "reframer",
            "explorer",
            "mythic",
            "explain",
            "tribute"
          ],
          "type": "string",
          "description": "Canonical song mode; defaults to 'mirror' when omitted. Use this instead of lyricsRegister. Available modes: mirror, coach, poet, storyteller, reframer, explorer, mythic, explain, tribute.\n  - 'mirror' (default): a song that REFLECTS THE LISTENER's inner world — feelings, memories, or an experience they are inside. Examples: \"a song about how I keep building walls around myself\", \"a song about my mother\", \"a song about feeling stuck\", \"a song about my morning walk\".\n  - 'tribute': a song ABOUT AN EXTERNAL SUBJECT — a brand, organization, place, craft, public figure, or idea — that preserves the subject's concrete, identifying substance. Examples: \"a song about [Company Name]\", \"a song about the city of Lisbon\", \"a song about the craft of programming\", \"a song honoring my late grandfather Marcel\". Strong tribute signals: a proper noun, a URL, a description of an entity rather than a feeling, words like \"tribute\", \"about [name]\", \"honoring\", \"for [name]\".\n  - 'explain': a song that makes an idea or reflection clearer through a singable narrative, without turning into a lecture or advice.\nWhen the request CLEARLY matches one mode, set the field and proceed. When the request is genuinely AMBIGUOUS between mirror and tribute (e.g. \"a song about my work\" — is 'my work' the listener's relationship with it, or an external thing?), ASK THE USER ONE SHORT QUESTION before calling: \"Should this be a song reflecting your experience, or a song about that as a subject?\" Default to 'mirror' only when the request describes a personal feeling or experience without any external named entity."
        },
        "operationId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Caller-owned UUID for this creation. Reuse it only for a retry of the same request, including after reconnecting."
        },
        "vocalGender": {
          "enum": [
            "f",
            "m"
          ],
          "type": "string",
          "description": "Optional override. Usually omit — defaults to the user's saved vocal preference."
        },
        "lyricsRegister": {
          "enum": [
            "wellness",
            "tribute"
          ],
          "type": "string",
          "description": "Legacy alias; prefer songMode."
        },
        "audioContentType": {
          "enum": [
            "song",
            "atmosphere"
          ],
          "type": "string",
          "description": "Set song explicitly for a song request; omit only when the user wants their saved default content type. 'atmosphere' = an instrumental / ambient / focus / sleep soundscape with no lyrics; 'song' = music with lyrics (an affirmation is a song). The legacy 'guided' and 'reflection' values are unavailable through the current music provider."
        },
        "audioPreferenceProfileId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Optional ID of one of the user's saved sound profiles. Call list_audio_preference_profiles first when the user asks to use a named saved sound; this applies that profile only to this song."
        }
      }
    }
    arguments 86 lines
  • save_entry auth-required never probed

    For clients without a journal panel: save the exact reflection the user has reviewed and explicitly confirmed. Never set confirmed from silence or inferred intent. Use compose_entry to prepare a draft; show it to the user, then save only after confirmation. Reuse operationId for retries of the same text. In interactive ChatGPT, prefer the journal panel Save action.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "content",
        "confirmed",
        "operationId"
      ],
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 50
          },
          "maxItems": 50
        },
        "content": {
          "type": "string",
          "maxLength": 5000,
          "minLength": 1
        },
        "confirmed": {
          "type": "boolean",
          "const": true
        },
        "moodContext": {
          "type": "string",
          "maxLength": 200
        },
        "operationId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      }
    }
    arguments 37 lines
  • submit_track_feedback auth-required never probed

    Record only explicit user feedback on a saved song: understood, partial or missed. Never infer recognition or helpfulness from playback. Replaces the user's previous feedback for this song. Resolve trackId first.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "trackId",
        "wasHelpful",
        "resonance",
        "confirmed"
      ],
      "properties": {
        "context": {
          "type": "string",
          "maxLength": 500
        },
        "trackId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "confirmed": {
          "type": "boolean",
          "const": true
        },
        "resonance": {
          "enum": [
            "understood",
            "partial",
            "missed"
          ],
          "type": "string"
        },
        "wasHelpful": {
          "type": "boolean"
        }
      }
    }
    arguments 36 lines
  • correct_insight auth-required never probed

    Record the user's explicit correction to a specific inferred dimension/value they have seen in aiponge. Do not invent a dimension or value, and do not treat this as a diagnosis. Use only when the user confirms the correction. The backend validates the canonical dimension and reaction.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "dimension",
        "value",
        "correction",
        "confirmed"
      ],
      "properties": {
        "value": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 1
        },
        "freeText": {
          "type": "string",
          "maxLength": 2000
        },
        "confirmed": {
          "type": "boolean",
          "const": true
        },
        "dimension": {
          "enum": [
            "preferredThemes",
            "preferredMoods",
            "approachGentlyThemes",
            "userArticulatedLearnings",
            "wisdomIntegrated",
            "wisdomInFlux",
            "coherenceValues",
            "coherenceBeliefs",
            "coherenceFears"
          ],
          "type": "string"
        },
        "correction": {
          "enum": [
            "affirmed",
            "partial",
            "rejected",
            "dismissed",
            "rephrased",
            "not_me",
            "not_quite",
            "wrong_phrasing",
            "affirm",
            "dismiss",
            "rephrase"
          ],
          "type": "string"
        }
      }
    }
    arguments 55 lines
  • create_entry auth-required never probed

    Persist a journal entry DIRECTLY to the journal, with NO review step. This is the silent/import-only path — for an ordinary chat request like "save this as a journal entry" / "journal this" / "add a journal entry", do NOT use this; use `compose_entry`, which opens an editable composer the user confirms. Reach for `create_entry` ONLY for silent/automated saves: structured memory-inventory imports, or when the user explicitly asks to save without reviewing. `content` is the only required field. For imports, include entryDate, entryDateDisplay, location, sourceMemoryId, sourceSection, sourceTitle, sourceType, dateConfidence, sensitivity, tags, and metadata when known. Returns the saved entry including its `id`, which can then be used to turn the entry into a song linked to it (the track generator accepts a journal entry id).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "content"
      ],
      "properties": {
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Optional tags; lowercase preferred."
        },
        "type": {
          "type": "string",
          "maxLength": 50,
          "description": "Optional entry type, e.g. 'reflection' (default), 'note', 'insight'. Usually omit."
        },
        "content": {
          "type": "string",
          "maxLength": 5000,
          "minLength": 1,
          "description": "The reflection text to save as a journal entry."
        },
        "location": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Free-text location, e.g. \"Marseille, France\"."
        },
        "metadata": {
          "type": "object",
          "description": "Flexible JSON metadata for import/review context.",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "entryDate": {
          "type": "string",
          "description": "ISO 8601 date or datetime, e.g. 1973-06-01 or 1989-11-30T10:00:00Z."
        },
        "sourceType": {
          "type": "string",
          "maxLength": 50,
          "minLength": 1,
          "description": "Suggested values: book_memory, journal_import, manual_entry, song_reflection."
        },
        "moodContext": {
          "type": "string",
          "maxLength": 200,
          "description": "Optional short note on the mood/context. Usually omit."
        },
        "operationId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
          "description": "Stable operation ID for a panel save retry."
        },
        "sensitivity": {
          "type": "string",
          "maxLength": 30,
          "minLength": 1,
          "description": "Suggested values: normal, private, sensitive, very_sensitive."
        },
        "sourceTitle": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "Human-readable source title."
        },
        "sourceSection": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "Book/source section, e.g. \"L Accident\"."
        },
        "dateConfidence": {
          "type": "string",
          "maxLength": 20,
          "minLength": 1,
          "description": "Suggested values: high, medium, low."
        },
        "sourceMemoryId": {
          "type": "string",
          "maxLength": 100,
          "minLength": 1,
          "description": "External memory inventory id, e.g. M021."
        },
        "entryDateDisplay": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1,
          "description": "Human-readable date label, e.g. \"ete 1973\" or \"date approximative\"."
        }
      }
    }
    arguments 101 lines
  • get_generation_status reads auth-required 15h ago

    Check on a song/track/music that is still being generated — "is my song ready?", "how is it coming along?". Takes the requestId returned by generate_track. Returns progress while generating, a play link when complete, or the failure reason. When complete, you can also call play_track with the returned trackId. When polling, wait at least 30 seconds between calls — generation takes 1–3 minutes, so checking more often than every 30 seconds just wastes calls and never returns sooner.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "requestId"
      ],
      "properties": {
        "requestId": {
          "type": "string",
          "minLength": 1,
          "description": "The requestId returned by generate_track."
        }
      }
    }
    arguments 14 lines
  • list_generations auth-required 20h ago

    Find the account's active song generation requests after reconnecting or losing a requestId. Inspect them before retrying generation. Completed songs can be found with list_tracks.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_usage auth-required 20h ago

    Read available account allowances and reset time before planning creation. This is advisory; the server still reserves usage atomically. Unavailable counters are identified explicitly; do not assume their remaining allowance.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • compose_entry changes data auth-required 3h ago

    THE DEFAULT WAY TO SAVE A REFLECTION OR JOURNAL ENTRY. Use this — NOT create_entry — for any request like "save this as a journal entry", "journal this", "add a journal entry", "save my reflection", "put this in my diary", "write this down". It opens an in-chat journal composer PRE-FILLED with a draft you write from the conversation, for the user to edit and save. It does NOT persist on its own; the user reviews and saves from the panel (Save then calls create_entry). Pass `draft` as your best draft of their entry (or "" for a blank composer). In clients without panels, show the draft and wait for explicit confirmation, then use save_entry with a stable operationId.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "draft": {
          "type": "string",
          "default": "",
          "maxLength": 5000,
          "description": "Draft entry text written from the conversation for the user to edit. Empty string opens a blank composer."
        },
        "suggestedMood": {
          "type": "string",
          "maxLength": 200,
          "description": "Optional mood/context suggestion to pre-fill."
        },
        "suggestedTags": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 50,
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Optional tag suggestions to pre-fill."
        }
      }
    }
    arguments 27 lines
  • list_tracks reads auth-required 13h ago

    Show / list / browse the user's songs — "what songs do I have?", "show me my music", "my tracks", "my library", "my playlist of songs". Returns the user's private music tracks. Each item includes its `title`, `themes` (canonical topic tags the track was generated around, e.g. ["travel", "solitude"]), and `inspiration` (a short hint about what the song is ABOUT, derived from the original generation prompt). Also use this to RESOLVE a play request to a specific track: for "play something about Berlin" or "play the song about my mom", match against ALL THREE fields — not just `title` — and pick the row whose themes / inspiration / title best fits the request, then hand its id to play_track. If several rows plausibly match, list them and ask the user which one rather than guessing. The tracks render as an interactive player panel the user can see and play from directly (the per-track fields are in structuredContent) — after calling this, reply with at most a one-line intro and do NOT re-list the tracks in text; the panel already shows them.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 9007199254740991,
          "exclusiveMinimum": 0
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "description": "Search saved songs by title, themes or inspiration."
        },
        "cursor": {
          "type": "string",
          "description": "Use nextCursor from the preceding result; do not invent it."
        },
        "offset": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0
        }
      }
    }
    arguments 25 lines
  • play_track reads auth-required 13h ago

    Play / listen to / put on ONE specific song the user already has — returns a fresh, clickable stream link for that track by its id. The user normally refers to a track by NAME, not id: when the requested title is approximate, partial, or possibly misspelled, FIRST call list_tracks (request the full library, e.g. limit 100), pick the closest matching title, then call this tool with its id. If several tracks plausibly match, list them and ask the user which one rather than guessing. Never invent a track id. (To browse or show the whole library, use list_tracks; to create a new song, use generate_track.)

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "trackId"
      ],
      "properties": {
        "trackId": {
          "type": "string",
          "minLength": 1
        }
      }
    }
    arguments 13 lines
  • get_profile reads auth-required 3h ago

    Show the user's account profile and saved settings: "what's on my profile?", "what language am I set to?", "my account settings". Returns account details, profile, general preferences, and activity counts, including saved song genre, vocals, and instruments when configured. Unset preference fields may be absent; do not infer values for missing fields. Use list_audio_preference_profiles to select a named saved sound for generation. Read-only. To learn what aiponge has noticed from reflections, including themes and patterns, use get_insights instead.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id a3b8a06ecdc9f443.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/a3b8a06ecdc9f443/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/a3b8a06ecdc9f443/badge.svg)](https://brick.blue/agent/a3b8a06ecdc9f443?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.