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

textline-mcp

https://textline.usefulapi.io

Registry code: 931121615f4985f2

api record

Tools for Textline, hosted by usefulapi.io. Read-only tools never change data; ask the user before a tool that creates, changes or deletes Textline data. Free plan: 100 tool calls per month. Run textline_usage_status to see the calls used this month. Pro (unlimited calls, $9/month or $90/year): when the user wants more calls or reaches the limit, run textline_upgrade; it returns a Stripe Checkout link for the user to open. textline_cancel_subscription cancels Pro at the end of the paid period.

endpoint
https://textline.usefulapi.io/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
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 textline-mcp live?
Yes — it answered the hub's last check (checked 2h ago). It answered 100% of checks over the last 30 days.
Is textline-mcp free to use?
Not measured yet.
What tools does textline-mcp have?
23 tools: textline_list_customers, textline_list_saved_searches, textline_list_departments, textline_get_agent, textline_list_agents, textline_list_surveys, textline_send_message, textline_list_conversations, ….
Is textline-mcp 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
100%

90 days 100%· all time 100%

latency
362ms

last good check

priced tools
0

of 23 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ 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 never probed 0 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.

  • textline_list_customers unknown never probed

    List or search contacts (customers) in the Textline address book: name, phone, email, tags, notes, custom fields, consent and reachability. GET /api/customers.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 100000,
          "minimum": 0,
          "description": "Page number, 0-based (default 0)."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "description": "Keyword to search on (name, phone, email, tag)."
        },
        "page_size": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default 30, max 50)."
        }
      }
    }
    arguments 23 lines
  • textline_list_saved_searches unknown never probed

    List the address book's saved searches (contact segments) with name, description and UUID. GET /api/address_book/saved_searches.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • textline_list_departments unknown never probed

    List the departments (groups / inbox phone lines) the token's agent can see: name, UUID, phone number, type (sms, facebook, smart_sms) and member agent UUIDs. GET /api/groups.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • textline_get_agent unknown 2h ago

    Retrieve one agent (user) by UUID or email: name, permission level, availability (on_call) and departments. GET /api/users.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "email": {
          "type": "string",
          "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
          "maxLength": 254,
          "description": "Agent email."
        },
        "user_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Agent UUID."
        }
      }
    }
    arguments 17 lines
  • textline_list_agents unknown 2h ago

    List the agents (users) in the organization: name, email, UUID, permission level, availability and department UUIDs. GET /api/organization.json?include_users=1.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • textline_list_surveys unknown never probed

    List surveys (NPS, CSAT, custom) with their type and UUID. GET /api/surveys.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • textline_send_message unknown never probed

    SENDS A REAL SMS/MMS to ONE contact from your Textline number — the customer receives it immediately and it cannot be unsent; it consumes message credits. Address it by conversation_uuid or by phone_number (+ optional department). Confirm the recipient and text with the user first. One recipient per call; no bulk sends. POST /api/conversation/{uuid}.json or POST /api/conversations.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "body"
      ],
      "properties": {
        "body": {
          "type": "string",
          "maxLength": 1600,
          "minLength": 1,
          "description": "The message text the customer will receive."
        },
        "resolve": {
          "type": "boolean",
          "description": "Resolve the conversation after sending."
        },
        "group_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "With phone_number only: the department to use. Default: the first department."
        },
        "phone_number": {
          "type": "string",
          "pattern": "^\\+?[0-9 ().-]+$",
          "maxLength": 25,
          "description": "The contact's phone number (pass this OR conversation_uuid); opens the conversation if there is none."
        },
        "attachment_urls": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri",
            "maxLength": 2000
          },
          "maxItems": 10,
          "description": "Public https URLs of files to attach (makes it an MMS)."
        },
        "conversation_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "The conversation UUID (pass this OR phone_number)."
        }
      }
    }
    arguments 45 lines
  • textline_list_conversations unknown never probed

    List conversations (one per contact) in a department of the Textline shared inbox, with the contact and resolved status. Optional keyword search. GET /api/conversations.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 100000,
          "minimum": 0,
          "description": "Page number, 0-based (default 0)."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "description": "Keyword to search conversations on (name, phone, message text)."
        },
        "page_size": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default 30, max 50)."
        },
        "group_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Department (group) UUID from textline_list_departments. Default: the first department."
        }
      }
    }
    arguments 28 lines
  • textline_get_conversation unknown never probed

    Retrieve one conversation and its posts (messages in and out, internal whispers, resolve/transfer events), newest page first. Page with page/page_size or with before_uuid/after_uuid (a post uuid). GET /api/conversation/{uuid}.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "conversation_uuid"
      ],
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 100000,
          "minimum": 0,
          "description": "Page number, 0-based (default 0)."
        },
        "page_size": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default 30, max 50)."
        },
        "after_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Only posts after this post uuid (exclusive)."
        },
        "before_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Only posts before this post uuid (exclusive)."
        },
        "conversation_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Conversation UUID."
        }
      }
    }
    arguments 36 lines
  • textline_get_conversation_by_phone unknown never probed

    Retrieve the conversation with a phone number (in a department) and its posts (messages). GET /api/conversations.json?phone_number=….

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "phone_number"
      ],
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 100000,
          "minimum": 0,
          "description": "Page number, 0-based (default 0)."
        },
        "page_size": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1,
          "description": "Results per page (default 30, max 50)."
        },
        "after_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Only posts after this post uuid (exclusive)."
        },
        "group_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Department (group) UUID from textline_list_departments. Default: the first department."
        },
        "before_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Only posts before this post uuid (exclusive)."
        },
        "phone_number": {
          "type": "string",
          "pattern": "^\\+?[0-9 ().-]+$",
          "maxLength": 25,
          "description": "The contact's phone number, e.g. +14155550123 or (415) 555-0123."
        }
      }
    }
    arguments 42 lines
  • textline_get_customer unknown never probed

    Retrieve one contact (customer) from the address book by UUID. GET /api/customer/{uuid}.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "customer_uuid"
      ],
      "properties": {
        "customer_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Contact (customer) UUID."
        }
      }
    }
    arguments 14 lines
  • textline_get_customer_by_phone unknown never probed

    Retrieve one contact (customer) from the address book by phone number. GET /api/customers.json?phone_number=….

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "phone_number"
      ],
      "properties": {
        "phone_number": {
          "type": "string",
          "pattern": "^\\+?[0-9 ().-]+$",
          "maxLength": 25,
          "description": "The contact's phone number."
        }
      }
    }
    arguments 15 lines
  • textline_list_custom_fields unknown never probed

    List the address book's custom fields (name, data type, UUID). Use the UUIDs with textline_update_customer. GET /api/address_book/custom_fields.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • textline_list_dispositions unknown never probed

    List the dispositions (resolution reasons) set up in the account, optionally for one department. Use a UUID with textline_resolve_conversation. GET /api/dispositions.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "group_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Only dispositions of this department."
        }
      }
    }
    arguments 11 lines
  • textline_list_survey_responses unknown never probed

    List the responses to one survey (ratings, follow-up text, contact, tags). Default: the last 30 days. GET /api/survey/{uuid}/responses.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "survey_uuid"
      ],
      "properties": {
        "end_date": {
          "type": "string",
          "description": "Last day, YYYY-MM-DD."
        },
        "start_date": {
          "type": "string",
          "description": "First day, YYYY-MM-DD."
        },
        "survey_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Survey UUID from textline_list_surveys."
        }
      }
    }
    arguments 22 lines
  • textline_report_conversations unknown never probed

    Reporting API: list a department's conversations filtered by created/updated time, resolved, archived or blocked, with total_records. To get the next page pass the returned next.search_uuid, next.page and next.page_size exactly (the same filters are kept). Then use textline_report_posts per conversation. GET /api/reporting/conversations.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 100000,
          "minimum": 0,
          "description": "Page number, 0-based (default 0)."
        },
        "blocked": {
          "type": "boolean",
          "description": "Only blocked (true) or unblocked (false) contacts. Default: both."
        },
        "sort_by": {
          "enum": [
            "created_at",
            "updated_at"
          ],
          "type": "string",
          "description": "Sort field (default created_at)."
        },
        "archived": {
          "type": "boolean",
          "description": "Only archived (true) or unarchived (false) contacts. Default: both."
        },
        "resolved": {
          "type": "boolean",
          "description": "Only resolved (true) or unresolved (false) conversations."
        },
        "page_size": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Results per page (default 30, max 30)."
        },
        "group_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Department UUID (required unless search_uuid is given)."
        },
        "sort_order": {
          "enum": [
            "asc",
            "desc"
          ],
          "type": "string",
          "description": "Sort order (default desc)."
        },
        "search_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Continue an earlier result set: next.search_uuid from a previous call (with next.page and next.page_size)."
        },
        "created_after": {
          "type": "string",
          "description": "Created after this ISO date-time (with timezone)."
        },
        "updated_after": {
          "type": "string",
          "description": "Updated after this ISO date-time (with timezone)."
        },
        "created_before": {
          "type": "string",
          "description": "Created before this ISO date-time (with timezone)."
        },
        "updated_before": {
          "type": "string",
          "description": "Updated before this ISO date-time (with timezone)."
        }
      }
    }
    arguments 72 lines
  • textline_report_posts unknown never probed

    Reporting API: list all posts (messages, whispers) of one conversation with creator, thread, first-response flags, filtered by created time, with total_records. To get the next page pass the returned next.search_uuid, next.page and next.page_size exactly. GET /api/reporting/conversation/{uuid}/posts.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "conversation_uuid"
      ],
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 100000,
          "minimum": 0,
          "description": "Page number, 0-based (default 0)."
        },
        "page_size": {
          "type": "integer",
          "maximum": 30,
          "minimum": 1,
          "description": "Results per page (default 30, max 30)."
        },
        "sort_order": {
          "enum": [
            "asc",
            "desc"
          ],
          "type": "string",
          "description": "Sort order (default desc)."
        },
        "search_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Continue an earlier result set: next.search_uuid from a previous call (with next.page and next.page_size)."
        },
        "created_after": {
          "type": "string",
          "description": "Created after this ISO date-time (with timezone)."
        },
        "created_before": {
          "type": "string",
          "description": "Created before this ISO date-time (with timezone)."
        },
        "conversation_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Conversation UUID."
        }
      }
    }
    arguments 47 lines
  • textline_add_whisper unknown never probed

    WRITE: add an internal whisper (a note only your agents see, never sent to the customer) to a conversation, by conversation_uuid or phone_number. POST /api/conversation/{uuid}.json or POST /api/conversations.json with a whisper.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "body"
      ],
      "properties": {
        "body": {
          "type": "string",
          "maxLength": 5000,
          "minLength": 1,
          "description": "The note text (visible to agents only)."
        },
        "resolve": {
          "type": "boolean",
          "description": "Resolve the conversation after adding the note."
        },
        "group_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "With phone_number only: the department to use. Default: the first department."
        },
        "phone_number": {
          "type": "string",
          "pattern": "^\\+?[0-9 ().-]+$",
          "maxLength": 25,
          "description": "The contact's phone number (pass this OR conversation_uuid); opens the conversation if there is none."
        },
        "conversation_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "The conversation UUID (pass this OR phone_number)."
        }
      }
    }
    arguments 35 lines
  • textline_resolve_conversation unknown never probed

    WRITE: mark a conversation resolved (closed), optionally with a disposition from textline_list_dispositions. Nothing is sent to the customer. POST /api/conversation/{uuid}/resolve.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "conversation_uuid"
      ],
      "properties": {
        "disposition_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Disposition (resolution reason) UUID."
        },
        "conversation_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Conversation UUID."
        }
      }
    }
    arguments 19 lines
  • textline_transfer_conversation unknown never probed

    WRITE: assign a conversation to another agent of the same department, by agent UUID or email (one of them). Nothing is sent to the customer. POST /api/conversation/{uuid}/transfer.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "conversation_uuid"
      ],
      "properties": {
        "assignee": {
          "type": "string",
          "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
          "maxLength": 254,
          "description": "The agent's email."
        },
        "user_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "The agent's UUID (from textline_list_agents)."
        },
        "conversation_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Conversation UUID."
        }
      }
    }
    arguments 25 lines
  • textline_create_customer unknown never probed

    WRITE: add a contact (customer) to the Textline address book. Sends nothing to the contact. POST /api/customers.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "phone_number"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Full name."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[^,\\s]+$",
            "maxLength": 100,
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Tags, e.g. ['VIP', 'new_lead'] (underscores instead of spaces)."
        },
        "email": {
          "type": "string",
          "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
          "maxLength": 254,
          "description": "Email address."
        },
        "notes": {
          "type": "string",
          "maxLength": 5000,
          "description": "Notes on the contact (replaces the existing notes)."
        },
        "phone_number": {
          "type": "string",
          "pattern": "^\\+?[0-9 ().-]+$",
          "maxLength": 25,
          "description": "The contact's phone number."
        }
      }
    }
    arguments 43 lines
  • textline_update_customer unknown never probed

    WRITE: update a contact's name, email, notes, tags (add, remove or replace) or custom fields (by custom-field UUID from textline_list_custom_fields). Overwrites the fields you pass; sends nothing to the contact. PUT /api/customer/{uuid}.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "customer_uuid"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "Full name."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string",
            "pattern": "^[^,\\s]+$",
            "maxLength": 100,
            "minLength": 1
          },
          "maxItems": 50,
          "description": "Tags, e.g. ['VIP', 'new_lead'] (underscores instead of spaces)."
        },
        "email": {
          "type": "string",
          "pattern": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$",
          "maxLength": 254,
          "description": "Email address."
        },
        "notes": {
          "type": "string",
          "maxLength": 5000,
          "description": "Notes on the contact (replaces the existing notes)."
        },
        "custom_fields": {
          "type": "object",
          "description": "Custom field values keyed by custom-field UUID, e.g. {\"c43a1766-47e1-4c9c-a2cc-36bf424fcbc0\": \"Gold\"}.",
          "propertyNames": {
            "type": "string",
            "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$"
          },
          "additionalProperties": {
            "type": "string",
            "maxLength": 2000
          }
        },
        "customer_uuid": {
          "type": "string",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Contact (customer) UUID."
        },
        "tags_handling": {
          "enum": [
            "add",
            "remove",
            "replace"
          ],
          "type": "string",
          "description": "How to apply tags: add, remove or replace (Textline's default if omitted)."
        }
      }
    }
    arguments 63 lines
  • textline_get_organization unknown 2h ago

    Retrieve the organization (account) name, optionally with its departments and agents. GET /api/organization.json.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "include_users": {
          "type": "boolean",
          "description": "Include the agents (users)."
        },
        "include_groups": {
          "type": "boolean",
          "description": "Include the departments."
        }
      }
    }
    arguments 14 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 931121615f4985f2.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/931121615f4985f2/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/931121615f4985f2/badge.svg)](https://brick.blue/agent/931121615f4985f2?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.

_ also on usefulapi.io 66 entries

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.

58 more sit on this domain. All of them.