Skip to main content

SignNow MCP tools for LlamaIndex agents (expose SignNow MCP server tools as FunctionTool).

Project description

llama-index-tools-signnow

A plug‑and‑play ToolSpec that lets LlamaIndex agents use SignNow e‑signature workflows through the SignNow MCP server. It discovers the server’s tools, exposes them to your agent, and keeps setup simple for users who already work with LlamaIndex.


✨ What you get

  • One‑liner tool discovery for the SignNow MCP server (STDIO spawn by default).
  • Works with any LlamaIndex agent that supports function/tools.
  • Covers common e‑signature flows end‑to‑end (templates, invites, embedded signing/sending/editor, status, downloads).
  • Environment‑first configuration (no code changes required for typical deployments).

Installation

# Core LlamaIndex + MCP client + SignNow ToolSpec
pip install -U llama-index llama-index-tools-mcp llama-index-tools-signnow

Quick start

import asyncio
from llama_index.tools.signnow import SignNowMCPToolSpec
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import (
    OpenAI,
)  # or any LLM that supports tool/function calling


async def main():
    # Option A: pass credentials directly (no .env needed)
    spec = SignNowMCPToolSpec.from_env(
        env_overrides={
            # Option 1: token-based auth
            # "SIGNNOW_TOKEN": "your_signnow_token_here",
            # Option 2: credential-based auth
            "SIGNNOW_USER_EMAIL": "login@example.com",
            "SIGNNOW_PASSWORD": "password",
            "SIGNNOW_API_BASIC_TOKEN": "basic_token_base64",
        }
    )

    # Fetch tools from the MCP server
    tools = await spec.to_tool_list_async()
    print({"count": len(tools), "names": [t.metadata.name for t in tools]})

    # Wire them into a LlamaIndex agent
    agent = FunctionAgent(
        name="SignNow Agent",
        description="Query SignNow via MCP tools",
        tools=tools,
        llm=OpenAI(model="gpt-4o"),  # make sure your LLM supports tools
        system_prompt="Be helpful.",
    )

    # Ask for something useful
    resp = await agent.run("Show me the list of templates and their names.")
    print(resp)


if __name__ == "__main__":
    asyncio.run(main())

Prompt ideas

  • “Create a document from the template ‘NDA v3’ and generate an embedded signing link for alice@example.com
  • “Send an invite to bob@example.com for document XYZ with signer order Alice first, Bob second.”
  • “What’s the current invite status for document ABC?”
  • “Give me a direct download link for the completed document (merged if it’s a group).”

Available tools (provided by the SignNow MCP server)

  • list_all_templates — List templates & template groups with simplified metadata.
  • list_document_groups — Browse your document groups and statuses.
  • create_from_template — Make a document or a group from a template/group.
  • send_invite — Email invites (documents or groups), ordered recipients supported.
  • create_embedded_invite — Embedded signing session without email delivery.
  • create_embedded_sending — Embedded “sending/management” experience.
  • create_embedded_editor — Embedded editor link to place/adjust fields.
  • send_invite_from_template — One‑shot: create from template and invite.
  • create_embedded_sending_from_template — One‑shot: template → embedded sending.
  • create_embedded_editor_from_template — One‑shot: template → embedded editor.
  • create_embedded_invite_from_template — One‑shot: template → embedded signing.
  • get_invite_status — Current invite status/steps for document or group.
  • get_document_download_link — Direct download link (merged output for groups).
  • get_document — Normalized document/group structure with field values.
  • update_document_fields — Prefill text fields in individual documents.

Tip: A common flow is listall_templates → create_from_template → one‑shot or send_invite / create_embedded* → get_invite_status → get_document_download_link.


Configuration

The ToolSpec reads standard SignNow environment variables and forwards them to the server when spawning sn-mcp

Auth options

# Username / Password (recommended for desktop dev flows)
SIGNNOW_USER_EMAIL=you@example.com
SIGNNOW_PASSWORD=********
SIGNNOW_API_BASIC_TOKEN=base64(app_id:app_secret)  # SignNow Basic token

# or a direct API token
SIGNNOW_TOKEN=eyJhbGciOi...

How it works (under the hood)

SignNowMCPToolSpec wraps the generic MCP client from llama-index-tools-mcp. On from_env(...) it spawns the sn-mcp server (STDIO) with your environment and converts the advertised MCP tools into LlamaIndex FunctionTools for your agent to call.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llama_index_tools_signnow-0.1.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

llama_index_tools_signnow-0.1.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file llama_index_tools_signnow-0.1.0.tar.gz.

File metadata

File hashes

Hashes for llama_index_tools_signnow-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a362151858cfdd266535800416daa0769bc5b662346624ffadce0644a5826b90
MD5 4a5693108023de122d1b1cba570d58f1
BLAKE2b-256 6cbea0cc07a0fdfc991bce15c08f52b29165e9e73343bb9d749b51105401a64b

See more details on using hashes here.

File details

Details for the file llama_index_tools_signnow-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for llama_index_tools_signnow-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 716ba65bd6bafdec790ad9d37539acd5ea5c80ce1824c084a8efcb99ac263faa
MD5 ef471a3db93da9282cb89a449eb574a7
BLAKE2b-256 7e5a6afc0bf1d38f3096684ae0e0b3545279d2111cf59603353c0394324a9787

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page